不要测试人员的5个(错误的)理由

Joel on Software

 

不要测试人员的5个(错误的)理由

by Joel Spolsky

Sunday, April 30, 2000

原文链接  http://www.joelonsoftware.com/articles/fog0000000067.html

 

 

      1992年,James Gleick是一个和有BUG的软件很有过节的人。Microsoft Word的新版本刚出来时候,Gleick作为科学作家认为它一无是处。他在纽约时报周日刊上发表了一篇很长的文章,辛辣的批评了Word团队对用户需求置之不理和发布满是BUG的产品。
      随后,Gleick是当地因特网服务商Panix的用户,他想要一个能自动排序和筛选邮件的功能。UNIX上需要使用procmail,这款软件非常晦涩难懂,它的界面即使是UNIX的中坚人员也承认很费解。

      不管怎么说,Gleick先生在procmail里不小心输错了一个命令,以至于他删除了他所有的邮件。盛怒之下,他决定要开办自己的网络公司。Uday Ivatury加盟了,他是一个创造了Pipeline的程序员,这对于当时来说有一点超前:它是一个款使用图形界面的商业网络程序。

      Pipeline有它自己的问题,当然。第一版没有使用任何纠错协议,因此它有时候会重复下载数据或者崩溃。就像所有的软件一样,它有BUG。我在1993年向Pipeline申请工作。在面试期间,我问Gleick先生关于他写的那片文章。"现在你处于防御这一端,"我问,"你是不是对创造一款优秀软件的困难程序有了新的理解?"

      Gleick是固执的人。他拒绝承认Pipeline有BUG。他拒绝承认它的Word一样糟糕。他告诉我:"总有一天,Joel,你也会讨厌微软。"我有一点震惊,他作为软件制造商多年的经验,而不仅仅是软件使用者,竟然没有让他理解制造一款没有BUG而且容易使用的软件是多么困难。因此我离开了,拒绝了工作邀请。(Pipeline被PSI收购了。PSI是世界上最奇怪的网络提供商,他收购了Pipeline之后就轻易关掉了它。)

      如见有BUG。CPU非常挑剔。它绝对拒绝处理任何没有明确说明的事情,而且它会以最孩子气的方式拒绝。当你的笔记本电脑离开家,它的经常崩溃因为它找不到它经常用的打印机。多么孩子气啊。它可能执行了某一行代码,代码中有一点微不足道的BUG。

      这就是需要QA部门的原因。你应该为两个程序员配备一个测试人员(如果软件需要在很多复杂配置和操作系统的环境下工作需要更多的测试人员)。每个程序员应该和测试人员紧密合作。

      QA部门应该独立且有一定的权利,它不能由开发团队管辖,实际上,QA对于任何没有通过检测而发布的软件有一票否决权。

      我的第一份软件工作是在微软;这家公司并不是以它的代码质量出名的,尽管如此它还是雇佣了大量的软件测试人员。因此我总是假设每个软件工序都有测试人员。

      大部分都有。但是还有很多没有测试人员。实际上,很多软件团队并不信任测试。

      你也许会想到80年代的质量狂热,出现了各种毫无意义的国际性的质量证书像ISO-9000和流行语"six-sigma",今天的管理人员已经知道只有高质量的产品才能生意兴隆。大部分管理人员都知道这个道理。大事他们仍然有很多不要软件测试人员的理由,所有这些理由都是错误的。

      我希望我可以向你解释为什么这些想法是错误的。如果你赶时间,直接这篇文章剩下的部分,然后出去给团队中每两个程序员雇佣一个测试员。

      以下是我听过的不要测试员最常见的荒谬的理由:

1.BUG来自懒惰的程序员:

      "如果我们雇佣了测试员,程序员就会变得懒惰,从而会写出有BUG的代码。没有测试员,就可以强迫程序员一开始就写出正确的代码。"

      如果你这么想,你要么从来没有写过代码,或者你没有诚实面对写代码是什么样子的。BUG,根据定义,是因为程序员没有注意到他们代码中有BUG才产生的。大部分时间只需要另外一对眼睛就能看到BUG。

      当我在Juno写代码的时候,我每次都用相同的方式执行我的代码。。。我有我自己的习惯,大量使用鼠标。我们非凡的高资历的测试员有不同的习惯:她大部分操作都用键盘(要严格测试界面需要使用每个可能的输入组合)。很快发现了大量的BUG。实际上,那次她告诉我界面没有反应,100%没有反应,即使我在用的时候有反应。当我看她的BUG报告时候,这是让我恍然大悟的时刻。Alt!你按住了Alt键!为什么我没有测试这个呢?

2.我的软件是放网页上的。我可以在短时间修复BUG

      好的,确实是这样,通过网页发布修复后的版本比以前通过打包软件要快。但是即使是放在网站上,而其在项目已经结束之后,你不要低估修复BUG的费用。还有一件事情,你修复一个BUG可能会引入更多的BUG。但是更糟糕的事情是,如果你想要开发新版本,你就会发现修复原来版本的BUG会非常昂贵。为了避免这种事情,你会这么想:

