随着敏捷开发的蓬勃发展、遍地开花,TDD(Test Drive Development测试驱动开发)的概念已经深入软件研发从业者的心中。

TDD讲究的是:“测试在先、编码在后”。有别于以往的“先编码、后测试”的开发过程,而是在编程之前,先写测试脚本或设计测试用例。

“测试先行”,使得开发人员对所做的设计或所写的代码有足够的信心,同时也有勇气进行设计或代码的快速重构,有利于快速迭代、持续交付。

严格来说,TDD是一种开发实践。

从软件开发角度来看,TDD是很棒的!

然而,把需求分析整理,软件开发,到产品化,再到用户使用,这样整个流程来看,单纯的TDD还是有一定瑕疵的。

TDD只涉及到Developer(开发者),只能算是开发工程师个人工作方式的改变。而现代软件开发,往往都是“产品经理(或业务)、测试人员(QA)、开发人员”三者合作的成果,如果开发人员对业务需求理解的不正确,那么写出的测试用例也是错的,这个问题是TDD解决不了的。

在不脱离敏捷开发的大前提下:业务层次,也可以采用类似TDD方法论。

换言之,需求分析时就确定需求(如:用户故事)的验收标准。毕竟软件最终是要给用户使用的,要满足用户需求,解决用户的痛点。否则就会变成程序员的自high!

上面的业务层次的敏捷测试,升华到方法论的高度,就是验收测试驱动开发(Acceptance Test Driven Development,ATDD)。

ATDD的执行逻辑,如下图所示:

 

 

ATDD是一种在编码开始之前将客户带入测试设计过程的技术实践。

同时,ATDD也是一个协作实践:用户,测试人员和开发人员,共同定义了自动验收标准。

ATDD有助于确保所有项目成员准确理解需要完成和实施的内容。

如果系统未通过测试可提供快速反馈,说明未满足要求。

验收测试以业务领域术语进行指定。每个功能都必须提供真实且可衡量的业务价值,事实上。

ATDD这样的做法,其实对应着《成功人士的“七个习惯”》之一的“以终为始”。

产品经理、研发人员、测试人员,三个角色的人首先坐到一起,澄清细化最终客户的目标,并把自始至终都基于这个目标工作,这不就是以终为始吗?

ATDD带来的好处也显而易见

• 大家对业务需求的统一理解

• 通过自然语言来描述需求

• 是可以运行的需求或实例

• 是活着的文档

说了这么多,相信大家已经可以明白ATDD绝对不是TDD多了一个“A”。

还没懂?一句话对比法来说明区别:

TDD的目的是:Do the right development;

ATDD的目的是:Do the development right!

具体到测试人员的工作实践中,笔者推荐Python和JAVA的两个框架,基本可以满足工作需求了。

Python背景的测试人员,推荐使用Robot Framework。

官网:https://robotframework.org/

RF的 “keyword-driven” 方式,用来编写测试案例,是一个非常适合用来实践ATDD的工具。

JAVA背景的测试人员,推荐使用FitNess框架。

官网:www.fitnesse.org

TDD,最终还是程序员自己的事情;ATDD,让测试人员更多地参与到产品、研发、交付中。

是时候拥抱ATDD了!

作  者:Testfan   Arthur

出  处:微信公众号:自动化软件测试平台

版权说明:欢迎转载,但必须注明出处,并在文章页面明显位置给出文章链接

