从闫辉的博客看到的文章< 困惑的软件测试员>,其实我的评价很简单:不是人中龙,不要做测试。普通人做测试没有前途。原因也很简单。让我们做个小测验:10秒钟,快!举出你的10个偶像。里面有靠做测试扬名立万的么?要求太高了?那好,举出10个你最常读的博客。里面有做测试的么?我的必读博客里倒有两个是专做测试的。可惜他们的文章都和开发有关。换句话说。他们的专业不是测试。他们是程序员,而他们的业务领域是测试。不过这个话题我们押后再说。这个测验没有普遍意义?那好,让我再举一点某业界龙头公司的例子。该公司有大概50个院士。猜猜多少个是搞测试的?让俺告诉你:1个。就这个也是特殊情况。该院士负责某个大型操作系统的系统测试,对系统了解的程度已经到了客户每次来访都点名要见他的地步。所以这个例子旁证了不要轻易做测试的论断。院士以下是Distinguished Engineer(DE),DE以下是Senior Technical Staff Member(STSM)。该公司一个2000来人的研发实验室里10来个STSM,四五个DE,其中有多少是测试出身?答案是0。STSM以下是Senior Developer(SE)。那个实验室一个部门两百多号人,其中测试部门测试人员近百。里面非经理的SE有多少?答案还是0!再看一个数据。那个部门的测试分部过去三年的专利数加起来还没有一个组一年的专利多。质量就更不用提了。而且要知道,这个公司已经非常重视测试。他们的测试人员工资也好头衔也好,都和开发人员一个等级。公司有专门的测试部门。测试部门有充足的预算。测试有严格的流程。每年公司都有针对测试人员的名目繁多的奖励。公司里外的政策都宣传测试人员有前途,测试人员和开发人员同等重要。但那又如何?同样做技术,搞测试的获得提升的机会就比做开发的小得多。你怎么和别人比?发表的文章比人少,得到的专利比人少,抛头露面的机会比人少,讨论产品规划设计的机会比人少!现实摆在面前:如果普通人有志于技术,做测试就是死路一条。
大部分人做的测试工作都是黑盒测试。项目一紧,大部分工作时间都花在单调重复的鼠标敲击上了。经理们不会认为你的工作有什么难度。既然没有难度,为什么要表彰你的工作?是,测试里仍然有挑战性。问题是,你得在做完手头的工作后,花额外的时间,才有机会去做那些“有挑战性的工作”。以前我在测试部门时,人人受提拔的机会都来自于完成所谓的“扩展项目”。这难道不讽刺么?做完手头的测试工作是你的天职。要想得到表彰?做与测试无关的项目吧!我进公司那年年末测试部门里得到最高评价的测试员根本就没有做测试。他负责开发我们的自动化框架。你完全可以想象这件事对我们士气的打击:原来要想挣表现,就不要做测试!第二年测试人员为抢”扩展项目“不惜耽误测试,不用我说大家也能猜到吧?
有人或许说,找到隐蔽的错误不是件容易事,也需要天赋,也需要努力。非常正确!可惜,经理们不懂。他们也没法衡量你的绩效。程序错误少了,是程序员开发得力。软件发布后没有多少错误,是你该做的。软件发布后有很多错误,你他妈怎么做的?换言之,没人知道你到底为发现一个错误付出了多少。没人关心一个错误的重要性。这也正常:当错误被发现,这个错误也就不再神秘。人们也就想当然地认为这个错误很容易被发现。既然很容易被发现,那关你测试员什么事呢?
做测试还想保持技术上的精进就更不容易。专家是在征服挑战,学习教训的过程中反复磨练出来的。当你把青春抛洒在反复敲击鼠标左键的时候,你的同事正在为一个算法问题殚精竭虑,正在为一个设计问题激烈讨论。当你的汗水滴在千篇一律的测试文档上的时候,你的同事正在为一门新技术的规格书字斟句酌。长此以往,谁会站在技术的领跑线上?而我当测试员时听过的最大的谎言就是“程序员只知道某个具体模块的实现,而测试员和多个模块打交道,有大局观”。谎言,不折不扣的谎言!做了程序员就知道,测试人员知道的你都得知道。他们不知道的,你也得知道。既然当程序员能学到更多东西,为什么要做测试员?
不要以为我瞧不起测试。恰恰相反,我觉得测试事关软件成败,至关重要。我只想说,现在少有公司能给予测试人员正确的待遇。衡量测试员工作比衡量程序员的工作更加困难(大概这也是为什么startup里测试员反而又前途吧,因为他们的工作表现能被相对容易地公正评价)。许多优秀的测试人员看不到光明的前途,纷纷离开测试部门,甚至转行,遭受损失的只是公司。
写下这点小小的感想,也算纪念我做测试那一年半的酸甜苦辣。