客户验收测试应该有多详细?

Posted

技术标签:

【中文标题】客户验收测试应该有多详细?【英文标题】:How detailed should a customer acceptance test be? 【发布时间】:2009-05-07 00:26:29 【问题描述】:

这是一个测试描述,测试“创建新小部件”用例。

确认您可以在系统中输入新的小部件。

这是另一个测试描述,测试“创建新小部件”用例。

启动应用程序。 创建一个名为“A-008”的新小部件,描述为“Test Widget for Acceptance Test 3-45”。 确认该小部件现在在最左侧的小部件树视图中可见。 在树视图中选择另一个小部件,然后再次选择小部件“A-008”。确认小部件显示中的值等于您输入的值。 删除小部件“A-008”并关闭应用程序

这是另一个测试描述,测试“创建新小部件”用例。

启动应用程序。 启动查看相同数据的应用程序的第二个实例。 在应用程序的第一个实例中,右键单击“Widgets”节点。在随后的上下文菜单中,激活“Create New Widget”菜单项。 应该激活“新窗口小部件”窗口。将每个字段留空,然后按 OK 按钮。应该会出现一个消息框,说“请输入小部件名称”。在此消息框上按 OK。 在“名称”字段中输入“A-008”。 将描述字段设置为 “美洲驼 (Lama glama) 是一种南美骆驼科动物,被印加人和安第斯山脉的其他原住民广泛用作驮畜。在南美洲,美洲驼仍被用作野兽负担,以及用于生产纤维和肉类。成年全尺寸美洲驼的身高在 5.5 英尺(1.6 米)到 6 英尺(1.8 米)之间,头顶高。它们体重大约在 280 磅(127 公斤)到 450 磅(204 公斤)之间。出生时,小羊驼(称为 cria)的体重在 20 磅(9 公斤)到 30 磅(14 公斤)之间。 按确定按钮。应该会出现一个消息框,上面写着“描述不得超过 512 个字符” 将描述设置为“');从小部件中删除,其中 1=1;”在“描述”字段中。按确定按钮。 在最左侧的树形视图中,应该会出现一个名为“A-008”的新小部件。 在应用程序的第二个实例中激活一个窗口,并确认小部件“A-008”也已自动出现在该树视图中。 在应用程序的第一个实例中,右键单击“Widgets”节点。在随后的上下文菜单中,激活“Create New Widget”菜单项。应激活“新窗口小部件”窗口。 将名称设置为“A-008”,然后按确定。必须出现一个消息框,上面写着“具有此名称的小部件已存在。请选择另一个小部件名称”。 按此消息框上的确定按钮,然后按取消按钮退出“创建小部件”对话框。 在第二个实例中显示小部件“A-008”的小部件页面。 首先,按“撤消”菜单项 确认第二个实例现在正在显示起始页。 ........等......

每个示例测试您可以创建一个新的小部件。在第三次测试中,我作为一个有经验的程序员测试功能,思考“好的,所有可能出现错误的地方都在哪里”,并检查每一个。第三个是否适合客户验收测试?

“太全面”有多全面?

【问题讨论】:

【参考方案1】:

用户验收测试用例应该详细而简单,但不如您的第三个示例那么详细。 验收测试是为了确保客户得到他们同意的内容。如果你简单地说,“点击这个然后点击那个,等等,等等……”这更像是一个功能测试。您不是在引导用户验证功能是否满足验收测试中列出的测试用例。您只是要求他们点击您可以简单地自动化的测试。

用户验收测试应该更接近于“创建小部件、验证它是否出现、删除小部件等”。这也将鼓励用户寻找个别功能并(作为副作用)清除您可能忽略的任何可用性问题。

【讨论】:

按下“勾选”按钮,因为它清楚地说明了要点,但我承认其他帖子也是如此。【参考方案2】:

我认为您的验收测试应该主要是良好的路径测试。有时,“好”路径将确保正确处理错误。您应该进行其他测试来验证您的安全性并练习极端情况,但验收测试更多的是确保已构建正确的应用程序,而不是确保正确处理每个可能的条件。如果你有好的单元测试并使用最佳实践,那么我认为好的路径测试是完全合适的。

