大话敏捷测试

敏捷这个话题似乎热了好多年,随之也就自然地有了敏捷测试这个术语。

  说到敏捷,大家一定听过不少相关的演讲,看到不少相关的书籍,不过不管有什么新的技术,新的流程,归根结底都是遵循着敏捷宣言并以敏捷原则作为根本。就像Scrum开拓了一套敏捷项目管理的框架,XP指导着敏捷开发中的工程实践一样,敏捷测试也就是一组指引测试工作在敏捷团队中的一些最佳实践。

  首先,敏捷测试非常强调和多方的合作。在瀑布开发模式下,测试人员一般是根据需求文档和设计文档来设计测试用例,然后等功能开发完成,软件交付到测试人员手上才开始正式的测试工作,这样对于测试的所有输入就都是文档。而敏捷测试让测试人员在软件开发的最初就加入团队,为的就是使测试人员更加地靠近产品本身,对于产品经理的需求和开发人员的设计有深入的理解,甚至能和后续的部署和运维团队尽早地接触,了解到产品的全方位。

  再次,尽早地使产品可以测试起来,越早越好。测试工作不再是软件开发中的某一个环节,而是时时刻刻贯穿于软件开发中。实现这一点的基础就是软件的可测性,而可测性又包括至少两点

  有较为明确的需求指标(这里使用了“较为”两个字是因为有些非功能上的指标前期可能的确不太明了,但是随着产品开发的进行,最终还是会慢慢清晰的),这样才能对测试结果进行判定

  有适合测试的接口,这样才能方便的设计和执行测试用例,并能最大规模地发挥测试自动化的优势

  之后,使团队一起加入测试。千万不要孤军奋斗,软件测试是一件极其需要团队力量的过程,让策划/开发/运维甚至是产品经理一起加入。

  开发需要为自己的代码负责,单元测试是必不可少的

  编写用户验收测试用例的时候要邀请策划和产品经理,避免对于需求的理解错误

  请运维一起加入产品的部署测试,他们有着更多的生产环境的实际操作经验

  当然每个角色对于加入的方式可能会不太相同,但是重要的一点就是把所有的测试环节都对团队成员透明,让他们知道产品会进行哪些测试,已经进行了哪些测试,当前的测试结果怎么样。

  在测试可以跑起来之后,尽量频繁地测试。说到这个,测试自动化很自然地被提上了日程。注意,这里用的是“测试自动化”,而不是“自动化测试”。个人认为测试自动化不仅仅是把测试用例通过编写代码脚本化并通过机器运行起来,而是包含了一套对于测试过程的自动化,包括测试环境的自动部署,测试数据的自动生成,测试脚本的自动执行和测试结果的自动报告等等。好了,回到“频繁地测试”这个话题,我们需要多频繁呢?越频繁越好!

  每一次的代码(产品代码或是测试代码)提交或是每一次的配置更新都有潜在破坏软件的可能性,都是需要测试的

  产品在不同部署环境中的表现往往是不可预料的,尽可能多的对可能的部署环境进行验证

  即使部署环境和产品都没有变化,也需要重复测试。这个可能会有些疑问,既然什么都没变,已经跑过通过的测试还有必要重复执行吗?答案是“有必要”

  · 产品在刚启动时和运行了一段时间之后的表现是完全不同的,看似重复执行的测试其实已经是运行在不同状态下的

  · 测试的执行往往是按照一定顺序的,依据“杀虫剂”原理,系统是会有一定“抵抗力”的,这时可以不采取简单的重复测试,而是打乱测试顺序(虽然测试用例的设计在原则上是独立的,但是在实际中对于软件产品的内部状态变化是不可预知的)

  上面这些只是敏捷测试个人的一些理解,其中并没有涉及到具体技术层面的东西,更多的是一种思想层面对于软件测试的转变

  · 软件测试是软件开发的一部分

  · 软件测试是团队成员的职责

  · 软件测试需要尽早,自动,频繁的执行

  也正是因为有了这些需求,TDD/ATDD/CI才会被团队所接受,慢慢变成了一种标配

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-09-23 06:01:36

大话敏捷测试的相关文章

敏捷测试中理想的测试组织

近些年,在软件项目中非常流行一个词--敏捷.大大小小的项目,通常都包含着"敏捷"这个 关键字.其实敏捷本身是一种优化的思想,是软件工程发展到一定阶段后的产物.面对风云变幻的市 场,都希望迅速响应市场或客户的变化.但如何真正在项目中做到敏捷,除了方法论之外,还有各种 外部条件的制约.而现实是很多研发团队只注重了方法论的学习,而没注意组织结构应该如何变化才 能适应敏捷测试的需要.有的人可能会说,敏捷强调的不是人人都应该是开发和测试吗?但这只是在 理想情况中.真实项目中,肯定还是存在测试和开

敏捷测试简介

