《TDD、BDD、ATDD都是什么、有什么区别?(下)》一文中,探讨了TDD、BDD和ATDD的概念。虽然TDD、BDD和ATDD都是软件开发中使用的测试方法,但它们在方法和重点上有所不同。

TDD、BDD和ATDD之间的主要区别在于关注点、抽象层级和协作。

1、关注点

TDD侧重于测试代码并确保它满足需求。BDD关注软件的行为,并确保它满足业务需求。ATDD关注于验收标准,并确保软件满足业务需求。

2、抽象层级

TDD专注于代码级别,并使用单元测试来验证代码的功能。BDD专注于功能级别,并使用场景来描述所需的行为。ATDD专注于验收标准,并使用验收测试来验证软件是否满足要求。

3、协作

TDD主要是一个以开发人员为中心的过程,包括编写测试和代码。BDD和ATDD涉及开发人员、测试人员和涉众之间的协作,以确保软件满足业务需求。

虽然这三种方法有一些相似之处,但它们在方法、范围和目的上有所不同。

1、范围

TDD专注于代码的开发和验证其行为的测试。这个过程从编写一个失败的测试用例开始,然后编写通过测试所需的最低数量的代码,然后重构代码。TDD确保代码在发布之前经过彻底测试并满足要求。

BDD将TDD的范围扩展到包括整个系统的行为。BDD关注的是系统的行为,而不是它的实现细节。BDD场景以一种称为Gherkin的特定格式编写,该格式使用Given When Then语法来描述系统行为的前提条件、操作和预期结果。这些场景作为系统的验收标准,确保团队正在构建正确的东西,并确保系统满足用户的需求。

ATDD侧重于系统的验收标准。该团队合作以自动测试的形式定义系统的验收标准。测试以所有利益相关者都可以访问的特定格式编写,并使用Given When Then语法来描述系统的预期行为。ATDD测试是系统的验收标准,确保团队正在构建正确的东西,并确保系统满足用户的需求。

2、术语

TDD使用术语词汇表,并专注于代码的行为。TDD测试是由开发人员编写的,旨在确保代码的行为符合预期。TDD测试通常使用与测试代码相同的编程语言编写。

BDD使用对业务友好的词汇表,并专注于系统的行为。BDD场景以一种称为Gherkin的特定格式编写,该格式使用Given When Then语法来描述系统行为的前提条件、操作和预期结果。BDD场景通常由业务分析师或产品所有者编写,他们对用户的需求和要求有深入的了解。

ATDD使用对业务友好的词汇表,并专注于系统的验收标准。ATDD测试以所有利益相关者都可以访问的特定格式编写,并使用Given When Then语法来描述系统的预期行为。ATDD测试通常由对用户的需求和要求有深入了解的业务分析师或产品所有者编写。

3、目的

TDD的目的是确保代码在发布之前经过彻底测试并满足要求。TDD测试作为代码的规范,帮助开发人员在开发周期的早期发现bug和缺陷。

BDD的目的是确保团队正在构建正确的东西,并且系统满足用户的需求。BDD场景作为系统的验收标准,确保团队正在构建正确的东西,并确保系统满足用户的需求。

ATDD的目的是确保团队正在构建正确的东西,并且系统满足用户的需求。ATDD测试是系统的验收标准,确保团队正在构建正确的东西,并确保系统满足用户的需求。ATDD测试还推动开发过程,确保代码在发布前经过测试并符合验收标准。

4、方法

TDD遵循自上而下的软件开发方法。它首先编写一个测试用例,然后编写通过该测试的代码。重复该循环,直到满足所有要求。TDD鼓励开发人员编写可测试和可维护的代码,从而获得更高质量的产品。

BDD遵循行为驱动的软件开发方法。它首先以场景的形式定义系统的期望行为,描述系统在不同情况下的行为。这些场景是用一种名为Gherkin的特定格式编写的,该格式使用Given When Then语法来描述系统行为的前提条件、操作和预期结果。BDD场景通常由业务分析师或产品所有者编写,他们对用户的需求和要求有深入的了解。

ATDD遵循与BDD类似的方法,但侧重于系统的验收标准。该团队合作以自动测试的形式定义系统的验收标准。测试以所有利益相关者都可以访问的特定格式编写,并使用Given When Then语法来描述系统的预期行为。ATDD测试通常由对用户的需求和要求有深入了解的业务分析师或产品所有者编写。

总结

测试驱动开发(TDD)、行为驱动开发(BDD)和验收测试驱动开发都是近年来流行的软件开发方法。虽然这三种方法都旨在提高软件质量和减少缺陷,但它们的方法、范围和目的各不相同。

