什么是验收测试驱动开发

在准备实施一个功能或特性之前,首先团队需要定义出期望的质量标准和验收细则,以明确而且达成共识的验收测试计划(包含一系列测试场景)来驱动开发人员的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. for循环&len函数和range函数的运用

     函数:len() 作用:返回字符串.列表.字典.元组等长度 语法:len(str) 参数: str:要计算的字符串.列表.字典.元组等 返回值:字符串.列表.字典.元组等元素的长度 实例 1.计算字 ...

  2. 深入了解Java虚拟机和内存管理

    1.java程序的执行过程      java源文件->解析器->class文件->java类加载器->java运行时数据区->执行引擎 2.我们接下来看一下java运行 ...

  3. MySQL 连接的使用

    MySQL 连接的使用 在前几章节中,我们已经学会了如果在一张表中读取数据,这是相对简单的,但是在真正的应用中经常需要从多个数据表中读取数据. 本章节我们将向大家介绍如何使用 MySQL 的 JOIN ...

  4. 实验与作业(Python)-05 程序的控制结构

    推荐完成顺序: 1->2->3->4.1->4.4->5->4.5->4.7->6 截止日期 下次实验课之前 实验目标 if-elif-else 循环: ...

  5. Java语言程序设计-助教篇

    1. 给第一次上课(软件工程)的老师与助教 现代软件工程讲义 0 课程概述 给学生:看里面的第0个作业要求 2. 助教心得 美国视界(1):第一流的本科课堂该是什么样?(看里面的助教部分) 助教工作看 ...

  6. JS——2048(支持触屏及键盘操作)

    <html> <head> <title>2048</title> <style type="text/css"> ta ...

  7. Spark编译及spark开发环境搭建

    最近需要将生产环境的spark1.3版本升级到spark1.6(尽管spark2.0已经发布一段时间了,稳定可靠起见,还是选择了spark1.6),同时需要基于spark开发一些中间件,因此需要搭建一 ...

  8. (译)Objective-C 类属性

    翻译自:Objective-C Class Properties 译者:Haley_Wong 由于Swift 3.0 出了太多令人兴奋的新特性,人们很容易忽略 Objective-C中的小改动.苹果展 ...

  9. 无需超级用户mpi多机执行

    在之前的一篇博文中(Linux下mpi环境配置与执行步骤(Ubuntu为例) ),有讨论过如何使用MPI在两个不同的机器上执行程序,在那篇博文中使用了超级用户权限.不幸的是,有些情况下,我们不能拥有操 ...

  10. Android Multimedia框架总结(十四)Camera框架初识及自定义相机案例

    转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52738492 前言:国庆节告一段 ...