什么是验收测试驱动开发

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



   注意:测试人员必须是团队的一部分,并在ATDD的过程中扮演关键和掌控性的角色。



   典型的ATDD开发过程是:



    Step 1:产品负责人向测试人员和开发人员讲解用户故事,澄清他们提出的问题;



    Step 2:

     a.测试人员列出验收该功能所需要验证的所有测试场景,每个测试场景通常是概要,清晰的一句话;

     b.同时,开发人员查找和分析现有的相关设计,代码和单元测试,明确开发策略;



    Step 3:测试人员和开发人员共同评审和调整测试场景列表,达成共识;必要时寻求产品负责人的参与和确认;并且明确那些场景应该有单元测试;



    Step 4:

     a.基于通过评审和认可的测试场景列表,测试人员开始为每个测试场景创建详细的验收测试用例,准备测试脚本和测试数据;

     b.同时,基于同样的的测试场景列表,开发人员开始添加单元测试用例,并以TDD方式驱动业务实现;



    Step 5:在开发人员将完成的功能部署并交付测试人员执行测试之前,进行代码评审和根据测试场景列表快速验证自己完成的功能,甚至邀请测试人员来观摩;



    Step 6:一旦完成的功能通过构建并部署到测试环境,测试人员立刻开始执行测试脚本;



    Step 7:任何测试人员的测试中发现的缺陷都要纪录到工具,并跟踪,立刻反馈给开发人员解决,或进行其它恰当处理;



    Step 8:最后,在迭代结束,团队成员向产品负责人和客户演示完成的功能。具体演示那些场景,可以在Step 3的阶段就确定。



   由此可见,ATDD和基于单元测试的TDD一样,也充分体现了敏捷开发“业务驱动”的特点,始终从用户的业务价值出发;对开发团队来说,ATDD是由外向内,多方介入的,基于拉动策略的,并行开发测试方法;确保所有交付的产品都经过了充分的测试。



    ATDD的好处:



    1.提高交付产品的质量-因为测试人员早期介入所发挥的驱动作用,确保所有交付的功能都经过了测试,并且提高了测试的覆盖和准确性;

    2.提高TDD质量-测试人员和开发人员共同定义测试场景列表,并且经过评审和修订,可以帮助开发人员书写高质量的,覆盖完整的单元测试用例。有助于解决上面提到的TDD方法的第一个局限性;

    3.回归测试-良好定义和覆盖完整的单元测试和验收测试脚本有助于未来进行回归测试;

    4.消除浪费-以ATDD的方式,满足和通过所有的验收测试场景是开发的首要目标,可以避免团队进行一些对客户没有价值的工作,减少浪费



   在ATDD的实施中,最主要的变化和挑战在于测试人员的工作方式和流程,对测试人员提出了这些挑战:



   *角色转变-传统的很多项目中,测试人员通常都是一个独立的QA团队,与开发团队彼此协作较少,测试人员的工作以开发人员完成开发和部署为起点;在敏捷开发中,尤其是ATDD的团队中,测试人员必然是开发团队的成员,而且是处于支配作用的重要成员。测试人员不能继续是被动的,而是以自己的成果来带动开发实现;



   *沟通能力-传统项目的测试通常基于完备详细的需求文档;然而在敏捷开发中,需求都是以用户故事的简化形式定义的,测试人员要列出准确完备的测试场景,他需要更多地和产品负责人,开发人员沟通,每天紧密工作在一起,有任何问题或变化都能立刻反馈到团队其他成员;



   *探索性测试-由于敏捷用户故事地简单性,而ATDD基于预定义的测试场景列表开发测试脚本,并且部分测试场景有了自动化的单元测试,不再需要重复的手动测试脚本,因此ATDD中的测试脚本不一定能覆盖到所有的逻辑和质量标准,于是“探索性测试”成为一个新的热门话题。即在既定的测试脚本以外,对当前和相关功能进行探索性的测试,尝试去发现一些隐藏的,未知的错误,或者一些不完美的地方。这应该成为测试人员的一种工作习惯。探索性测试看似随意,也有一些可遵循的方法,比如卖点测试、破坏测试、极限测试、深巷测试等。