时至今日,还讨论这样一个老话题,是否感觉老调重弹?因为两年前(2010年底)时任谷歌中国测试经理的段念先生就 写了一篇文章<什么是敏捷软件测试>(刊登在InfoQ网站上[1]), 就已经谈到这个话题,"敏捷软件测试更多的是一种 理念,而非过程".在2011年,我自己也写了一篇文章<敏捷测试的思考和新发展>,刊登在<程序员>杂志上,谈到"在 BDD.ATDD和TDD最根本的.共同的思想基础上,构成一个全新的.更完善的敏捷测试框架"[

敏捷测试理论以及实践(7)

5.传统测试阶段 当开发完成了所有的功能点,测试那个时候也差不多完成了这些功能点的测试,我们就会有一个阶段性的最终版给客户评估,让客户看看需要的功能是不是都已经可以了,如果觉得没什么问题,一般情况下就不进行功能添加与更改了.(当然,真的要更改我们还是会欢迎的,不过一般客户也知道,频繁的更改不能保证产品的质量,所以到最后他们一般有不紧急的更改也会要求放在下一个版本里的) 到目前为止,真正意义上的敏捷测试阶段其实已经完成了,要开始进入一些传统的测试了,比如系统测试,性能测试,压力测试等.这些就会用到

敏捷测试理论以及实践(3)

现在先来总结一下到底上面说的模型存在着哪些问题: 1.客户生气地说:这个产品好像不是我们想要的吧!早知你们给我这样子的产品,我才不会下单了,你们也早点跟我说这个产品是这样子,到现在才给我看,浪费我时间,精力,我不买了!(客户到交付后来发现产品与当初他们提的需求不一致,所以很生气,后果很严重) 2.设计团队激动地说:都开发了这么长时间了,你们还要改功能加功能啊,这样子会影响到很多其他功能的,会影响最后发布时间的,而且最后的质量如何,我不能保证.(老兄,我出钱买你们产品的好吧,我想加什么功能改什么功

应用Visual Studio 2010辅助敏捷测试(下)

随着需求的不断变化和迭代的深入,代码库不可避免的会有频繁的签入和签出,此时测试人员一项很重要的任务就是要预防回归问题发生.执行手工测试用例可以帮助我们预防及和发现回归问题,但是它的执行效率太低,无法胜任频繁执行的要求.这时就我们需要考虑采用自动化测试用例完成这项工作.决定是否采用自动化测试是有很多因素决定,其中很重要的一条就是自动测试的收益,下面的公式从概念上解释了如何来计算这个收益,当收益值大于1的时候,实施自动化测试就是合算的:否则,就是不合算的. 图1:计算收益公式 这其中,开发和维护自动

应用Visual Studio 2010辅助敏捷测试(上)

敏捷软件开发是近些年来比较热门的话题,<敏捷宣言>四条主要精神和十二条基本准则概括了敏捷开发的基本思想.围绕着这些基本概念和思想,产生了一系列的轻量级方法,如:极限编程.测试驱动开发.Scrum.特性驱动开发等.虽然具体名称.过程和侧重点不尽相同,但是相对于非敏捷的开发方法而言,它们都更强调面对面的沟通.团队不同角色之间的紧密协作.频繁交付新的可用的软件版本.紧凑而自我组织型的团队等.敏捷开发只是提供了一个思想和方法论,而要在实际的工程中正确运用它,并真正显现出它的优点和产生实际的效果,这对于

敏捷测试的人性化优势

第一部分:潺潺流水化田园 很多人认为一个好的测试工程师必须做到在第一时间发现所有的bug,然后以最快的速度测试完毕所有的task.以显示其测试技术的高超. 您是否想过 1:在一个task完成之后,这个task就真的如此果断的结束了吗?这个task对于整个软件,会产生什么作用? 2:这个测试人员所谓的最快速度,究竟是何等的快,快的原因是什么? 就算运用了自动化或者性能测试工具,这些工具的运用是否恰如其分? 3:这些"高超的技术"会给公司带来什么?会带来公司文化的提升吗?公司的文化是什么呢

敏捷测试理论以及实践(4)

上面已经谈到了准敏捷测试模式了,离咱们所说的敏捷测试已经无限接近了,但是要了解真正的敏捷测试,还是需要回到敏捷开发上来讲,前面一开始已经说过,敏捷测试严格上来说其实是属于敏捷开发的一部分,所以敏捷开发的价值观也会同样适用于敏捷测试,那么敏捷有哪些价值观呢?总共是五个,分别是简单.沟通.反馈.勇气.谦逊. 光看这五个词,我想大部分人可能会晕乎了,不知所云的,难道敏捷就五个词能概括了?就像电影里出现的武功秘籍一样,一招就一个图,我们看了根本就不知道是啥,人家一看就能炼成神功了. 其实呢,这几个价值观

敏捷测试的团队构成

各自分离的功能小组会让敏捷团队更困难.持续的交流至关重要.团队成员需要互相亲密地工作,不管工作是通过虚拟环境还是在同一个地点完成.敏捷测试专家Lisa和Janet分享了敏捷测试团队的组织经验. 独立的质量保证团队 许多组织,不管大还是小,为了得到关于产品质量的诚实的观点,认为拥有独立的质量保证团队或测试团队是很重要的.经常有人问我们:"在整体团队运作方式中有测试组织的位置吗?"以及"如果有,是什么角色?"希望保持质量保证团队与开发团队分离的原因有: ● 拥有独立的检