除了BDD之外,想必你也曾听说过ATDD和实例化需求这两个术语,那它们之间有何区别呢?要想得到问题的答案,不得不先了解下另外一个术语:TDD。
TDD
TDD,测试驱动开发,是由Kent Beck在1999年提出的,强调测试先行,避免过度设计。TDD测试驱动开发的核心为红-绿-重构三步骤:
1、编写一个失败的测试(测试工具Test-Runner显示为红色)
2、编写生产代码,使第一步骤编写的失败测试通过(测试工具Test-Runner显示为绿色)
3、在保证所有测试都通过的情况下,重构已编写的代码,以提高代码的可读性和可维护性。
TDD是面向开发人员的,它使程序从一开始就被强制设计为可测试的,不断重构代码能提升代码质量,完善的测试会充当保护网,并且能够快速提供反馈。
ATDD
ATDD现在被普遍认为是Acceptance Test-Driven Development,即验收测试驱动开发。
2002年,Kent Beck在《Test-Driven Development by Example》一书提到了术语ATDD,但指的是应用程序级别的测试驱动开发(Application Test-Driven Development),虽然和Acceptance字面含义不同,但它们有共同的特质,都是用户参与编写测试用例、由外至内的。
Kent Beck在当时并不看好ATDD,一方面是由于测试装置的设置存在技术挑战,另一方面是由于测试编写的职责转移,将导致其他非开发人员的额外投入。更为致命的是,ATDD无法像TDD那样提供快速反馈。
同年,Ward Cunningham 开发了集成测试框架 FIT(Framework for Integrated Test),允许客户使用 Excel 提供验收标准实例,并能够自动化运行,解决了Kent Beck担忧的测试装置的技术问题。 后来,Robert C. Martin 在 Fit 的基础上开发了流行的 FitNesse。
2004年,Tracy Reppert在Better Software杂志上发表了一篇名为《How Story Test-Driven Development is changing the way QA, customers, and developers work》的文章,首次提到了STDD,即故事测试驱动开发,作为XP极限编程的一种实践。STDD将客户、开发人员和测试人员在任何代码编写之前聚集在一起,他们一起协作确定要处理的具体功能或“故事”。然后,客户和测试人员指定验证该故事有效的标准,并创建一个可执行的文档,团队中的任何人都可以访问。STDD核心四步骤:
1、定义故事 ---- 由主题专家/业务分析师完成
2、定义故事测试 ---- 由主题专家/业务分析师、测试人员和开发人员协作完成
3、签入故事测试到版本控制系统SCM
4、编写测试代码,实现,使故事测试通过 ---- 由开发人员完成
STDD的成功实践,证明了测试编写职责转移的问题在敏捷XP方法下也并非障碍。
随着 Fit/FitNesse 等工具的兴起,ATDD 获得了普及并成为一种更受认可的开发方法。
现在,验收测试驱动开发(ATDD)被普遍认为是一种基于业务客户、开发人员和测试人员之间沟通的开发方法。
实例化需求
不论是TDD还是ATDD,它们都是以”测试“来命名的,但ATDD并不仅仅关注在验收测试方面的,它的核心理念是通过业务客户、开发人员和测试人员之间的协作,将业务需求以实例化的方式,转化为一个个可自动化执行的验收测试,以此驱动开发出正确的软件。
2011年,Gojko Adzic认为”测试”一词并不能被业务人员理解,业务人员常常以”测试并非需求工作“为由拒绝参与相关会议,因此在《Specification by Example》一书中使用了术语实例化需求,有时候也被称为SBE。Gojko Adzic还认为实例化需求实践的核心内容和BDD是一样的,他不想使用术语BDD,仅仅是因为担心这组实践和BDD之间产生任何混淆或者歧义。
读到这里,相信你应该得到了答案。BDD,ATDD和实例化需求,本质上并无区别。同样的术语还有:
- STDD,Story Test-Driven Development,故事测试驱动开发
- EGD,Example-Guided Development,实例指导开发
- EDD,Example-Driven Development,实例驱动开发
- Agile Acceptance Testing,敏捷验收测试
- Story Testing,用户故事测试
本文引用:
- 《Test-Driven Development by Example》
- 《ATDD by Example》
- 《Specification by Example》
- 《Lean-Agile Acceptance Test-Driven Development》
- 《BDD In Action, 2nd edition》
- 《How Story Test-Driven Development is changing the way QA, customers, and developers work》
* 如果你对BDD感兴趣,可扫码关注公众号 BDD研究所
标签:Development,BDD,ATDD,有何,Driven,测试,Test From: https://www.cnblogs.com/crab-lab/p/18204033