验收测试驱动开发
定义
编辑
验收测试驱动开发,简称ATDD。ATDD是敏捷开发极限编程TDD思想下的优秀实践。
传统的验收测试一般是软件开发生命周期中最后一个测试环节(具体请参考“用户验收测试”实践)。而敏捷测试提倡测试左移,预防缺陷,所以把验收测试的思想提前到需求分析阶段,即在设计、写代码之前,明确系统功能特性的验收标准,并有对应的测试用例进行验收,这就是验收测试驱动开发ATDD。
面向业务层面的ATDD是必需的, 因为模糊的需求往往意味着返工和浪费,没有可测试性也意味着无法开展测试。因此ATDD是帮助团队按验收标准来实现用户故事,是以终为始,理所当然的。
ATDD实施起来也比较容易,大部分敏捷开发团队都会定义用户故事的验收标准AC。把AC实例化并进行测试验收就可以实现ATDD。
实践出处
编辑
极限编程TDD。TDD可以分为两个层次,UTDD和ATDD:
-
ATDD发生在业务层次,在设计、写代码前就明确需求(用户故事)的验收标准。
-
UTDD发生在代码层次,在编码之前些单元测试。
为什么
编辑
需求越明确,用户、产品经理、开发与测试等之间的理解就越一致,越不产生偏差和误解,有利于开发和测试的工作。基于ATDD,开发人员写产品代码,测试人员写测试代码,产品经理的工作也会变得轻松,不需要太多的解释。
-
从需求角度看,BDD和需求实例化比较彻底地明确需求,统一用户、产品经理、开发与测试等认识,让大家处在一个层面上,使研发工作更高效。
-
从测试角度看,需求即测试,产品的需求就是测试的需求,需求可以被执行,即一步到位,将需求变为自动化测试脚本,开发出来的功能特性随时可以被自动验证。
何时使用
编辑
在需求分析阶段,由业务、开发、测试一起协同,澄清需求的验收标准和细节。根据不同产品类型的需要,选择BDD(行为驱动开发)、RBE(需求实例化)、或其他方法进行ATDD落地。
如何使用
编辑
-
在需求分析阶段,团队协同工作(业务、开发、测试等),一起为每个用户故事添加相应的、一致认可的验收标准AC,以澄清需求和验收条件,并确保用户故事具有可测试性。
-
在AC基础上实施ATDD:
-
ATDD一般以BDD进行落地。BDD将验收标准更加明确化,可以看作是ATDD的实例化,即列出用户故事所可能遇到的应用场景,而且将这种应用场景的表达方式规定为GWT格式(Given,When,Then),以确定每种场景预期的结果,即可作为测试用例。还可以结合需求实例化RBE,进一步明确需求的具体表现。(BDD和RBE的详细说明请参考相关实践)
-
如果产品类型不需要或不适合BDD,也可以单独实施ATDD。团队成员根据验收标准AC编写测试用例,在每一次迭代结束前,完成用户故事的验收测试。
-
-
手工测试和自动化测试均可。更推荐自动化测试(BDD是自动化测试)。这些测试用例也可以纳入到测试库中,例如回归测试。
输出物
编辑
AC验收标准,ATDD测试用例、测试结果
常见问题解答
编辑
-
谁来编写和执行ATDD?
验收标准AC是由团队共同澄清的(业务、开发、测试)。 ATDD实践是一项开发和测试结合的实践。开发根据AC写代码,测试根据AC写测试用例。具体的执行可以由团队决定,能用自动测试工具来执行是最好的。BDD形式的测试用例对业务人员也很友好,能方便地执行测试。 -
ATDD会增加团队的负担?
不,恰恰相反,通过ATDD来明确需求,减少返工和浪费,恰恰是能减少团队的负担。
而且验收测试是产品开发过程中不可缺少的,ATDD只是把它提前了,并不是新增加的工作。
并且,验收测试的用例还可以在回归测试等其他测试环节中重复使用,提高了效率。
参考资料
编辑
-
《敏捷测试:以持续测试促进持续交付》 朱少民、李洁著
-
《五分钟让你彻底了解TDD、ATDD、BDD&RBE》朱少民著
关键词
编辑
验收测试驱动开发,ATDD, AC,验收标准,敏捷测试
我们非常重视知识产权,我们在非常努力地寻找最初的出处来源并注明出处。但因为互联网信息浩瀚,难免会有疏漏。如果您觉得有侵犯您的权益,请联系我们。