总是很难忘记生活的点点滴滴, 脑海中总是闪过好多的曾经, 美好的回忆, 但成长中却让我们失去了很多, 很想在忙碌的生活中淡淡忘记; 不曾放低的东西却始终让我忘记不了, 但我还要在忙碌的生活中继续生活!

测试人员的误区:迷信自动化

上一篇 / 下一篇  2009-03-05 11:26:21 / 个人分类:转载好东西

 终于有时间总结一下过去几年在微软测试经验,谈谈对测试自动化的看法。
  先说说为什么做测试的人喜欢搞自动化。
  第一,自尊心。计算机科班出身的人都喜欢作开发(Dev)。做测试工作经常是身不由己,可是测试工作很多时间不需要编程,于是做测试的人想方设法写些程序,以显示自己也会编程。结果往往是欲罢不能,测试自动化程序越写越多,越写越复杂。后面我会谈谈测试自动化框架复杂的代价。
  第二,为了出成绩。很多测试组为了向管理层展示成绩,往往要拿出例如测试自动化达到80%,程序覆盖率达到90%。要我说,这些都是Bull Shit。就象小平同志说的“实践是检验真理的唯一标准”,我认为在测试中“用户不出问题是检验质量的唯一标准”。自动化做的再多,用户出了问题,也是白搭。另外,一个人就可以做的测试,自动化往往需要两个,三个。倒是解决就业的好方法。
  我对测试自动化的认识也有一个变化的过程。刚刚入行时也是很相信自动化,想方设法写一些从头到尾自动化的框架,觉得自动测试很过瘾。到微软的Portal Media Center组后也是和另外两个人做了一个相当复杂的用户界面的自动测试。其实现在想想,用自动测试发现的问题基本上可以一个人用手工测试完成,最多写些简单的测试辅助工具就可以完成。有些人可能会说自动化可以为产品的下一个版本节省测试时间。其实Portal Media Center 下一个版本出来时,所有户界面完全变了,80%以上的自动测试程序都需要改动。做完第一个版本,我们三个人全都走掉了。后面来的人往往宁可自己再写一套,也懒得改以前人的程序。自动化的浪费就是这样造成的。想说服别人用你开发的自动测试框架是很难的,所有人都想另搞一套。
  下面分几点讲讲为什么要放弃对测试自动化的幻想,和怎样进行低成本的有效测试。如果你还不能同意我对测试自动化的看法,可以去微软员工的Blog看看为什么Windows测试组用的WTT测试框架被称作“Waste of Tester Time"。我最基本的观点不是说测试自动化不能测出bug,而是想问:一个比较复杂的测试自动化框架所造成的人力浪费,值不值得最终的结果?如果不做测试自动化,能不能达到同样的效果。以我的亲身经历,去年我的测试组两个人对应开发组五个人,项目经理三个人的工作量,去年做了好几个Release,Hotfix只有两三个。我们旁边的测试组七八个人对应五六个Dev。他们又是自动化,又是搞程序覆盖率,好不热闹,Hotfix 也不少。按一个人的人工成本12万美元,我们组省至少三个人的成本36万美元。
  第一,不要指望自动化能帮你找bug。软件bug和生物的bug很像,测试的规律是bug少的地方bug越少,bug多地方越找越多。做测试自动化,往往在开发自动化的时候,该发现的bug就发现了。自动化开发完成,再想发现更多bug就很难了。这是无论你怎样跑你的自动化,也不会发现新的bug。
  第二,不要指望自动化对Regression Test的测试的贡献。软件的特点是如果一次做对了,以后永远不会出错。当程序出现变动时,只要针对变动的部分测试就可以了,以前测过的东西,如果和变动没有关联就不会出错。相反如果,程序出现很大变化,自动化可能完全不能用了。
  第三,自动化不如测试工具加手工测试。我不建议测试人员作全面自动化,相反我建议测试人员多做小巧灵活的测试工具。自动化往往需要自动判Pass或Fail。 想想你如果测试用于生成
http://www.microsoft.com/的页面的产品,你如何判断页面框架生成的正确?很多东西是动态产生的,你很难确认所有的内容的正确性。如果你自己用这个产品手工做个页面,用肉眼很容易判断所有相关和不相关的内容生成的正确性。我就是用这个方法在工作中发现了网页上谁也想不到的bug, 如果用自动化很难在测试阶段发现这个bug。
  第四,软件项目的生命周期就定了自动化的无用。现在很多网络应用项目的生命周期都很短,一个项目从生到死不过两三年。死的定义是项目进入Sustain Engineering维持状态。自动化原来的一个主要目的是使软件测试的未来阶段越来越容易,成本越来越低。可是当一个项目死掉了,自动化还有什么用。而且最新的敏捷开发,软件的要求,程序,接口,界面在不断变化,自动化怎么可能跟得上变化。与其去搞自动化,不如多理解变化,直接测试变化的东西。
