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

前言:

  关于敏捷测试这块内容,本来之前一直想写的,但是自己一直觉得还没法归纳得很好,不过最近有个客户到我们公司来拜访时,也提到了他们公司要把测试这块工作弄好的事情,谈了几个小时,相互交流了一下意见,总算双方都有点收获,所以接下来几天想结合我们公司的实际情况介绍一下敏捷测试的一些相关知识,当然咱的想法也并非很权威啦,仅供参考。

  正文:

  谈到敏捷测试,可能有些人不一定听到过,不过很多人应该听到过敏捷开发吧,其实从广义来讲,测试也是属于开发过程的一部分,测试完成以后开发过程才算真正完成,所以敏捷测试其实也可以算是敏捷开发的一部分,之所以大家不怎么关注,一方面国内对测试行业的关注度远远低于开发行业,第二个方面其实也跟第一个相关,就是敏捷开发先流行起来,再加上国内的开发、测试比例,所以敏捷测试这个概念就显得不怎么流行了。不过,情况也在慢慢变化,从我了解到的情况看,越来越多公司已经在关注这一块了。

  大家在百度上搜索一把,可以看到敏捷测试的标准定义:

  首先敏捷测试(Agile testing)是敏捷的一种,原有测试定义中通过执行被测系统发现问题,通过测试这种活动能够提供对被测系统提供度量等概念还是适用的。

  敏捷测试是遵循敏捷宣言的一种测试实践:

  1、强调从客户的角度,即是从使用系统的用户的角度,来测试系统。

  2、重点关注持续迭代的测试新开发的功能,而不再强调传统测试过程中严格的测试阶段。

  3、建议尽早开始测试,一旦系统某个层面可测,比如提供了模块功能,就要开始模块层面的单元测试,同时随着测试深入,持续进行回归测试保证之前测试过内容的正确性。

  稍微研究一把,大家就会知道,虽然加个敏捷两字,其实测试还是原来的测试,以前大家在软件工程里提到各种测试方法(等价类划分法、边界值分析法等等)、测试分类(白盒、黑盒等等)还是继续适用的,所以放心,如果你是测试工程师,不懂敏捷测试理论也不会让你丢了测试工作的,你只要能发现Bug,发现好Bug,发现很多Bug就Ok了。当然对于测试主管甚至再高层就不这么想了,呵呵,为啥原因呢,下面会慢慢为您解答。

  那既然测试还是原来的测试,那还要敏捷测试干嘛呢,其实跟敏捷开发一样,敏捷测试你也需要从它的发展来理解它。很久很久以前(当然,也不是太久,也就是上个世纪的事情),即使在国外也还沉醉在瀑布开发中,所以在那个时候,测试呢,就一直躲在开发过程的最后,产品开发完成了以后,就开始大规模测试,测试完成,软件就发布了,就像练功夫一样,一气呵成,打完收工。

  当然,后来发生的事情,我们现在也早已知晓,(唉,历史啊历史,人就像历史长河中的一滴水,如果不能扬名,那唯一结果就是被蒸发被遗忘,悲哉!(感慨一下先!)):

 一开始的软件一个软盘就能搞定,没有多少代码量,所以出问题的几率就不高,测试放在最后一点问题都没有,但是随着软件越来越庞大,大家就慢慢发现问题了,如果一开始设计有问题,或者有重要功能做错了而直接影响到其他相关功能也出错,这类事情只能在最后的测试阶段才能被发现,虽然说测试就是为了发现Bug,但是这类问题发现得太晚带来最直接的结果就是代码需要大改,时间需要延期,成本需要增加,下面这个图就可以看出来,一个Bug发现的越早修复的成本越小,为什么呢,因为你想好了,一个Bug其实也就是一些代码,刚写的时候,它可能比较独立,或者只跟少数几个其他功能有关,也相对好找,但是一旦到了中后期,这部分代码可能被其他很多功能调用,你修了这个地方,那个地方调用时可能就会出问题,所以你就得把相关地方都去看一遍,如果漏了一个地方,不好意思,可能是个大Bug,所以你需要花费大量时间,体力,财力去修复,如果你在刚做完的时候就发现了,轻车熟路马上就可以改完,五分钟的事情。

  我们公司以前(大约2006年之前)也是采用瀑布模型来开发产品的,所以测试当然也是瀑布测试了,对于测试人员来说,最直接的现象就是,平常很空,开发完成的时候就忙得要死,一轮接着一轮的测试周期,所以经常连着几周都在测试,经常加班;而开发呢,开发时很忙,测试时更忙,因为一方面有大量Bug过来,另一方面很多Bug都是很早之前产生的,要修复起来特别麻烦,还得去查原来的代码,焦头烂额的,更郁闷的是,经常发现有些功能没做对,不是客户所要的。所以也许开发过程就一个月,但是测试过程却花了两个月,最后到头来,客户说,这个产品不是我们想要的。

  痛定思痛,做些改变吧,奥巴马都说了,We need CHANGE,所以大家就想啊想,想出一个V模型来,什么是V模型呢,且听下回分解。

  (未完待续)

