测试不仅仅是软件概念,但白盒测试仅仅是软件概念。
上面这句话足以说明白盒测试不是测试,至少不等同于测试。
认为白盒测试更牛逼的一个常用论据是白盒测试需要对代码本身更高的熟悉程度,但说这样的话的人往往没有搞清楚测试究竟需要什么样的技能。测试首先需要的是良好的测试逻辑,其次才是对产品本身的了解。
给定现象,给定需求,能够准确判断现象是否符合需求,这就叫做测试逻辑,好的测试人员能够体察模拟客户的真实体验,无比贴近地模拟出客户的判断。对产品的深入了解能够帮助测试人员更准确地设计测试用例,更高效地执行测试用例,好的测试人员对于产品的功能、性能有着不下于产品经理的了解。此二者是测试人员所需的两个重要的技能。
当局者迷旁观者清,好的评论家往往不会出自一件产品的作者。畅销小说改编的电影往往收获差评如潮就是这个道理,因为我们有太多对细节过于了解的先入为主的影评家。他们对电影背后的脚本、细节有着非常接近真相的了解,但却不是站在观众的角度而是对立面。测试工作也是这样,客观的态度保证测试逻辑的不偏不倚,而产品的细节并不是产品本身——一件产品做什么才重要,怎么做的根本就不重要。
回过头来说白盒测试,白盒测试所测试的并不是产品,而是实现软件产品的代码本身——注意这是两个层次上面的概念——这也是为什么白盒测试的概念仅见于软件产品。不客气地说,黑盒测试,也就是一般意义上的测试,比白盒测试有更普世的技能需求和适用范围以及更高的产品视角。白盒测试,充其量是单元测试,优秀的白盒测试者,除了证明他是个比较好的代码reviewer以外,实在不能说明任何其他的价值。放到IT之外的行业里,对一件产品的白盒测试就意味着,对这件产品的实现方式进行测试,也就是更底层的测试。如果说白盒测试和黑盒测试都是测试,那么测试就变成了这样一个概念:
测试=黑盒测试+白盒测试=黑盒测试+更低一级的测试。这是一个可以无穷无尽扩展的等式,也就意味着无穷无尽的工作量。也就只有软件行业,对代码一级的测试代价小,且再低一级的测试无意义(操作系统、软件框架等成熟第三方解决方案),才会出现这么一个奇葩。
IT行业真的是个奇怪的行业,你再也找不到这样一个行业,他们以可替换性强的技能工种为荣,以此作为其他同事工种的批判标准。你能想象一个建筑工人以“你连用什么顺序砌砖墙才会最结实都不知道,凭什么来监督我们?”为由嘲笑质量监督?
这里可以。
P.S 什么?觉得我说程序设计是“可替换性强的技能工种”有失偏颇?请不要自视过高。大规模产品上,良好的管理和合作比任何天才都来得有效,在任何行业都是如此。一个天才,一辈子都无法独立写出Office这样的软件,你同意么?但一个天才项目经理加上足够的资金和劳动力供应,就可以办到。
注:本文只代表作者个人观点。