敏捷测试(2)--ATDD概念
什么是验收测试驱动开发
在准备实施一个功能或特性之前,首先团队需要定义出期望的质量标准和验收细则,以明确而且达成共识的验收测试计划(包含一系列测试场景)来驱动开发人员的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概念的更多相关文章
- 敏捷开发(Scrum)与敏捷测试
1.敏捷测试流程和传统测试流程 软件测试是贯穿整个软件开发生命周期.对软件产品(包括阶段性产品)进行验证和确认的活动过程,也是对软件产品质量持续的评估过程,其目的是尽快尽早地发现在软件产品(包括阶段性 ...
- 关于scrum敏捷测试
关于scrum的一些定义 敏捷软件开发方法是一种把新增功能通过较小的循环逐步迭代添加到项目中(的项目管理方法),工作是由自我组织的团队以高效合作的方式拥抱和适应变化来保证客户需求被真正满足的方式来完成 ...
- 敏捷测试模式之Scrum及其实践
一. 敏捷开发模式简介 敏捷是近年来软件研发领域很火的一个词,采用敏捷开发模式的研发团队是越来越多了,尤其是敏捷模式中的Scrum更是佼佼者大行其道,这表明敏捷模式确有其好处,能给企业带来效率的 ...
- APP敏捷测试,测试和开发并行!
测试和开发具有同等重要的作用,从一开始,测试和开发就是相向而行的.测试是开发团队的一支独立的.重要的支柱力量. 测试要具备独立性,独立分析业务需求,独立配置测试环境,独立编写测试脚本,独立开发测试工具 ...
- 敏捷开发 and 敏捷测试
名词解释 agile: 敏捷的:灵活:敏捷开发. scrum: 扭打,混打:并列争球:参加并列争球. sprint: 冲刺,全速跑. backlog: 积压的工作:积压待办的事务. retrospe ...
- Testing - 敏捷测试
敏捷测试(Agile Testing) SM= Scrum Master PO= Product Owner PB= Product Backlog SB= Sprint Backlog Scrum ...
- itest(爱测试) 4.2.1 发布,开源BUG 跟踪管理 & 敏捷测试管理软件
itest 入选 2019 年度最受欢迎开源中国软件 开源工具的发展,离不开你我的支持,需要您投上宝贵的一票 去投票 itest 简介:查看简介 itest 开源敏捷测试管理,testOps 践行者 ...
- itest(爱测试) 4.2.0 发布,开源BUG 跟踪管理 & 敏捷测试管理软件
itest 入选 2019 年度最受欢迎开源中国软件 开源工具的发展,离不开你我的支持,需要您投上宝贵的一票 去投票 v4.2.0下载地址 :itest下载 itest 简介:查看简介 itest ...
- itest(爱测试) 4.1.5 发布,开源BUG 跟踪管理 & 敏捷测试管理软件
v4.1.5下载地址 :itest下载 itest 简介:查看简介 itest 开源敏捷测试管理,testOps 践行者.可按测试包分配测试用例执行,也可建测试迭代(含任务,测试包,BUG)来组织测试 ...
随机推荐
- ReactNative 4Android源码分析二: 《JNI智能指针之实现篇》
文/Tamic http://blog.csdn.net/sk719887916/article/details/53462268 回顾 上一篇介绍了<ReactNative4Android源码 ...
- RunLoop总结:RunLoop的应用场景(五)
今天要介绍的RunLoop应用场景感觉很酷炫,我们可能不常用到,但是对于做Crash 收集的 SDK可能会用得比较频繁吧.相比关于RunLoop 可以让应用起死回生,大家都听说过,可是怎么实现呢?今天 ...
- Git之(五)远程管理
开篇就提到过,Git是一个分布式版本管理系统.但是到现在为止,我们所有的演练都是在本地Git仓库.如果想与他人合作,还需要一个远程的 Git 仓库.尽管技术上可以从个人的仓库里推送和拉取修改内容,但我 ...
- Android开发技巧——定制仿微信图片裁剪控件
拍照--裁剪,或者是选择图片--裁剪,是我们设置头像或上传图片时经常需要的一组操作.上篇讲了Camera的使用,这篇讲一下我对图片裁剪的实现. 背景 下面的需求都来自产品. 裁剪图片要像微信那样,拖动 ...
- Matplotlib Toolkits:python高级绘图库seaborn
http://blog.csdn.net/pipisorry/article/details/49515745 Seaborn介绍 seaborn (Not distributed with matp ...
- Linux 高性能服务器编程——IP协议详解
1 IP服务特点 IP协议是TCP/IP协议族的动力,它为上层协议提供无状态.无连接.不可靠的服务. 无状态:IP通信双方不同步传输数据的状态信息,因此IP数据包的发送.传输和接收都是无序的. ...
- Swift中如何转换不同类型的Mutable指针
在Swift中我们拥有强大高级逻辑抽象能力的同时,低级底层操作被刻意的限制了.但是有些情况下我们仍然想做一些在C语言中的hack工作,下面本猫就带大家看一看如何做这样的事. hacking is ha ...
- SQL Server 索引维护(1)——如何获取索引使用情况
前言: 在前面一文中,已经提到了三类常见的索引问题,那么问题来了,当系统出现这些问题时,该如何应对? 简单而言,需要分析现有系统的行为,然后针对性地对索引进行处理: 对于索引不足的情况:检查缺少索引的 ...
- [ExtJS5学习笔记]第二十五节 利用window.open()函数实现ExtJS5的登陆页面跳转
本文地址:http://blog.csdn.net/sushengmiyan/article/details/40427543 mvvm方式实现登陆的博客:http://blog.csdn.net/s ...
- Dynamics CRM2016 业务流程之Task Flow(二)
接上篇,Page页设置完后,按照业务流程管理也可以继续设置Insert page after branch 或者 Add branch,我这里选择后者,并设置了条件,如果Pipeline Phase ...