ATDD
什么是ATDD
- 首先,ATDD不是一种测试方法论,而是一种开发方法论。
- UTDD涉及的人员仅仅是开发人员,那么ATDD仅仅涉及测试人员吗?不是,产品、开发、测试都需要参与到ATDD中来。
- 在ATDD活动中团队需要就需求定义出期望的质量标准和验收细则,以明确而且达成共识的验收测试计划(包含一系列测试场景)来驱动产品的代码开发和测试脚本开发。
- ATDD一定是基于测试自动化和持续集成的。
ATDD的基本流程

和TDD的“红-绿-重构”类似,ATDD的流程也是类似的思路(如上图)。
- 讨论澄清阶段
- 全组参与的针对需求和方案的讨论
- 大家产出对需求和方案共同的理解
- 通过明确验收测试方式澄清我们的实现方案
- 验收测试方式将被自动化
- 开发阶段
- 用明确具体的验收测试方式来指导开发工作
- 验收测试的自动化和特性的开发可以并行开展
- 全组成员对验收测试的自动化负责,而不仅仅是测试人员
- 最终,我们的产品实现能让所有的自动化测试通过
- 交付阶段
- 我们要保证之前迭代所有的自动化验收测试能在新交付上通过
- 给所有利益相关者演示我们的新特性
- 收集反馈,讨论改进
ATDD的好处
最好的验证一个研发团队是否对客户需求有统一的理解的方法就是对客户如何验收有统一的理解。
ATDD这样的做法一下子就让我想到了“七个习惯”中的以终为始,我们先澄清细化最终客户的目标,并把自始至终都基于这个目标工作,这不就是以终为始吗?
一般来说,我们认为ATDD的好处有:
- 大家对业务需求的统一理解
- 通过自然语言来描述需求
- 是可以运行的需求或实例
- 是活着的文档
为了更好的把ATDD和UTDD区分开来,你可以尝试记住一句话:
UTDD是为了让你Do things right,但ATDD是为了你Do right things。”
一个方法:实例化需求

一个列子:

测试就是需求说明,需求说明就是测试
一个工具:Robot framework
Robot framework是一个开源的自动化测试框架,它通过“keyword-driven” 的方式编写测试案例,是一个非常适合用来实践ATDD的工具。
官网:Robot Framework
一个补充:探索性测试
基于抛开了软件系统复杂性的user story而写的验收用例,往往也不可避免在测试覆盖率上会遗漏一些细节上的需求,特别是非功能性的需求。没有人工参与的自动化测试,提高了效率,但也不可避免的阻碍了测试案例的改进,使得杀虫剂效应明显。
所以在引入ATDD和CI/CD后,组织必须也要同时引入探索性测试,不断完善自动化测试的不足。
作者:鲁佳
链接:https://www.jianshu.com/p/0389360ac58f
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
ATDD的更多相关文章
- 敏捷测试(8)--ATDD整体研发流程
ATDD整体研发流程 有了前面的基于story的敏捷基础,接下来来介绍一下验收测试驱动开发的整个流程. 名词解释: ATD,即验收测试设计(acceptancetest design) PM,即需求整 ...
- 敏捷测试(2)--ATDD概念
什么是验收测试驱动开发 在准备实施一个功能或特性之前,首先团队需要定义出期望的质量标准和验收细则,以明确而且达成共识的验收测试计划(包含一系列测试场景)来驱动开发人员的TDD实践和测试人员的测试脚本开 ...
- TDD、BDD、ATDD、DDD 软件开发模式
TDD.BDD.ATDD.DDD 软件开发模式 四个开发模式意思: TDD:测试驱动开发(Test-Driven Development) BDD:行为驱动开发(Behavior Driven Dev ...
- 【转载】浅谈TDD、BDD与ATDD软件开发
转载自(此处仅供学习):http://blog.csdn.net/zhenyu5211314/article/details/22033295 1. 首先了解一下这三个开发模式都是什么意思: TDD: ...
- ATDD和TDD的区别是什么?
最近看到一个新名词"ATDD",全称"Acceptance Test Driven Development ",中文称"验收测试驱动开发". ...
- 四种软件开发模式:tdd、bdd、atdd和ddd的概念
看一些文章会看到TDD开发模式,搜索后发现有主流四种软件开发模式,这里对它们的概念做下笔记. TDD:测试驱动开发(Test-Driven Development) 测试驱动开发是敏捷开发中的一项核心 ...
- BDD本质及与ATDD区别
说起BDD,你会想到什么? 在刚接触BDD(Behavior Driven Development,行为驱动开发)的时候,我以为就是用Cucumber这样的工具来编写场景用例,从而实现自动化测试, ...
- TDD明白了,ATDD测试到底是什么?
随着敏捷开发的蓬勃发展.遍地开花,TDD(Test Drive Development测试驱动开发)的概念已经深入软件研发从业者的心中. TDD讲究的是:“测试在先.编码在后”.有别于以往的“先编码. ...
- 【转载】五分钟让你彻底了解TDD、ATDD、BDD&RBE
在目前比较流行的敏捷开发模式(如极限编程.Scrum方法等)中,推崇“测试驱动开发(Test Driven Development,TDD)”——测试在先.编码在后的开发实践.TDD有别于以往的“先编 ...
随机推荐
- Golang数据类型总结及其转换
golang数据类型 基本类型:boolean,numeric,string类型的命名实例是预先声明的. 复合类型:array,struct,指针,function,interface,slice,m ...
- poi导入excel表格数据到数据库的时候,对出生日期的校验
出生日期格式为8位数字的字符串 如:yyyyMMdd 规则:yyyy大于1900并小于当前时间,月.日 按日期规则校验 //解决读过来的字符串显示为科学计数法问题 BigDecimal bd = ne ...
- luogu3830 [SHOI2012]随机树
传送门:洛谷 题目大意:对于一个只有一个节点的二叉树,一次操作随机将这棵树的叶节点的下方增加两个节点.$n-1$次操作后变为$n$个叶节点的二叉树.求:(1)叶节点平均深度的期望值(2)树深度的数学期 ...
- typescript interface 泛型
interface interface Obj { [index: string]: any; } class Person { name: string; } let obj: obj = { na ...
- Spring中的事务操作
事务的特性 原子性:强调事务的不可分割. 一致性:事务的执行的前后数据的完整性保持一致. 隔离性:一个事务执行的过程中,不应该受到其他事务的干扰. 持久性:事务一旦结束,数据就持久化到数据库. 如果不 ...
- 类加载(四):spring-boot-loader 模块
1. spring-boot jar包结构 2. 正常情况下,java -jar的类加载器是AppClassLoader 但是spring 使用自定义的URLClassLoader加载我们写的clas ...
- NuGet Install-Package报错解决Package Manager Console error - PowerShell version 2.0 is not supported. Please upgrade PowerShell to 3.0 or greater and restart Visual Studio.
问题: Package Manager Console error - PowerShell version 2.0 is not supported. Please upgrade PowerShe ...
- git常用命令--tag
/// 查看标签 // 打印所有标签 git tag // 打印符合检索条件的标签 git tag -l 1.*.* // 查看对应标签状态 git checkout 1.0.0 /// 创建标签(本 ...
- Python开发环境Linux配置
1. 在Windows下安装Linux的连接工具(XShell),选免费的 2.虚拟机安装,注意BIOS对虚拟机使用的设置(enable) 3.虚拟机安装好修改yum源(用阿里云的):https:// ...
- 中文WebFont解决方案Font-Spider(字蛛)
我们在日常需求中,经常会碰到视觉设计师对某个中文字体效果非常坚持的情况,因为页面是否高大上,字体选择是很重要的一个因素,选择合适的字体可以让页面更优雅.面对这种问题,我们通常以下方式来进行设计还原: ...