最近看了一条微博,不爽,所以写了这篇博客。原微博如下:
popodai:这几天和微软测试大牛谈解散专职测试人员的问题。得出结论,测试很快会便成一种个人消遣,而不是一个职业。仿造youtest,80%的端到端测试可以像发表微博一样由外围爱好者完成。而剩下的20%由工具和程序员完成即可,不再需要传统意义上的测试团队。
看完以后不禁悲哀,测试不易,随便什么野路子的人聒噪几句,我们就得拼了老命的找各种理由反驳他。当然我这篇博客志不在此,而是接着我之前的话题说。
> 从减法到丑娃娃 做过产品的人都知道减法的重要性,而乔布斯最为人称道的不是他有多创新,而是他对垃圾产品和创意说不的勇气。如果从减法的角度我们看开发团队,就会发现: 项目经理很难做减法,因为他要为预算和合同承诺负责; 开发人员很难做减法,他们证明自己价值最简单的方法是,给软件增加功能,同时乐观的认为功能已经开发的很好; 项目经理和开发者对产品的态度,更像是孩子的爹妈:虽然孩子并不完美,但是他们最善于说服自己说孩子是完美的,因为孩子是他们生的。而独立测试人员则有点像孩子的保姆:我见过很多孩子,好看的不好看的,听话的或者调皮的,我喜欢现在这个孩子,但是如果让我说出他的缺点,那我能说出一打。 作为技术团队的负责人,我发现开发人员总是会给自己的孩子找各种借口:比如这孩子昨天还挺好看的,今天你一看突然就丑了;又比如这孩子看上去丑是因为你看的角度不对,你应该保持30度的视线入射并且仰视;而终极借口则是,这次生的就这样了,下次我一定好好生。而好的测试人员则会告诉我:这就是一丑孩子,如果你仔细打量他,你就会发现他比第一眼看上去还要丑,能吓得你晚上睡不着觉。
> 从丑娃娃到沉锚效应 至于为什么开发人员不能客观的评价自己成果的好或者坏?为什么爹妈看自己的孩子总是很可爱?其实这个问题不难回答,因为这是人的天性:
比如说,为什么闻自己放的屁感觉不是很臭,而别人的屁总是感觉特别臭? 比如说,为什么自己嘴里有一口痰不会觉得很恶心,但是如果被别人吐一口浓痰可能会恶心的很? 这种心理效应可以用沉锚效应来解释:人对事务做出判断不是因为客观因素,而是会先预订一个基点(也就是锚),然后会不断的寻找信息来强化这个锚。沉锚效应揭示了第一印象和预设立场对人的主观判断造成的影响。
关于沉锚效应,心理学家曾经做过多个实验: 比如说让不同的人快速猜测1*2*3*4*5*6*7*8的结果以及8*7*6*5*4*3*2*1的结果。通过统计发现1开头的计算的猜测平均值是512;而8开头的计算的猜测平均值是2250。 比如说心理学家做了多次的模拟推销,A组的起始价格较低,B组的起始价格较高,最终的谈判结果,发现起始价格高的组成交价格也高于起始价格低的。 用沉锚效应来解释屁和丑娃娃的问题,就会发现:人不会觉得自己很恶心,所以自己的屁就不会那么恶心。父母一定爱自己的孩子,所以才不会觉得自己家娃娃丑。 预设立场导致了人在判断问题时会丧失客观性,而开发经理和开发者一样会受到沉锚效应的影响:他们总是倾向于认为自己调试通过的程序是可以正常运行的,自己管理的项目是在正常交付的。至于真的正常吗?我们还得找一个第三方来闻屁!
> 从沉锚效应到过程质量和结果质量 有些人和公司提倡的软件质量开发负责制,有点类似于:爹妈要勇于承认自己生的孩子(软件)不如别人家的好看,或者承认这次生的(当前版本)不如上一个好看,或者承认这次怀孕生子纯粹是个杯具,应该十月怀胎再来一次(产品返工或者重构);进而他们提出既然我们知道如何做可以生出漂亮的孩子(各种市面上买得到的开发最佳实践),那我们可以搞一个优生优育的方案(完美开发方案,不少标题中含有敏捷这个词),保证恋爱(产品设计)、饮食(雇最好的人)、xxoo的质量(各种开发过程控制,有站着xxoo的也有坐这xxoo的),并不停的做基因筛查(自动化单元测试),检查发育中孩子的状况,每个步骤都可以让各种专家(各种教练)指导,于是……但是,等等,假如我们投入了这么多,做的每一个步骤都正确,生出来的还是一个丑娃娃,谁来告诉你这个残酷的实事? 测试无用派观点中最扯的一部分就是:如果我们从过程上把控质量,那么结果检验就不那么重要了(甚至有个做单元测试工具的老板说,他这个工具的使命就是代替手工测试人员)。这就好比说,如果我们做了优生优育,那么生出来的都是漂亮孩子——这很扯,随便走到一个幼儿园你就会发现丑孩子遍地都是,就像包含各种各样缺陷的垃圾软件那么多。 甚至于,如同沉锚效应所揭示的那样,一旦我们在开发过程上过度投入,随着我们投入的改进和精力越多,我们的预设立场可能越强烈:过程是先进有效的,所以结果一定是高质量的,所以我们不需要第三方来检测。这实际上更危险——如果精心构建出来的依然是个屁,那总还是要有人告诉你臭的要死。
> 为什么外部爱好者测试不能代替专业团队 至于“个人消遣”能不能提供给你真正的信息,我们可以想这样一个场景,我遇到邻居家的孩子,如果孩子爹妈问我:我家娃娃好看吗?我大概会盯着那个丑到爆的孩子,微笑着说:你家孩子挺可爱的,挺有特点的。然后在打冷战之前离开,回家抱着真正漂亮的孩子一起玩游戏——这很容易理解,孩子不是我生的,至于好不好看跟我自己有什么关系?既然目的是为了消遣,那我也没必要得罪邻居。 从心理学角度来说,一旦我们把测试的职责让渡到一个和开发成果关系不大的群体中,我们就会发现,人家根本不在乎,也就是,从利益上爱好者就不会设置测试产品的“锚”——假设产品是有错误的。 对于用户来说,他们使用软件的锚是——既然产品发布给我,那应该就能用。所以如果用户发现了软件的缺陷,他们首先会归结于自己使用方式不对,然后找其他的方法绕过去,而不管这种方式从根本上是否合理。 最典型的例子就是:应对Windows操作系统会随着运行时间越来越缓慢这个缺陷,很多用户给出的方案都是重启电脑,而非给微软提bug。
而从根本上说,这是一个缺陷,我用mac os X,经常几十个小时不重启,这才是正确的软件,不是吗?
> 不排除有素质极高的父母(开发者) 不排除有些人天生就是计生干部,懂优生优育(懂开发),也了解孩子长相的评价标准(懂测试),多年的生娃娃经验还锻炼了他们超然物外的心理素质(敢于自我否定和承担责任):你告诉他娃娃很丑,他不是生气而是兴奋“哪里难看,为什么难看,下次我们一定想办法搞漂亮”。这样的父母有,但是太少!放眼国内,绝大部分爹妈还在生头几胎(经验不足,不少刚毕业的),紧张兴奋,夜夜鏖战(项目时间紧),生怕不能按时生娃以交代父母公婆(怕项目延期),你要是跟他说孩子丑,恨不得抡起胳膊给你一肘子。 所以,不排除有些开发者,开发团队的测试可以搞得比别人好,但是绝大部分团队做不到。比如,就懂测试这一点,有几个人能说出根据iso/iec 9126,评估软件产品的质量,除了功能是否正常之外,还有哪些特性需要满足?估计大部分人不知道,但是我估计豆瓣的段念和亚马逊的陈皓应该知道。 啰嗦半天,就一句话,测试的目的除了发现缺陷,还包括提供质量信息。从第二个目的上看,我找不出比独立测试团队更好的执行者:总得有人站出来说,其实你生了个丑娃娃。
|