本文出自seven的测试人生公众号最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-12-06 08:20:45

敏捷测试理论以及实践(1)的相关文章

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

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

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

2.编码阶段: 完成了需求设计阶段,就要开始进入编码阶段了,虽然说开发与测试需要同步的,但是功能还没做完也没法同步去测吧,不过还是有事做的,就是可以同步开始写测试用例,这个就用到DevTest工具了.DevTest主要用于管理测试用例,以及根据测试用例来进行在不同环境下.不同时间下和不同的范围里进行的手动测试与自动测试,并且可以生成报表供评估测试质量和产品质量. 也许有人有疑问,敏捷测试还需要测试用例?我的答案还是"是"又"不是". 先说"不是"

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

以前在<结合工具来实现敏捷开发>这篇文章中,我已经谈到了我们公司目前的开发情况,在这里也不再重复介绍了,反正主要就是用 TechExcel的 DevSuite 系统来进行管理整个流程.至于很多人可能会问,既然敏捷了为啥还要用工具,其实我是这么想的,敏捷开发/测试,如果对于简单的项目而言,用工具反而会效率下降,因为就这么几行代码,这么几个功能,一下子就可以弄好了,弄个工具反而浪费时间. 但是对于稍微大的项目而言,可能不用工具就没法很好地管理项目了,比如说好了,一个团队在一个迭代周期中做了10个功

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

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

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

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

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

所谓的V模型,其实是对瀑布模型的一种修改,也算一个Change吧,详见下图: 由于瀑布模型对于软件的需求分析与设计阶段考虑不足,导致可能会出现严重的设计问题,最后交付到客户手里才会被发现,所以V模型就考虑到这点,针对开发的各个过程都会有相应的测试环节,比如用户需求会对应验收测试,需求分析和系统设计会对应确认测试和系统测试等等(详见上表),这样子起码在交付前会把用户需求方面的问题覆盖到,不太会出现说这个产品不是客户想要的这种问题. 但是缺点也是显而易见的,跟瀑布模型一样,测试过程还是放在了最后环节

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

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

一起谈.NET技术,应用Visual Studio 2010辅助敏捷测试(上)

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

敏捷测试中,我们的测试组织应该如何建设

但如何真正在项目中做到敏捷,除了方法论之外,还有各种外部条件的制约.而现实是很多研发团队只注重了方法论的学习,而没注意组织结构应该如何变化才能适应敏捷测试的需要.有的人可能会说,敏捷强调的不是人人都应该是开发和测试吗?但这只是在理想情况中.真实项目中,肯定还是存在测试和开发的分工的.所以本文想谈谈在敏捷测试中,我们的测试组织应该如何建设,才能合理将工作进行分工,充分发挥组织内部每个人的长处.即在敏捷测试环境中,我们应该用什么样的人,去做什么样的事,才能获得最大的效率. 近些年,在软件项目中非常流