例如,如果我使用了强制参数化查询或手动生成查询的技术(我没有),我不一定会测试我没有 SQL 注入问题测试验证注入失败。解决单元测试中的极端情况使得在验收测试中关注它们变得不那么重要。如果您需要向客户提供一些示例,说明您的后端实现解决了他们的顾虑,那么一定要这样做,但我不会测试我知道我已经通过其他测试充分解决的问题。

【讨论】:

【参考方案3】:

这对我来说更像是一个功能测试计划(即内部测试

验收测试通常是指您向客户展示的内容。我想你可以给客户做一个这样的测试——不过祝你好运

对于用户验收测试,我更喜欢一种非常简单的格式(当然,这可能不适用于航天飞机软件或银行业务)。它适用于中小型 Web 项目

关键是;制作一张表格,列出系统中的每一页,而不是制作一列供客户初始化,另一列供您自己初始化。你和客户坐了几个小时,经历了一切。如果他们对某个页面感到满意,他们就会在该页面上签字

有关模板的完整详细信息,请参阅:User Acceptance Testing

【讨论】:

有趣的是,细分是按页面而不是用户故事。每个页面上的控件可能都可以正常工作,但是从一个页面到另一个页面的信息流可能会中断,我不确定这个测试模板是否涵盖了这一点。也许测试应该以两种方式分解功能 - 每个页面(或富客户端应用程序中的窗口和对话框),以及每个用例。【参考方案4】:

在一个完美的世界中,测试描述应该是:

确认所有自动化测试成功运行并完成

用例中的每条路径都会有一个自动化测试。

任何形式的脚本化手动测试都容易出错并遗漏错误,更不用说劳动密集型了。

【讨论】:

不,这是一个客户验收测试。由客户执行的测试。如果我是客户,即使开发公司向我保证他们有完全自动化的测试,我仍然需要在系统投入生产和相关供应商获得报酬之前对其进行测试。 为什么客户不能签署一组自动化测试? 不要误会我的意思,作为一名开发人员,我认为自动化测试很棒,以至于我会拒绝在没有它们的项目上工作。但是普通客户没有技术技能,甚至不会假装知道如何评估自动化测试。他/她会查看任何自动化测试描述,然后说“这只是一堆 gobbledygook,把它拿开,让我看看这个应用程序是否有效。” @MitchWheat 可能与人们在快餐店检查订单的原因相同。这相当于只看收据而不检查实际物品。而且软件开发的缺陷率往往高于快餐,即使是自动化测试也是如此。【参考方案5】:

您的规格说明了什么?如果它涵盖了您的第三个测试用例中列出的所有内容,那么作为您的客户,为什么我不想看到您的产品符合整个规范?

如果您没有明确的要求集 (facepalm),则将您的测试分解为模块:资格(与客户)、集成(开发人员测试模块一起工作)和开发(开发人员测试各个模块)。

尽可能自动化 DT&E(例如,使用单元测试来测试 SQL 注入、字符串长度溢出等)。这应该很容易做到,因为您的后端应该与与之通信的 GUI 分开(对吗?)。您在第三个测试用例中概述的大部分 GUI 内容都可以作为集成测试的一部分涵盖(因为您实际上是在测试后端和 GUI 之间的集成)。

如果客户可以审查您的单元测试、集成测试程序和结果,那么资格测试会非常简单和轻松。

【讨论】:

我对“facepalm”可能指的是什么很感兴趣。 (我从未听说过这个词)。 en.wikipedia.org/wiki/Facepalm#Facepalm 我确实用星号将它包裹起来表示一个动作,但 SO 决定用斜体代替。我发表评论的意图是,在没有达成一致要求的情况下进行客户验收测试是通往疼痛中心的单程票。 我以为它是一个软件产品 (* facepalm *)【参考方案6】:

他们应该测试正常用例(而不是特殊用例)。但是如果他们测试异常的,那就太酷了!

验收测试不能太详细。他们测试的越多,他们就越喜欢最终产品。

【讨论】:

以上是关于客户验收测试应该有多详细?的主要内容,如果未能解决你的问题,请参考以下文章

聊天客户端的验收测试

符合规范的简单验收测试

在干净的架构中,如何进行验收测试?

Windows 服务的验收测试

验收测试和系统测试的区别?

验收测试