• 0
  • 0
分享
  • 验收标准不是测试用例——软件测试圈
  • 北极 2022-09-29 15:07:43 字数 2708 阅读 1810 收藏 0

敏捷质量实践中提倡测试左移,测试人员要尽早介入需求阶段,越早越好。测试人员需要关注需求的有效性,以及在需求产生和传递的过程中,交付价值是否被准确的描述、理解和对齐。在这个过程中很容易遇到一个常见问题:验收标准是验收测试要测的吗?验收标准到底是不是测试用例?这两者之间有什么区别和联系?本文主要想解决的就是这个具体的困惑。

验收标准是确保需求实现的最小集合

验收标准是什么

回顾一下需求由厚厚的《软件需求规格说明书》演化为一张用户故事卡片的过程,在这个过程中我们舍弃了大量的细节描述,突出了需求需要交付的客户/用户价值。在需求交付的过程中,我们会一直关注价值,在保证价值的前提下,实现方式和技术细节都是可以讨论的。

那么问题来了,既然很多内容都是可以讨论的,我们怎样确定一个用户故事被实现完成了呢?验收标准就是用户故事实现完成的试金石。可以这样说,一个用户故事能否被标记为开发完成并进入测试阶段,很大程度上取决于验收标准是否全部通过。

通常来说,验收标准就是一系列可以接受的条件或者业务规则,且与功能或特性相互匹配和满足,同时也能被产品负责人和相关干系人接受。

敏捷实践中,推荐使用行为驱动开发(Behavior-driven development,缩写BDD)的方式来写验收标准,即使用GWT格式。

  • Given (在什么样的情景或条件下)

  • When (采取了什么行动)

  • Then (得到什么结果)

举个例子:

  • Given (假设) 我在搜索界面

  • When (当) 我填写入住城市,选择住宿时间

  • Then (于是) 我可以浏览该城市和该时间段内空闲酒店的名字和价格

在编写验收标准时,应重点关注可以验证需求实现的用户场景上,更多的是正向验证用户需求实现完成,切忌将验收标准写成测试用例或者测试点。

验收标准在什么时候用

故事启动(Story Kickoff)

在故事启动时,需求涉及的全部角色:需求分析师、开发、测试、体验设计师,大家需要坐在一起进行需求澄清,确保所有人对需求的理解一致,并约定好故事验收时的验收标准都有哪些。在这个过程中,任何人都可以针对验收标准进行提问,或者补充更多的验收场景。

故事验收(Desk Check)

当开发人员完成代码实现后,做一些基本的自测工作,并准备好验收场景和数据,就可以约大家进行故事验收了。验收时,也需要需求设计的全部角色,大家坐在一起,听开发讲解实现细节,并逐一演示验收场景。如果验收标准全部验证通过,大家也没有其他问题,这个用户故事就可以被标记为开发完成,准备进入测试阶段了。

用户验收测试(User Acceptance Test)

除了研发团队的测试外,迭代的交付还需要一定的用户验收测试。用户验收测试的设计和执行者有时是PO、或是提出需求的客户及相关干系人,有时是小范围内测或公测的真实用户。在用户验收测试时,执行者也会在一定程度上参考验收标准,检验验收标准是否完备,是否都能满足用户预期的验证通过。

验收标准不是验收测试

从上文的讨论中,可以得出结论:验收标准是定义用户故事完成的标准。而验收测试分为两部分,一部分发生在用户故事开发完成后,是研发团队内部的验收,另一部分是在测试完成后上线前,由客户或真实用户进行验收。由此可见,验收标准并不等于验收测试,验收标准是验收的最小集,而验收测试的范围要更广。

测试用例验证了软件功能的有效性

测试用例是什么

测试用例是指为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。简单来说,测试用例就是用文字来描述以怎样的步骤测试一个测试点,以及期望的测试结果是什么。

测试用例通常会包括:描述、优先级、前提条件、执行步骤、期望结果、实际结果和备注等信息。根据项目各自的特点,测试用例包含的信息不尽相同。

1.png

测试用例在什么时候使用

用例设计和评审

在测试设计阶段,测试人员根据需求,采用多种设计思路来编写测试用例,并提交至测试组或项目组进行用例评审。此时,测试用例承载了业务需求的测试点,以及测试人员基于专业经验识别出的非业务需求类的验证点。

测试执行

在测试执行阶段,测试人员(有时也是用例编写者)按照用例的详细描述执行测试用例,并根据实际执行结果与预期结果是否一致,来判定该测试用例是否通过测试。不通过的用例需要分析原因,报缺陷或以其他方式进行跟进。

回归测试

开发对用例相关的功能进行改进,或者修复了相关缺陷,就需要对指定用例进行回归,确保功能没有被改坏,或者缺陷确实被修复了。另外,有时在重大上线前,也需要按优先级选取一定量的测试用例来进行回归测试,以确定主线业务流程功能正常。

沟通测试点

测试用例还有个很重要的作用,记录具体的实现细节以及框定需求的测试范围。多个迭代过去,大家在需要翻看历史需求时,可能故事卡不足以还原全部的实现细节,测试用例集在这个时候就能够完整的告诉大家:软件是怎么实现的,当执行某些操作时,程序有什么表现,以及当时这个需求的测试范围是什么。尤其在团队成员上下文不足时,良好设计并编写的用例集可以完美补齐这些知识。

验收标准不是测试用例

