下载全书

验收测试驱动开发

0
0
3070

定义
编辑

验收测试驱动开发,简称ATDD。ATDD是敏捷开发极限编程TDD思想下的优秀实践。

传统的验收测试一般是软件开发生命周期中最后一个测试环节(具体请参考“用户验收测试”实践)。而敏捷测试提倡测试左移,预防缺陷,所以把验收测试的思想提前到需求分析阶段,即在设计、写代码之前,明确系统功能特性的验收标准,并有对应的测试用例进行验收,这就是验收测试驱动开发ATDD。

面向业务层面的ATDD是必需的, 因为模糊的需求往往意味着返工和浪费,没有可测试性也意味着无法开展测试。因此ATDD是帮助团队按验收标准来实现用户故事,是以终为始,理所当然的。

ATDD实施起来也比较容易,大部分敏捷开发团队都会定义用户故事的验收标准AC。把AC实例化并进行测试验收就可以实现ATDD。

实践出处
编辑

极限编程TDD。TDD可以分为两个层次,UTDD和ATDD:

  • ATDD发生在业务层次,在设计、写代码前就明确需求(用户故事)的验收标准。

  • UTDD发生在代码层次,在编码之前些单元测试。

为什么
编辑

需求越明确,用户、产品经理、开发与测试等之间的理解就越一致,越不产生偏差和误解,有利于开发和测试的工作。基于ATDD,开发人员写产品代码,测试人员写测试代码,产品经理的工作也会变得轻松,不需要太多的解释。

  • 从需求角度看,BDD和需求实例化比较彻底地明确需求,统一用户、产品经理、开发与测试等认识,让大家处在一个层面上,使研发工作更高效。

  • 从测试角度看,需求即测试,产品的需求就是测试的需求,需求可以被执行,即一步到位,将需求变为自动化测试脚本,开发出来的功能特性随时可以被自动验证。

何时使用
编辑

在需求分析阶段,由业务、开发、测试一起协同,澄清需求的验收标准和细节。根据不同产品类型的需要,选择BDD(行为驱动开发)、RBE(需求实例化)、或其他方法进行ATDD落地。

如何使用
编辑

  1. 在需求分析阶段,团队协同工作(业务、开发、测试等),一起为每个用户故事添加相应的、一致认可的验收标准AC,以澄清需求和验收条件,并确保用户故事具有可测试性。

  2. 在AC基础上实施ATDD:

    • ATDD一般以BDD进行落地。BDD将验收标准更加明确化,可以看作是ATDD的实例化,即列出用户故事所可能遇到的应用场景,而且将这种应用场景的表达方式规定为GWT格式(Given,When,Then),以确定每种场景预期的结果,即可作为测试用例。还可以结合需求实例化RBE,进一步明确需求的具体表现。(BDD和RBE的详细说明请参考相关实践)

    • 如果产品类型不需要或不适合BDD,也可以单独实施ATDD。团队成员根据验收标准AC编写测试用例,在每一次迭代结束前,完成用户故事的验收测试。

  3. 手工测试和自动化测试均可。更推荐自动化测试(BDD是自动化测试)。这些测试用例也可以纳入到测试库中,例如回归测试。

输出物
编辑

AC验收标准,ATDD测试用例、测试结果

常见问题解答
编辑

  1. 谁来编写和执行ATDD?
    验收标准AC是由团队共同澄清的(业务、开发、测试)。 ATDD实践是一项开发和测试结合的实践。开发根据AC写代码,测试根据AC写测试用例。具体的执行可以由团队决定,能用自动测试工具来执行是最好的。BDD形式的测试用例对业务人员也很友好,能方便地执行测试。

  2. ATDD会增加团队的负担?
    不,恰恰相反,通过ATDD来明确需求,减少返工和浪费,恰恰是能减少团队的负担。
    而且验收测试是产品开发过程中不可缺少的,ATDD只是把它提前了,并不是新增加的工作。
    并且,验收测试的用例还可以在回归测试等其他测试环节中重复使用,提高了效率。

参考资料
编辑

  1. 《敏捷测试:以持续测试促进持续交付》 朱少民、李洁著

  2. 《五分钟让你彻底了解TDD、ATDD、BDD&RBE》朱少民著

关键词
编辑

验收测试驱动开发,ATDD, AC,验收标准,敏捷测试

我们非常重视知识产权,我们在非常努力地寻找最初的出处来源并注明出处。但因为互联网信息浩瀚,难免会有疏漏。如果您觉得有侵犯您的权益,请联系我们。

请提出您的意见
通过审核后显示您的意见

文章导航

定义
实践出处
为什么
何时使用
如何使用
输出物
常见问题解答
参考资料
关键词

主要贡献人

逼格高的蟠桃

实践被点赞 10

实践被收藏 0

加入社区微信群
与行业大咖零距离交流学习
PMO实践白皮书
白皮书上线