如何进行有效测试?
  第一,测试人员的自信心可以建立在读程序的能力上。在一个项目中,开发人员的工作是研究新技术,写出最好的程序。测试人员应该在开发人员研究的基础之上,更好的理解新技术,读懂程序。看懂程序可以使测试工作非常高效。不懂内部程序的人,可能会设计三十个test cases, 才能找到一个bug。 懂程序的人每个test case都可能发现一个或多个bug。 我有30%的bug都是读程序读出来的。由于对开发人员的程序有很深的理解,即使release后出了问题,也能很快理解问题出在什么地方,是否是bug。
  第二,测试人员写测试程序的时间应该尽量最小化。测试人员测试的时间分配应该是, 30%读程序,20%写测试程序,50%写Test Cases和运行Test Cases。好的测试员的工作重点应该放在理解要求,理解客户需要,思考在什么条件下程序会出错,而不是思考如何去自动化。如果时间都放在设计自动化上了,必然会影响测试,分散测试资源。测试人员应该边读程序边测试,读程序帮助找到好的Test Case,测试帮助验证理解和猜测。
  第三,测试人员要学会讨价还价。很多时候项目经理,开发人员搞得东西不是客户马上需要的,或许是永远用不到的。测试人员可以和项目经理研究先测什么,后测什么,那些不测。比如,我做的一个项目,我发现30%的功能是现在用处不大,所以我直接告诉项目经理那些东西我不会去测的。事实证明,这样做节省了很多人力。
  第四,测试人员要多花时间参与设计。测试人员一定要紧跟项目经理和开发人员的要求变化和设计。理解每一个要求的影响。在每个项目周期中,去比较当前版本和以前版本的所有程序变化。重点测试变化。
  总之,少做自动化,多写小工具,读懂程序,是高效省钱的测试方法,除非你钱多得没地方花。下次有谁建议搞什么测试自动化构架,告诉他“That is bullshit”。

TAG: 性能测试 微软 测试知识 测试工具 自动化

Celinayuyu的个人空间 引用 删除 Celinayuyu   /   2016-04-01 15:22:54
5
龙猫的世界美啦 引用 删除 refresh_jiao   /   2015-01-23 13:33:14
自动化适合比较**的版本迭代测试时候用,一般情况下用的都不多,大部分还是要看测试设计和手工,再者就是性能,自动化确实不是最重要的,现在大部分软件都是新品更加不适合自动化
UU1983的个人空间 引用 删除 UU1983   /   2013-08-13 15:14:07
5
T_ifk的个人空间 引用 删除 T_ifk   /   2013-01-10 15:40:39
呵呵   挺好的,不过   如果测试的时间允许,我想自动化测试和手工测试结合起来应该更好吧
T_ifk的个人空间 引用 删除 T_ifk   /   2013-01-10 15:39:39
5
引用 删除 zjgrape   /   2011-12-30 11:42:59
3
引用 删除 barcating   /   2011-04-08 17:58:09
有同感
引用 删除 banweima   /   2010-10-27 11:20:23
初学三年,天下去得;再学三年,寸步难行

楼主要知道没有任何一种方法可以解决所有问题,只是用法不同,适用范围不同,程度不同

当然楼主能做完再思考总结,已经是很不错的了。比很多盲听盲从的人好多了。

希望可以多经历多思考
10160691的个人空间 引用 删除 10160691   /   2010-10-19 10:37:50
-5
Elwin.Rommel 引用 删除 koller   /   2010-08-31 11:40:35
有一点我觉得值得商榷,自动化的目的是什么?如果用自动化去做系统测试,期望发现新BUG,那肯定不现实,大多数时候,自动化都是用于回归测试的,目的是保证新的功能不会影响到历史功能,如果从这个角度来看,自动化还是很重要的
引用 删除 dlh2002   /   2010-03-31 09:02:34
自动化测试要掌握其中的奥妙,用好了能节约大量的成本,用不好只能是浪费人力财力
引用 删除 Ruskee   /   2010-03-18 11:32:56
我也在微软做测试,不同意作者有关自动化对于regression的价值评价,我认为自动化恰恰是很好的防止regression的方法。有时候,不能依靠dev的code review,我就经常通过自动测试发现regression bug。
ET是很重要的,微软从来没有否认ET的价值。
项目的生命是2,3年,但产品的生命是十年,这剩下的7,8年,就是要靠automation来测试的。别指望SE通过bug bash来验证release前的代码。
最后的总结挺好的。除了不同意对automation的评价。PS,我这边自己设计test case,实现是让vendor去做的。所以,在automation上花的时间其实不多。
引用 删除 Ruskee   /   2010-03-18 11:32:43
3
Chain.Dai.China的个人空间 引用 删除 Chain.Dai.China   /   2010-02-04 22:23:18
我喜欢微软,我觉得微软的都是牛人
shanhulq的个人空间 引用 删除 shanhulq   /   2010-01-17 21:34:28
5
引用 删除 mienx   /   2009-09-09 18:44:22
5
引用 删除 fyy_abc123   /   2009-08-27 16:45:47
那学了自动化测试干嘛咧?
生于忧患 死于安乐 引用 删除 chaotiancaitl   /   2009-06-16 16:37:59
真是不错的文章,觉得非常有道理!
 

评分:0

我来说两句

Open Toolbar