什么是ATDD

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

ATDD的基本流程

 
ATDD的流程

和TDD的“红-绿-重构”类似,ATDD的流程也是类似的思路(如上图)。

  • 讨论澄清阶段

    • 全组参与的针对需求和方案的讨论
    • 大家产出对需求和方案共同的理解
    • 通过明确验收测试方式澄清我们的实现方案
    • 验收测试方式将被自动化
  • 开发阶段
    • 用明确具体的验收测试方式来指导开发工作
    • 验收测试的自动化和特性的开发可以并行开展
    • 全组成员对验收测试的自动化负责,而不仅仅是测试人员
    • 最终,我们的产品实现能让所有的自动化测试通过
  • 交付阶段
    • 我们要保证之前迭代所有的自动化验收测试能在新交付上通过
    • 给所有利益相关者演示我们的新特性
    • 收集反馈,讨论改进

ATDD的好处

最好的验证一个研发团队是否对客户需求有统一的理解的方法就是对客户如何验收有统一的理解。
ATDD这样的做法一下子就让我想到了“七个习惯”中的以终为始,我们先澄清细化最终客户的目标,并把自始至终都基于这个目标工作,这不就是以终为始吗?

一般来说,我们认为ATDD的好处有:

  • 大家对业务需求的统一理解
  • 通过自然语言来描述需求
  • 是可以运行的需求或实例
  • 是活着的文档

为了更好的把ATDD和UTDD区分开来,你可以尝试记住一句话:

UTDD是为了让你Do things right,但ATDD是为了你Do right things。”

一个方法:实例化需求

 
Specification by Example

一个列子:

 
example of SBE

测试就是需求说明,需求说明就是测试

一个工具:Robot framework

Robot framework是一个开源的自动化测试框架,它通过“keyword-driven” 的方式编写测试案例,是一个非常适合用来实践ATDD的工具。
官网:Robot Framework

一个补充:探索性测试

基于抛开了软件系统复杂性的user story而写的验收用例,往往也不可避免在测试覆盖率上会遗漏一些细节上的需求,特别是非功能性的需求。没有人工参与的自动化测试,提高了效率,但也不可避免的阻碍了测试案例的改进,使得杀虫剂效应明显。
所以在引入ATDD和CI/CD后,组织必须也要同时引入探索性测试,不断完善自动化测试的不足。

作者:鲁佳
链接:https://www.jianshu.com/p/0389360ac58f
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

ATDD的更多相关文章

  1. 敏捷测试(8)--ATDD整体研发流程

    ATDD整体研发流程 有了前面的基于story的敏捷基础,接下来来介绍一下验收测试驱动开发的整个流程. 名词解释: ATD,即验收测试设计(acceptancetest design) PM,即需求整 ...

  2. 敏捷测试(2)--ATDD概念

    什么是验收测试驱动开发 在准备实施一个功能或特性之前,首先团队需要定义出期望的质量标准和验收细则,以明确而且达成共识的验收测试计划(包含一系列测试场景)来驱动开发人员的TDD实践和测试人员的测试脚本开 ...

  3. TDD、BDD、ATDD、DDD 软件开发模式

    TDD.BDD.ATDD.DDD 软件开发模式 四个开发模式意思: TDD:测试驱动开发(Test-Driven Development) BDD:行为驱动开发(Behavior Driven Dev ...

  4. 【转载】浅谈TDD、BDD与ATDD软件开发

    转载自(此处仅供学习):http://blog.csdn.net/zhenyu5211314/article/details/22033295 1. 首先了解一下这三个开发模式都是什么意思: TDD: ...

  5. ATDD和TDD的区别是什么?

    最近看到一个新名词"ATDD",全称"Acceptance Test Driven Development ",中文称"验收测试驱动开发". ...

  6. 四种软件开发模式:tdd、bdd、atdd和ddd的概念

    看一些文章会看到TDD开发模式,搜索后发现有主流四种软件开发模式,这里对它们的概念做下笔记. TDD:测试驱动开发(Test-Driven Development) 测试驱动开发是敏捷开发中的一项核心 ...

  7. BDD本质及与ATDD区别

    说起BDD,你会想到什么?   在刚接触BDD(Behavior Driven Development,行为驱动开发)的时候,我以为就是用Cucumber这样的工具来编写场景用例,从而实现自动化测试, ...

  8. ​TDD明白了,ATDD测试到底是什么?

    随着敏捷开发的蓬勃发展.遍地开花,TDD(Test Drive Development测试驱动开发)的概念已经深入软件研发从业者的心中. TDD讲究的是:“测试在先.编码在后”.有别于以往的“先编码. ...

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

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

随机推荐

  1. linux 下的clock_gettime() 获取时间函数

    #include <time.h> int clock_gettime(clockid_t clk_id, struct timespec* tp); 可以根据需要,获取不同要求的精确时间 ...

  2. Django进阶之查询优化、extra注入SQL及批量创建

    Django查询优化 Django的查询优化用到两个函数——select_related()和prefetch_related(). select_related()用的是连表join的方式,主要处理 ...

  3. python框架之Django(4)-视图&路由

    视图 负责接收请求和返回响应 FBV和CBV FBV FBV(function base views) 就是在视图里使用函数处理请求. from django.conf.urls import url ...

  4. C++对象赋值问题

  5. Linux基础命令---lpstat查看打印任务

    lpstat lpstat指令用来显示当前任务.打印机的状态.如果没有参数,那么就显示打印队列. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.Fedora.openSUSE. ...

  6. IP通信基础学习第一周

    在IP方向上,IP通信基础是学习其他诸如:数字程教控交换技术与应用.IPV6技术与应用.SDH传输技术与应用等课程的基础. 学习IP通信基础,对学生而言至少可以拿学分,不仅有利于以后的学习,还有机会从 ...

  7. bzoj1911 [Apio2010]特别行动队commando

    题目链接 斜率优化 #include<cstdio> #include<cstdlib> #include<string> #include<cstring& ...

  8. mybatis的sql映射文件不能打包进目录解决办法

    方法二: <build> <finalName>qwe</finalName> <plugins> <plugin> <groupId ...

  9. 使用日期插件用js处理日期格式

    function compareDate(checkStartDate, checkEndDate) {    var arys1= new Array();    var arys2= new Ar ...

  10. Mysql BLOB、BLOB与TEXT区别及性能影响、将BLOB类型转换成VARCHAR类型

    在排查公司项目业务逻辑的时候,见到了陌生的字眼,如下图 顺着关键字BLOB搜索,原来是Mysql存储的一种类型,从很多文章下了解到如下信息 了解 MySQL中,BLOB字段用于存储二进制数据,是一个可 ...