TDD、BDD、ATDD都是什么、有什么区别?(下)
在《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都是什么、有什么区别?(下)的更多相关文章
- 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 ...
- 为什么很多应用都安装在/usr/local目录下
为什么很多应用都安装在/usr/local目录下 很多应用都安装在/usr/local下面,那么,这些应用为什么选择这个目录呢?理解了最根源的原因后,也许对你理解linux组织文件的方式有更直观的 ...
- php artisan 命令报错,什么命令都是这个错误,cmd下运行也不行,又没看到语法错误
Laravel 5.1 以上的版本的框架需求PHP的版本是5.5以上的版本.如果你的PHP版本等级太低,将会出现上述的问题. 估计你要升级你的PHP版本了.
- C#本质论第四版-1,抄书才能看下去,不然两三眼就看完了,一摞书都成了摆设。抄下了记忆更深刻
C#本质论第四版-1,抄书才能看下去,不然两三眼就看完了,一摞书都成了摆设.抄下了记忆更深刻 本书面向的读者 写作本书时,我面临的一个挑战是如何持续吸引高级开发人员眼球的同时,不因使用assembly ...
- 插入函数概念 接收一个callback,然后外面函数,接一个对象,和一个next,外面都执行完了,继续执行下一个函数,相当于一个链状体,插入了一个函数的概念 | log4js 输出 等于 console.info
插入函数概念 接收一个callback,然后外面函数,接一个对象,和一个next,外面都执行完了,继续执行下一个函数,相当于一个链状体,插入了一个函数的概念 app.use(function (ctx ...
- 【转载】五分钟让你彻底了解TDD、ATDD、BDD&RBE
在目前比较流行的敏捷开发模式(如极限编程.Scrum方法等)中,推崇“测试驱动开发(Test Driven Development,TDD)”——测试在先.编码在后的开发实践.TDD有别于以往的“先编 ...
- TDD 与 BDD 仅仅是语言描述上的区别么?
当然不是了,通过这个问题,我顺便跟大家聊聊 ATDD,TDD,BDD3者的区别,方便大家有一个清晰的认识和了解. ATDD: Acceptance Test Driven Development(验收 ...
- TDD&BDD
BDD行为驱动开发的一种敏捷开发技术 TDD测试驱动开发
- 0x和H都表示十六进制有什么区别吗?
0x是16进制的前缀,H是16进制的后缀 都是表示十六进制数,意义上没有什么区别,完全相等.至于什么时候用0x,什么时候用H,这取决于你在什么环境下使用,如果在C/C++,必须用0x来表示. 在C语言 ...
- 突然挂了!Redis缓存都在内存中,这下完了!
我是Redis,一个叫Antirez的男人把我带到了这个世界上. “快醒醒!快醒醒!”,隐隐约约,我听到有人在叫我. 慢慢睁开眼睛,原来旁边是MySQL大哥. “我怎么睡着了?” “嗨,你刚才是不是出 ...
随机推荐
- dedebiz 清理冗余废弃未引用图片方法
原理描述: 在原有织梦后台菜单中增加"清理冗余图片按钮",实现清理冗余图片的功能. 操作步骤: 1. 打开后台admin\sys_sql_query.php代码 在该文件中搜索如下 ...
- windows系统上的大文件拆分合并
上周碰到一个并不算很大的问题,但是也有记录的价值. 从公司带出来的离线补丁包需要传到客户服务器上,但是被告知并不能在现场机器上插U盘,会触发告警.上传只能把U盘上的内容通过私人笔记本刻录到光盘上,插光 ...
- Go流程控制与快乐路径原则
Go流程控制与快乐路径原则 目录 Go流程控制与快乐路径原则 一.流程控制基本介绍 二.if 语句 2.1 if 语句介绍 2.2 单分支结构的 if 语句形式 2.3 Go 的 if 语句的特点 2 ...
- BSD协议原文及中文翻译
# BSD协议原文及翻译 参考链接 原文: The following is a BSD license template. To generate your own license, change ...
- K8s - 安装部署Kafka、Zookeeper集群教程(支持从K8s外部访问)
本文演示如何在K8s集群下部署Kafka集群,并且搭建后除了可以K8s内部访问Kafka服务,也支持从K8s集群外部访问Kafka服务.服务的集群部署通常有两种方式:一种是 StatefulSet,另 ...
- 文心一言 VS 讯飞星火 VS chatgpt (121)-- 算法导论10.4 2题
二.用go语言,给定一个n结点的二叉树,写出一个 O(n)时间的递归过程,将该树每个结点的关键字输出. 文心一言: 在Go语言中,你可以使用递归函数来遍历二叉树的所有节点,并输出每个节点的关键字.以下 ...
- 怎么用Python写一个浏览器集群框架
这是做什么用的 框架用途 在采集大量新闻网站时,不可避免的遇到动态加载的网站,这给配模版的人增加了很大难度.本来配静态网站只需要两个技能点:xpath和正则,如果是动态网站的还得抓包,遇到加密的还得j ...
- Python自动化处理Excel数据
需求描述:数据格式如下所示,需要分离出2023年7月1号之后的数据明细 数据核对与处理:从Excel文件中提取特定日期后的签收数据 1. 引言 在实际数据处理和分析过程中,经常会遇到需要从大量数据中提 ...
- ChatGLM3-6B:新一代开源双语对话语言模型,流畅对话与低部署门槛再升级
ChatGLM3-6B:新一代开源双语对话语言模型,流畅对话与低部署门槛再升级 1.ChatGLM3简介 ChatGLM3 是智谱AI和清华大学 KEG 实验室联合发布的新一代对话预训练模型.Chat ...
- python之递归(斐波那契数列)与迭代
对于较大的计算来说,迭代不如递归计算速度快,并且可以说非常慢 但是迭代对于较小的运算又比递归巧妙 # 迭代方法 def slowsnail(x): am = [1, 1] if x < 0: p ...