​TDD明白了,ATDD测试到底是什么?的更多相关文章

  1. mock测试到底是什么?

    ​    ​经常听人说mock测试,究竟什么是mock测试呢?mock测试能解决什么问题?mock测试要如何做呢?今天为大家做简单介绍,之后会有详细的mock测试,感谢大家对测试梦工厂的持续关注. 概 ...

  2. Web测试到底是在测什么(资料合集)

    开始今晚的主题之前 先来看一张图, 这是老徐16年10月份,线上Web主题分享时整理的大纲 图片略模糊 看得清就好 Web测试, 进行抽离拆分,基本上就如上一些内容. 不管是测什么系统,什么功能,基本 ...

  3. TDD:代码可测试设计

    1  方法内部代码命令,查询分离. a . 命令方法:执行一系列动作. b.  查询方法: 执行查询动作,并返回值. 2  一个类中有好几个地方都用到了一个或多个全局变量,可以考虑把全局变量封装到另外 ...

  4. 测试工程需要明白的Monkey测试

    App稳定性测试 稳定性测试就是指软件长时间的持续运行,系统版本是否稳定,是否能否持续的为用户提供服务. 指标: 异常的次数 异常的频率 App的稳定性测试如何实施? 首选Monkey Monkey是 ...

  5. 测试驱动开发(TDD)及测试框架Mocha.js入门学习

    组里马上要转变开发模式,由传统的开发模式(Developer开发,QA测试),转变为尝试TDD(Test-driven development,测试驱动开发)的开发模型.由此将不存在QA的角色,或者仅 ...

  6. Visual Studio 2012 Fakes框架测试驱动开发TDD教程

    一.前言 最近团队要尝试TDD(测试驱动开发)的实践,很多人习惯了先代码后测试的流程,对于TDD总心存恐惧,认为没有代码的情况下写测试代码时被架空了,没法写下来,其实,根据个人实践经验,TDD并不可怕 ...

  7. TDD学习笔记【一】----序言

    提到TDD大多数程序员的疑问: 为什么我要写两份程序? 为什么我要写程序来验证我已经知道的结果? 我又不是SA,可能也不懂domain,怎么产生一开始的test case? 最后的感想就变成是: 1. ...

  8. 收藏清单: python测试框架最全资源汇总

    xUnit frameworks 单元测试框架 frameworks 框架 unittest - python自带的单元测试库,开箱即用 unittest2 - 加强版的单元测试框架,适用于Pytho ...

  9. 转 python测试框架最全资源汇总

    转自: http://www.testclass.net/list/python_list_1/ xUnit frameworks(单元测试框架) frameworks 框架 unittest - p ...

随机推荐

  1. Mybatis操作数据时出现:java.sql.SQLSyntaxErrorException: Unknown column 'XXX' in 'field list'

    这个错误比较重要,而且很常见,故单独进行说明: Mybatis出现:Unknown column 'xxx' in 'field list' 先来看一下程序的内部: dao.addUser(" ...

  2. JS-T

    取整函数ceil:向上取整floor:向下取整round:四舍五入 js获取当前页面信息this.location.href JS打印对象 var data = JSON.stringify(res. ...

  3. 1 初识数据库操作 1 MySQL 数据库

    1 数据类型与表的管理 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库. 常见数据库:Oracle.DB2.SQL Server.Postgre SQL.MySQL. 1.1 相 ...

  4. Macaca环境搭建(二)----uirecorder PC录制

    上一节我们安装好了macaca环境,这节我们来进行PC录制: 一.安装UI Recorder 命令窗口输入:npm install uirecorder mocha -g 二.初始化配置 1.创建文件 ...

  5. linux下常见的性能分析工具

    转载于:http://bian5399.blog.51cto.com/3848702/834715 性能调优的主要目的是使系统能够有效的利用各种资源,最大的发挥应用程序和系统之间的性能融合,使应用高效 ...

  6. Java小知识----List复制:浅拷贝与深拷贝

    原文地址: https://blog.csdn.net/demonliuhui/article/details/54572908 List浅拷贝 众所周知,list本质上是数组,而数组的是以地址的形式 ...

  7. C++练习 | 铁轨问题

    #include <iostream> #include <cmath> #include <cstring> #include <string> #i ...

  8. solr学习笔记-增加mmesg4J中文分词

    solr版本6.1.centos6.7.mmesg4j版本2.30 solr安装目录:/usr/local/solr-6.1.0 1.下载mmesg4j包: 地址:https://github.com ...

  9. 福建工程学院第十四届ACM校赛G题题解

    外传:编剧说了不玩游戏不行 题意: 有n个石堆,我每次只能从某一堆中取偶数个石子,你取奇数个,我先手,先不能操作的人输.问最后谁能赢. 思路: 这个题仔细想想,就发现,取奇数的人有巨大的优势,因为假设 ...

  10. [Next] 三.next自定义服务器和路由

    next 服务端渲染 实际上,next 一直都是执行的服务端渲染.npm start执行的是 next 自带的服务器来运行你的应用.next 是支持自定义服务器的,同时能够支持现有的路由和模式,你可以 ...