软件随想录(local.joelonsoftware.com/wiki)-2000年04月30日 不用测试人员的五大(错误)借口 - Top Five (Wrong) Reasons You Don'

来源:互联网 发布:mac的appstore打不开 编辑:程序博客网 时间:2024/04/26 15:17

2000年04月30日 不用测试人员的五大(错误)借口 - Top Five (Wrong) Reasons You Don't Have Testers

 

The Joel on Software Translation Project:不用测试人员的五大(错误)借口

From The Joel on Software Translation Project

Jump to: navigation, search

Contents

[hide]
  • 1不用测试人员的五大(错误)借口
    • 1.11. 问题是懒惰的程序员弄出来的。
    • 1.22. 我的软件放在网络上。即使有问题也马上就能修好。
    • 1.33. 客户会替我测试软件。
    • 1.44. 有资格可以胜任的人都不想做测试人员。
    • 1.55. 我请不起测试人员!

不用测试人员的五大(错误)借口

作者:周思博 (Joel Spolsky)
译:Paul May 梅普华
Sunday, April 30, 2000
属于Joel on Software, http://www.joelonsoftware.com

1992年,James Gleick正和一个多虫软件的各种问题周旋。科学作家Gleick认为微软刚出的Word for Windows新版很可怕。他在星期天纽约时报杂志写了一长篇文章,这篇文章只能以激动来形容,整篇都在指责Word团队不理会客户的要求,交付问题如此多的产品。

稍后,他以地区Internet供应商Panix(刚好也是我的Internet供应商)客户的身份,要求提供自动排序并过滤其邮件的方法。提供这个功能的是一个叫procmail很神秘的UNIX工具,它的介面最硬派的UNIX迷都觉得难用。

总之Gleick先生不小心在procmail里打错字,结果把他所有的信都刪掉了。一气之下就成立自己的Internet连线公司。他雇用了Uday Ivatury当程序员,并且建立了Pipeline这个真的有点超越时代的公司:这是第一个有图形介面的商业Internet连线供应商。

当然啰,Pipeline也有它自己的问题。很早期的第一个版本没有使用任何错误更正的协定,所以很容易把资料弄乱或当掉。它就像所有的软件一样有臭虫。1993年我去Pipeline找工作,面试中问到Gleick所写的文章。「现在你已经身在篱笆的另一边,」我问道:「有没有稍微体会到创造好软件的难处呢?」

Gleick恼羞成怒。他否认Pipeline有任何问题,他也否认这个软件有和Word一样糟。他告诉我说:「约耳,总有一天你也会恨微软的。」他做了一年的软件开发而不再只是个使用者,这一年的经验却没有让他体会到无虫又易用的软件是多么困难的事,这实在令我有点震惊。所以我就回绝那个工作机会逃掉了。(Pipeline后来被一家世界上最奇怪的Internet供应商PSI买走,然后随随便便就被关掉了。)

软件有虫。CPU异常的守规矩,它们绝对会拒绝处理没有被明确教过的东西,而且通常会以最孩子气的方式拒绝。我的笔记型电脑在外头使用时常会当掉,因为它找不到本来找得到的打印机,多么像个嬰孩。不过原因可能是某一行程序有个极微小却又很严重的问题。

这也正是你绝对要有QA部门的原因。每用两个程序员就需要一个测试人员(如果软件需要用于多种复杂的组态或操作系统时还不只)。每个程序员都应该和某一个测试人员紧密配合,尽可能频繁地丟出自己编译的版本给测试人员测。

QA部门应该要独立并拥有权力,绝对不可以对开发团队负责,事实上QA的主管应该有否绝权,可以阻止发行不合格的软件

我第一份真正的工作是在微软;这家公司并不以高品质的程序闻名,不过它还是雇用了大量的测试人员。所以我曾经认为每个软件组织都会有测试人员。

虽然很多组织确实有,不过没有测试人员的组织还是多的令人惊讶。事实上很多软件团队甚至不相信测试。

你可能会认为,现在的经理经过80年代的品质狂热洗礼,又有各种无意义的国际「品质」认证(如ISO-9000)和「六个标准差」等术语,应该会了解高品质的产品才能获得高品质的生意。事实上他们都了解,其中大多数人已经尽量把它塞进脑袋,不过他们还是找出各种理由不用软件测试人员,而这所有的理由通通都是错的。

我希望可以对你解释这些想法的错误。如果你赶时间剩下的就别看了,直接算人头每两个全职程序员请一个全职测试人员就对了。

下面是我听过不雇用测试人员最常见的鬼叫:

1. 问题是懒惰的程序员弄出来的。

这种幻想的內容是这样的:「如果你请了测试人员,程序员就会马虎而写出问题更多的程序。不要请测试人员,就可以强迫程序员一开始就写出正确的程序。」 哇!如果你会这样想,那你不是没写过程序,就是把写程序这回事完全想歪了。由定义来看,臭虫会出现就是因为程序员看到程序代码里的问题。通常就是需要其他人才看得到问题。 当我还在Juno写程序时,每次都会用一样的方式执行我的程序。我会照我自己的习惯大量使用滑鼠操作。我们神奇的测试强者习惯有点不同:她比较常用键盘(而且会严厉地实际用所有可能的组合去测试使用介面)。这样子很快就会找出大量的问题。事实上有时候她还会说整个介面都不能用,而且是百分之百不能用,可是在我的机器上一切正常。当我看著她重现问题才恍然大悟。Alt键!你按住Alt键了!我怎么会没测到呢?

2. 我的软件放在网络上。即使有问题也马上就能修好。