TDD、BDD、ATDD都是什么、有什么区别?(下)的更多相关文章

  1. Atitit各种SDM 软件开发过程SDP sdm的ddd tdd bdd设计

    Atitit各种SDM 软件开发过程SDP sdm的ddd tdd bdd设计 1.1. software development methodology (also known as SDM 1 1 ...

  2. 为什么很多应用都安装在/usr/local目录下

    为什么很多应用都安装在/usr/local目录下   很多应用都安装在/usr/local下面,那么,这些应用为什么选择这个目录呢?理解了最根源的原因后,也许对你理解linux组织文件的方式有更直观的 ...

  3. php artisan 命令报错,什么命令都是这个错误,cmd下运行也不行,又没看到语法错误

    Laravel 5.1 以上的版本的框架需求PHP的版本是5.5以上的版本.如果你的PHP版本等级太低,将会出现上述的问题. 估计你要升级你的PHP版本了.

  4. C#本质论第四版-1,抄书才能看下去,不然两三眼就看完了,一摞书都成了摆设。抄下了记忆更深刻

    C#本质论第四版-1,抄书才能看下去,不然两三眼就看完了,一摞书都成了摆设.抄下了记忆更深刻 本书面向的读者 写作本书时,我面临的一个挑战是如何持续吸引高级开发人员眼球的同时,不因使用assembly ...

  5. 插入函数概念 接收一个callback,然后外面函数,接一个对象,和一个next,外面都执行完了,继续执行下一个函数,相当于一个链状体,插入了一个函数的概念 | log4js 输出 等于 console.info

    插入函数概念 接收一个callback,然后外面函数,接一个对象,和一个next,外面都执行完了,继续执行下一个函数,相当于一个链状体,插入了一个函数的概念 app.use(function (ctx ...

  6. 【转载】五分钟让你彻底了解TDD、ATDD、BDD&RBE

    在目前比较流行的敏捷开发模式(如极限编程.Scrum方法等)中,推崇“测试驱动开发(Test Driven Development,TDD)”——测试在先.编码在后的开发实践.TDD有别于以往的“先编 ...

  7. TDD 与 BDD 仅仅是语言描述上的区别么?

    当然不是了,通过这个问题,我顺便跟大家聊聊 ATDD,TDD,BDD3者的区别,方便大家有一个清晰的认识和了解. ATDD: Acceptance Test Driven Development(验收 ...

  8. TDD&BDD

    BDD行为驱动开发的一种敏捷开发技术 TDD测试驱动开发

  9. 0x和H都表示十六进制有什么区别吗?

    0x是16进制的前缀,H是16进制的后缀 都是表示十六进制数,意义上没有什么区别,完全相等.至于什么时候用0x,什么时候用H,这取决于你在什么环境下使用,如果在C/C++,必须用0x来表示. 在C语言 ...

  10. 突然挂了!Redis缓存都在内存中,这下完了!

    我是Redis,一个叫Antirez的男人把我带到了这个世界上. “快醒醒!快醒醒!”,隐隐约约,我听到有人在叫我. 慢慢睁开眼睛,原来旁边是MySQL大哥. “我怎么睡着了?” “嗨,你刚才是不是出 ...

随机推荐

  1. Microsoft Build 2021大会开始后,Develop Blog一系列更新

    .NET BLOG 发布.NET 6预览版4 https://devblogs.microsoft.com/dotnet/announcing-net-6-preview-4/ 发布.NET MAUI ...

  2. 加密 K8s Secrets 的几种方案

    前言 你可能已经听过很多遍这个不算秘密的秘密了--Kubernetes Secrets 不是加密的!Secret 的值是存储在 etcd 中的 base64 encoded(编码) 字符串.这意味着, ...

  3. antd/fusion表格增加圈选复制功能

    背景介绍 我们存在着大量在PC页面通过表格看数据业务场景,表格又分为两种,一种是 antd / fusion 这种基于 dom 元素的表格,另一种是通过 canvas 绘制的类似 excel 的表格. ...

  4. 前端三件套系例之BootStrap——BootStrap基础、 BootStrap布局

    文章目录 1 BootStrap基础 1 什么是BootStrap 2 BootStrap的版本 3 BootStrap 下载 4 CDN服务 5 目录结构 6 基本模板 7 浏览器支持 8 浏览器兼 ...

  5. pta2023年9月7日 第五期

    5月23日   11月14日   有效期3年: 更新方式待定:  双方认证合作CCF编程培训师资认证(PTA)中国计算机学会https://pta.ccf.org.cn/中国科教工作者协会(原:中国青 ...

  6. VideoCapture

    from xgoedu import XGOEDU import time #实例化edu XGO_edu = XGOEDU() XGO_edu.lcd_text(50,50,'hello',colo ...

  7. Java虚拟机(JVM):第五幕:自动内存管理 - HotSpot算法细节以及低延迟垃圾收集器

    一.HotSpot算法细节 1.根节点枚举:所有的收集器在根节点枚举的时候,必须暂停用户线程,同时要保证一致性的快照中得以进行.一致性:整个枚举期间执行子系统看起来就像是冻结在某一个时间点上,不会出现 ...

  8. java实现朴素rpc

    五层协议中,RPC在第几层? 五层协议 应用层 传输层 网络层 链路层 物理层 我不知道,我要去大气层! 远程过程调用(RPC),比较朴素的说法就是,从某台机器调用另一台机器的一段代码,并获取返回结果 ...

  9. 秋招过半零Offer怎么办?

    参加今年秋招的同学都知道,尤其是双非本科更是体验深刻.9 月份至今,面试寥寥无几.笔试也不是很多,大中小公司 Offer 没拿下一个.作为应届生的我们,该怎么办呢? 1.调整好心态 这个世界上有两种事 ...

  10. [Python] 利用python的第三方库xlrd和xlwt来处理excel数据

    今天在处理excel表格的时候,有一个需要提取表格中部分数据的操作.如果人工操作的话,有将近几千行,这样重复操作劳民伤财. 所以python就派上用场了. 简单介绍一下我要处理的问题,在excel一列 ...