首页 > 其他分享 >BDD和ATDD、实例化需求有何区别?

BDD和ATDD、实例化需求有何区别?

时间:2024-05-21 14:55:02浏览次数:25  
标签:Development BDD ATDD 有何 Driven 测试 Test

  除了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

相关文章

  • 在Linux中,硬链接和软链接有何区别?
    在Linux系统中,硬链接(HardLink)和软链接(也称为符号链接,SymbolicLink)是文件系统中的两种特殊类型的链接,它们允许多个名称指向同一个文件或目录。尽管它们有相似之处,但它们之间存在一些关键的区别:1.硬链接(HardLink)文件名相同:硬链接实际上是文件系统中的一个文件名,指向一个inode......
  • 云和虚拟化有何区别?
    概述由于虚拟化和云的核心理念都是从抽象资源中创建可用的环境,所以很容易被混为一谈。虚拟化是一种技术,可让用户以单个物理硬件系统为基础,创建多个模拟环境或专用资源。而云是一种能够抽象、汇集和共享整个网络中的可扩展资源的IT环境。简而言之,虚拟化是一项技术,而云是一......
  • 初中地理 高中地理 大学地理,有何不同?
    地理是一个内容很广泛的学科。理论上来说,所有的地球上的内容都属于地理。但是一般意义上,地理仅仅侧重于地质。地球测量。而对于大气,水文等内容则似乎并非地理人文、历史地理学科的范畴。地理为什么属于文科?地理本质上是不属于人类,不应该跟人类活动关联在一起的。但是实际上,地球却......
  • 火箭上天和飞机上天的原理有何不同?
    火箭靠向后喷射高温高压气体产生的反作用力飞行。飞机靠机翼上下气流的压差产生的升力飞行。参考:https://baijiahao.baidu.com/s?id=1641924575181476234&wfr=spider&for=pc>>空气动力学:空气动力学是力学的一个分支,研究飞行器或其他物体在同空气或其他气体作相对运动情况下的受......
  • As a reader --> TabDDPM: Modelling Tabular Data with Diffusion Models
    ......
  • 基于三维地图开发的智慧展馆可视化系统建设方案有何推荐?
    基于三维地图开发的智慧展馆可视化系统建设方案有何推荐?     关注者7被浏览10,520关注问题​写回答​邀请回答​好问题​添加评论​分享​  查看全部5个回答粉刷匠 ​ 关注  1人赞同了......
  • [Testing adn BDD] Introduction to Test and Behavior Driven Development
    TheImportanceofTestingThevalueoftesting"Ifit'sworthbuilding,it'sworthtesting.Ifit;snotworthtesting,whyareyouwastingyourtimetoworkngonit?"--ScottAmbler,agiledate.orgDesignprinciplesforApolloUsea......
  • 如何定义快速开发平台框架?有何突出优势?
    作为提质增效的利器软件,快速开发平台框架如何能在众多同行中取胜?又是凭借什么优势特点在激烈的市场竞争中获得众多客户的青睐与信任?不管是从企业角度、服务商角度,还是使用者的角度来说,做好流程化进程,打破信息孤岛都需要借助专业的快速开发平台框架的力量,使其进入高效的数字化发展......
  • 在Linux中,进程和线程有何作用?
    在Linux操作系统中,进程和线程都扮演着关键角色,它们的设计目的是为了支持系统的并发性和资源共享,以及提高应用程序的性能和响应能力。进程的作用:资源隔离:进程是操作系统分配资源的基本单位,每个进程都有自己独立的地址空间,包括代码段、数据段、堆和栈,这样可以防止一个进程错误......
  • 在Linux中,文件和目录的权限有何作用以及如何修改?
    在Linux系统中,文件和目录的权限起着至关重要的作用,它们决定了哪些用户可以访问、修改或执行特定的文件或目录。这些权限确保了系统的安全性和稳定性,同时允许用户有效地管理他们的数据和资源。权限的作用:文件权限:读(r):允许用户查看文件的内容。写(w):允许用户修改文件的内容,包括添......