哈哈哈哈!好吧,你说对了,用网络分发软件的确能比以往套装软件时代更快速的更新修正版本。不过即使把软件放在网站上,也别低估在项目冻结后修正一个问题的代价。一来你可能在修正第一个问题时产生更多的问题。更糟的是如果你检讨发行新版本的程序,就会了解在网络上丟出修正版是个相当昂贵的建议。更别提会让人因为有以下感觉而造成坏印象了:

3. 客户会替我测试软件。

啊,令人害怕的「Netscape防线」。这家可怜的公司藉著独特的「测试」方法严重伤害了自己的声誉。他们的测试方法是:
    1. 当程序帅写好一半时,不经任何测试就把软件发行到网络上。
    2. 当程序员完成时,不经任何测试就把软件发行到网络上。
    3. 重复做六到七次。
    4. 把其中某个版本称为「最终版」
    5. 每次当c|net上爆出一个丟脸的问题时就发行.01、.02、.03版。

这家公司是「广泛beta」这个点子的先驱。意思是让数百万人下载这些多虫的未完成版本。最初几年几乎所有Netscape使用者都在用某个抢鲜版或beta版。结果大多数人都认为Netscape软件的问题实在很多。虽然最终版通常问题都极少,可是Netscape已经让到离谱的人用过多虫的版本,所以大多数人对该软件的整体印象都很差。

另外让「客户」来测试的重点在于让他们找到问题然后由你来修正。不幸的是,Netscape或任何其他地球上的公司都没有人力,可以处理两百万客户的问题回报并找出真正重要的问题。当我要填报Netscape 2.0的问题时,问题回报网站一直当机,根本不让我回报(不过反正问题回报最后都会丟进黑洞)。可是Netscape并没有学到教训,现在6.0「抢鲜版」的测试人员就在新闻群组里抱怨,说问题回报网站是没办法送出报告。那么多年了!还是老问题!

不过我敢打赌,在这些多得要命的问题回报中,绝大多数都在讲相同的5到10组很明显的问题。里面可能还埋有一两个有意思又难查的问题,是某人千辛万苦才成功送出的。不过反正没人会看这些报告,所以也就等于不见了。

这种测试型式最糟的一点,就是公司会得到非常差的印象。当Userland推出主力产品Frontier的第一个Windows版时,我去下载并开始照著教学操作。不幸的是Frontier当了好几次。我完全照著教学上面的指令逐一照做,怎么样都没办法执行两分钟以上。我觉得Userland可能连最基本的测试都没做,根本没有确认教学是能动的。产品品质低落的印象让我有很长一段时间不再碰Frontier。

4. 有资格可以胜任的人都不想做测试人员。

这是个很沉痛的理由。好的测试人员非常难找。 测试人员和程序员一样,顶尖高手和一般水平的人相差一个量级。Juno有一个测试人员Jill McFarlane,她找到的问题是其他四个人合起来三倍。我是真的算过,绝对没有夸大其辞。她比普通测试人员的生产力好12倍。当她离职时,我写了封电子邮件给执行长说道:「我宁愿只有星期一和星期二让Jill帮忙,也好过让QA团队其他人全部一起测。」 不幸的是,这么聪明的人大都容易对日复一日的测试感觉厌烦,所以顶尖的测试人员通常只待三或四个月就会换工作。 这个问题唯一的解法就是面对然后想办法处理。下面列出几个建议:
    1. 把测试当作技术支持的下一个晉升工作。测试或许很沉闷,不过绝对比用电话处理愤怒的使用者好,而且可能也是消除某些技术支持人员骚扰的方法。
    2. 允许测试人员上程序设计课程拓展职业生涯,并且鼓励较聪明的测试人员,运用程序工具及脚本语言开发自动化测试套件。这比不断重复测试相同的对话盒要有趣多了。
    3. 要有顶尖测试人员经常流动的认知。积极的进行招募以保持稳定的人员流入。不要只因为暂时满额而停止招募,因为总会有下一波好景气。
    4. 找寻「非传统」的工作者:找聪明的青少年,大学里的小朋友还有退休人士来兼职。你可以用两三位顶尖全职人员再搭配一群趁暑假赚学费的Bronx Science(纽约一流高中)学生,建立出一个效果惊人的测试部门。
    5. 雇用临时人力。如果请10个临时工进来拿你的软件来玩个几天,就会发现很多很多的问题。里头可能会找到两三个测试技巧不错,值得签约转成全职人员的人。要先有心理准备,里面有些人可能做不了测试人员;这时只能请他回家再继续找新人。这也正是临时人力仲介的功用。

下面这种方法无法处理这个问题:

    1. 千万不要对来工作的电脑科系学生打歪主意,说什么「所有人都要在QA部门磨练一阵子才能去写程序。」我看过太多例子了。程序员没法子当个好的测试人员,而且还会因而损失好的程序员,而这就更难找了。

终于到了,这是人们不雇用测试人员的头号笨理由:

5. 我请不起测试人员!

这是最笨而且也是最容易揭穿的理由。 不管测试人员有多难找,还是比程序员要便宜,而且便宜多了。另外如果不请测试人员,就得让程序员自己测。再来如果你认为测试人员大量增加不太好,就想想这件事的代价吧:年薪十万美元的明星程序员受不了有人要他「在发行前留几个星期测一测」,而换去比较专业的公司。光是为找新程序员而付给猎头公司就够你一年请三个测试人员了。 吝嗇请测试人员是如此的划不来,我实在不懂为什么有这么多人认不清。

这些网页的內容为表达个人意见。
All contents Copyright © 1999-2006 by Joel Spolsky. All Rights Reserved.