敏捷测试(2)--ATDD概念的更多相关文章

  1. 敏捷开发(Scrum)与敏捷测试

    1.敏捷测试流程和传统测试流程 软件测试是贯穿整个软件开发生命周期.对软件产品(包括阶段性产品)进行验证和确认的活动过程,也是对软件产品质量持续的评估过程,其目的是尽快尽早地发现在软件产品(包括阶段性 ...

  2. 关于scrum敏捷测试

    关于scrum的一些定义 敏捷软件开发方法是一种把新增功能通过较小的循环逐步迭代添加到项目中(的项目管理方法),工作是由自我组织的团队以高效合作的方式拥抱和适应变化来保证客户需求被真正满足的方式来完成 ...

  3. 敏捷测试模式之Scrum及其实践

    一.    敏捷开发模式简介 敏捷是近年来软件研发领域很火的一个词,采用敏捷开发模式的研发团队是越来越多了,尤其是敏捷模式中的Scrum更是佼佼者大行其道,这表明敏捷模式确有其好处,能给企业带来效率的 ...

  4. APP敏捷测试,测试和开发并行!

    测试和开发具有同等重要的作用,从一开始,测试和开发就是相向而行的.测试是开发团队的一支独立的.重要的支柱力量. 测试要具备独立性,独立分析业务需求,独立配置测试环境,独立编写测试脚本,独立开发测试工具 ...

  5. 敏捷开发 and 敏捷测试

    名词解释 agile: 敏捷的:灵活:敏捷开发. scrum: 扭打,混打:并列争球:参加并列争球. sprint:  冲刺,全速跑. backlog: 积压的工作:积压待办的事务. retrospe ...

  6. Testing - 敏捷测试

    敏捷测试(Agile Testing) SM= Scrum Master PO= Product Owner PB= Product Backlog SB= Sprint Backlog Scrum ...

  7. itest(爱测试) 4.2.1 发布,开源BUG 跟踪管理 & 敏捷测试管理软件

    itest 入选 2019 年度最受欢迎开源中国软件 开源工具的发展,离不开你我的支持,需要您投上宝贵的一票  去投票 itest 简介:查看简介 itest 开源敏捷测试管理,testOps 践行者 ...

  8. itest(爱测试) 4.2.0 发布,开源BUG 跟踪管理 & 敏捷测试管理软件

    itest 入选 2019 年度最受欢迎开源中国软件 开源工具的发展,离不开你我的支持,需要您投上宝贵的一票  去投票 v4.2.0下载地址 :itest下载 itest 简介:查看简介 itest ...

  9. itest(爱测试) 4.1.5 发布,开源BUG 跟踪管理 & 敏捷测试管理软件

    v4.1.5下载地址 :itest下载 itest 简介:查看简介 itest 开源敏捷测试管理,testOps 践行者.可按测试包分配测试用例执行,也可建测试迭代(含任务,测试包,BUG)来组织测试 ...

随机推荐

  1. delphi 验证码识别(XE8源码)

    如题:源码下载

  2. 安卓高级4 第三方库SlidingMenu的使用

    源码位于github上(本人fork地址):点击进入地址 效果图: 使用方法:下载源码后 解压其中的文件夹library 到任意地方 修改library中gragle 其方法参考另一个博客(建议先修改 ...

  3. 制定一个apk路径 然后跳出安装界面

    制定一个apk的路径 然后跳出界面让用户选择是否安装 我们系统有一个写好的Activity来协助我们完成这一功能 我们来看看它的清单文件 <?xml version="1.0" ...

  4. Scala:集合类型Collection和迭代器

    http://blog.csdn.net/pipisorry/article/details/52902549 Scala Collection Scala 集合分为可变的和不可变的集合. 可变集合可 ...

  5. 分布式内存文件系统Tachyon

    UCBerkeley研发的Tachyon(超光子['tækiːˌɒn],名字要不要这么太嚣张啊:)是一款为各种集群并发计算框架提供内存数据管理的平台,也可以说是一种内存式的文件系统吧.如下图,它就处于 ...

  6. memcached实战系列(四)memcached stats命令 memcached优化

    memcached提供一系列的命令进行优化的查看,方便我们调整我们的存储策略,查看我们的使用率,内存的使用率以及浪费情况.常用的命令有stats.stats settings.stats items. ...

  7. 【Netty源码分析】数据读取过程

    首先客户端连接到服务端时服务端会开启一个线程,不断的监听客户端的操作.

  8. arm-linux内核编译过程小结

    记在前面的杂七杂八 内核的生成,实际上最终的目的是生成一个binary文件zImage,大小2-5MB的数量级. 用户可以从kernel.org得到的tar.gz格式的内核源代码,此代码解压后,就会生 ...

  9. UNIX网络编程——使用select 实现套接字I/O超时

    下面程序包含read_timeout.write_timeout.accept_timeout.connect_timeout 四个函数封装: /* read_timeout - 读超时检测函数,不含 ...

  10. 【Unity Shaders】使用Unity Render Textures实现画面特效——建立画面特效脚本系统

    本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源 ...