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大哥. “我怎么睡着了?” “嗨,你刚才是不是出 ...
随机推荐
- Solution Set -「CF 1534」
这 1+2? 「CF1534 A」Colour the Flag Link. 把 W / R 拉出来广搜,注意判断全空的情况. #include <bits/stdc++.h> using ...
- 俄罗斯版IDM安装与破解以及解决B站视频网站不弹出下载浮窗
IDM 全称 Internet Download Manager,是一款非常优秀的多线程下载和视频嗅探工具,不仅可以显著提高文件下载速度,配合IDM浏览器扩展插件,还可以嗅探并下载YouTube.知乎 ...
- Python - 读取CSV文件发现有重复数据,如何清洗以及保存为CSV文件,这里有完整的过程!!!! 片尾有彩蛋
语言:Python 功能: 1.清洗CSV文件中重复数据. 2.保存为CSV文件 大体流程: 1.首先观察CSV文件中的数据布局格式如何? 2.通过csv包读取数据.并根据规则使用continue,来 ...
- Python--乱码转化为中文
1. \u和\x的含义 \u:代表的是unicode码 \x:代表的是16进制码 2. 代码实现 :\x类型 # \xe4\xb8\xad\xe6\x96\x87 代表的意思是'中文' s = u'\ ...
- 从零用VitePress搭建博客教程(4) – 如何自定义首页布局和主题样式修改?
接上一节:从零用VitePress搭建博客教程(3) - VitePress页脚.标题logo.最后更新时间等相关细节配置 六.首页样式修改 有时候觉得自带的样式不好看,想自定义,首先我们在docs/ ...
- 邮差之死--python源代码
"""sth imported""" import time import os '''2 flags''' flag = 0 tmp = ...
- STM32CUBEIDE中 Debug 和 Release 的作用/区别/使用场景
基本主流IDE都有该功能选项例如Keil MDK, IAR, Eclipse, VS等, 这里使用STM32CUBEIDE来举例 创建STM32CUBEIDE工程后默认有2个目标选项 Debug / ...
- Basic concepts of complex number
目录 虚数的引入 复数和虚数的关系 Example - 分辨一个数 判断两个复数是否相等的条件 共轭复数 复数的几何意义.复平面的认识 求复数的模 Reference 虚数的引入 假设有一个数,可以叫 ...
- 基于JuiceFS 的低成本 Elasticsearch 云上备份存储
杭州火石创造是国内专注于产业大数据的数据智能服务商,为了解决数据存储及高效服务客户需求,选择了 Elasticsearch 搜索引擎进行云上存储.基于性能和成本的考虑,在阿里云选择用本地 SSD EC ...
- SQL INSERT INTO 语句详解:插入新记录、多行插入和自增字段
SQL INSERT INTO 语句用于在表中插入新记录. INSERT INTO 语法 可以以两种方式编写INSERT INTO语句: 指定要插入的列名和值: INSERT INTO 表名 (列1, ...