3.我的用户会为我测试软件

      啊,令人畏惧的"Netscape防卫"。这个可怜的公司因为它的"测试"方法论几乎消耗殆尽了它的名声:

  1. 当程序员刚写了一半,就把没有经过测试的软件发布到网站上。
  2. 当程序员说他们写完了,就把没有经过测试的软件发布到网站上。
  3. 重复这两步六到七次
  4. 把那些版本都叫做"最后版本"。
  5. 每次发布.01, .02, .03版本的时候,把令人尴尬的BUG在网页上提一下。

      这个公司是"广泛测试"的先驱。有数以百万的人下载过这些未完成,充满BUG的版本。在开始的几年,几乎所有人都使用的Netscape都是测试版本。结果,大部分人都认为Netscape的软件满是BUG。即使在最后的发布版本只有很少的BUG,由于Netscape如此可恶的让人们使用满是BUG的版本,因此大部分人的印象中它的软件是非常差的。

      另外,让"你的用户"做测试的重要一点就是他们会找到BUG,而且你能修复他们。不幸的是,不管是Netscape,还是地球上的其他公司,都没有人力能从2,000,000用户的BUG报告中分辨出哪个是重要的。当我要报告Netsacpe2.0的BUG时候,报告页面一直崩溃,就是不让我报告BUG。当时,Netscape就是不学乖。现在的"预览版"6.0的测试员,在新闻组抱怨BUG报告网页还是不能提交。几年后,问题一样存在。

      在数以亿万的BUG报告中,我敢肯定几乎都是关于5到10个最明显的BUG。埋没在干草堆中的会有一或者两个有趣的,难以寻找的BUG,但是没有人会在这些报告中寻找这些,因此就这样丢失了。

这种形式的测试最糟糕的后果就是让人对你的公司留下坏印象。当Userland发布第一个标志性的Frontier的Windows版本,我下载了并进行了试用。不幸的是,Frontier崩溃了好几次。我是严格按照他们打印的指南操作的,然而我就是没有使用超过2分钟。我觉得Userland连最小的测试都没有做的,连正常试用都不能保证。Frontier的低质量在很长的一段时间内让我觉得非常失望。

4.每个各个的测试员都不想做测试员。

      这让人很痛苦。雇一个优秀的测试员是非常困难的

      测试员和程序员一样,其中最优秀的比平均水平的优秀得多。在Juno,我有有一个测试员Jill McFarlane,她找到的BUG是其他四个程序员总和的三倍。我不是在夸张,我是计算过的。她的效率比中等的测试员高十二倍。当她辞职的时候,我个CEO发了封Email,"和QA团队剩余的所有人比起来,我宁愿Jill只在星期一和星期三来工作。"

      不幸的是,大部分优秀的测试员会对一天又一天重复的测试厌倦,因此最好的测试员会坚持3到4个月后就离开了。

      对这种事情唯一能做的就是承认它存在,然后处理它。以下是一些建议:

  • 把测试工作作为技术支持工作的提升。测试虽然很枯燥,但可能比对着电话处理愤怒的客户要好。
  • 允许测试员去上一些程序课程发展他们的事业,鼓励比较优秀的测试员使用需要工具的脚本语言的测试套件。这就比一次一次的测试相同的对话框要有意思的多。
  • 要认识到在你的顶尖测试员中有很大的流动性。一直保持雇佣人员。不要仅仅因为看上去人已经足够了就停止招聘。
  • 寻找"非常规"人员:聪明的青少年,大学生,退休人员。你可以创造一个由两到三个全职员工和一群来自Bronx Science(纽约排名最高的高中)的孩子在暑假时候来工作赚取大学学费。
  • 雇佣临时人员。如果你雇佣了大约10个人,并且让他们鼓捣你的软件几天,你会发现大量的BUG会被发现。临时人员中的两到三人可能有好的测试技巧,这些你可以雇佣来作为全职员工。也要认识到有些临时人员并不是好的测试员;送他们回家,然后继续雇佣。这就是组建临时机构的原因。

以下是建议不要做的事情:

  • 想都不要想让大学CS专业毕业的学生来你这里工作都要先在QA部门待一定的时间。我见过很多这种事情。程序员并不是优秀的测试员,而且你会失去优秀的程序员,而且程序员更难被替换。

      最后,不雇佣测试员最傻逼的理由:

5.我请不起测试员!

      这是最愚蠢的理由,而且最容易被揭穿。

      不管寻找测试员有多难,他们也比程序员更便宜。便宜很多。而且如果你不雇佣测试员,就是要让程序员做测试。如果你认为当测试员离开很糟糕,那你就对公司最优秀的程序员说"在发布之前花几个星期测试一下",等他对这一套厌倦而辞职去加入更专业的公司的时候,你就知道替换一个明星程序员有多么昂贵,100000美元啊。替换一个程序员的价钱你可以在一年里雇佣三个测试员了。

      忽视测试员是如此重大的经济上的错误,我简单的就能避免,但是很多人没有认识到。

 

 

 

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值