以上我们讨论了验收标准和测试用例分别是什么,以及在什么阶段使用。容易得出,验收标准与测试用例是完全不同的两件事,两者的相同点在于它们都是可判定的用户使用场景,可以根据预期来判断是否通过,而两者的区别体现在下表中的各个维度上。

2.png

本文我们还讨论了验收标准不是验收测试。仅从覆盖范围来看,验收标准、验收测试、测试用例的关系可以参考下图:

  • 测试用例:覆盖范围最大,应该是确保软件功能正常、满足用户预期的测试全集

  • 验收测试:覆盖范围比测试用例小,只覆盖验收需要的测试用例

  • 验收标准:覆盖范围比验收测试小,只覆盖验证需求实现完成的测试用例

3.png

当然,验收标准和测试用例除了使用时机外,两者的区别也体现在不同的责任人和使用范围。验收标准的责任人是需求分析师,在团队协作过程中使用,是多角色合作的基础;而测试用例的责任人是测试人员,属于测试专业上下文的内容。但在不同的组织结构下,对角色的定义会存在一定模糊的界限,因此,“全团队为需求的验收和质量负责”是比较推荐的理念。

相信经过本文的澄清,我们已经搞懂了验收标准和测试用例到底是怎么回事。随着行业的发展,为了测试左移,将有越来越多的测试人员需要懂需求;相应的,为了高效产出高质量的需求,也有越来越多的需求分析人员需要懂测试。需求分析人员与测试人员一起打造高质量的需求,将为交付高质量高价值的软件奠定坚实的基础。


作者:于晓南

文章链家:https://insights.thoughtworks.cn/acceptance-criteria-testcases/

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 因为之前测试的的软件产品是一个系统的信息化平台,包含很多工具和服务。整体想要实现自动化在时间和成本上又不太允许,但是那时就想针对其中一个工具做GUI自动化,偶然就认识了AutoIt,虽然不是个流行的软件工具,但是特别符合我当时的需要。AutoIt 是一种类似于BASIC的脚本语言,旨在实现Windows GUI和通用脚本的自动化。我们当时的平台软件几乎都在Windows环境下运行,所以特别适合。它能模拟键盘按键、鼠标移动和窗口/控件等操作,而且 AutoIt小巧又免费,真的是一款不错的工具,就算是想自己学习了解的也可以尝试,也许会有惊喜的发现。 如何使用首先下载安装,下载地址:htt...
            0 0 10021
            分享
          • 功能测试就是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能。常用的测试方法如下:页面链接检查:每一个链接是否都有对应的页面,并且页面之间切换正确。相关性检查:删除/增加一项会不会对其他项产生影响,如果产生影响,这些影响是否都正确。检查按钮的功能是否正确:如update,cancel,delete,save等功能是否正确。字符串长度检查:输入超出需求所说明的字符串长度的内容,看系统是否检查字符串长度,会不会出错.字符类型检查:在应该输入指定类型的内容的地方输入其他类型的内容(如在应该输入整型的地方输入其他字符类型),看系统是否检查字符类型,会否报错.标点符号检...
            0 0 862
            分享
          • 本文主要的内容是使用Jmeter对数据库进行数据的操作,包括单条语句的增删改查,多条语句的增删改查,本文主要介绍操作流程,关于流程的运作原理,对原理感兴趣的同学可自行查阅资料。首先需要准备一个数据库驱动Jar包【mysql-connector-java-bin.jar】可以直接百度下载,版本不建议特别低,jar包需要Jmeter引用才能使用,jar包引用如下:将jar放入Jmeter安装/解压文件路径:eg:D:\apache-jmeter-5.0\apache-jmeter-5.0\lib下,需要重启Jmeter才能生效驱动包的作用:没有数据库驱动,就不能连接数据库,Jmeter在没有驱动的...
            14 14 1845
            分享
          •   早在信息行业发展的初期,就有互联网公司意识到了保护软件产品安全的重要性,可时至今日,我们总能够从报道中瞥见某某公司遭黑客入侵导致信息泄露的新闻,其中甚至不乏Facebook这些以用户通讯、身份信息为支柱产业的大厂。  信息安全事件屡见不鲜,然而公司的软件安全测试效果总是不理想,以下卓码测评小编推荐的这些安全测试工具让你的测试工作效率更高。  一、软件安全测试的含义是什么?  软件安全测试是指测试人员在软件产品开发基本完成到发布这一阶段通过各种测试工具对产品进行检验以验证产品是否符合安全需求定义和产品质量标准的过程。  二、有哪些常见的软件安全问题?  (1)缓冲区溢出;  (2)SQL注入...
            0 0 191
            分享
          • 在过去的这个周末。接到了一个线上问题,描述如下:手动添加一个员工,然后进入线索管理编辑某个线索归属人,在下拉展示的员工列表当中,看不到我新添加的员工。立马自己复现了一下,此时看一下接口返回情况,发现拉起员工列表的页面这个操作,并没有调用接口实时请求数据,也就是说这个地方使用的是缓存。开发给的解释是:出于性能考虑,系统登陆后就缓存了员工这些基本配套信息,不是实时请求。进入设置——应用管理——找到该应用——清除数据,重新登录就看到新员工了。客服欣然接受了这个处理方法。按照这个方法也解决了问题。实际上,这个地方就不能从代码层面上优化了吗?方案肯定是有的:思路一:查询员工列表的地方,接口改成实时调用,...
            1 1 5486
            分享
      • 51testing软件测试圈微信