今天参加了单位组织的测试架构师培训。外部的咨询老师问了我一个问题:做测试最高境界是什么?我当时给出的仓促回答是:“帮助你所在的组织改善树立正确的质量观念;帮助所在建立起有效预防和发现bug的流程体系与技术栈。” 限于时间,这个问题没有展开深入探讨,却让我总是忍不住去想它。做测试最高的境界是什么呢?仔细思索后,发现我这个答案还挺不错的。
最高境界代表着极致,极致就是在已经达到非常好的时候还在不断的追寻:我还能做得更好么?如果持续这样做,在某个时候,一定会产生质的飞跃,让你跳出原有的框框得到柳暗花明的答案。这样的例子比比皆是:在人们找到钨丝代替爱迪生的竹炭纤维作为白炽灯的灯丝以后,后续的工程师做了上千倍爱迪生的努力,也无法让白炽灯的光电转换比有效提高了,直到节能灯泡的出现,换了思路,能效提高了一个数量级。
人们对测试最初的定义就是发现缺陷。大家都会熟悉下面图中的这条曲线:缺陷发现的越晚,修复的代价就越大。照这个思路来看,发现缺陷越早越好?什么叫早呢?如果是一般的软件生命周期,那能在需求阶段就发现所有缺陷就perfect了。这显然是天方夜谭,代码还没写呢,你怎么能发现编码过程中产生的缺陷呢? 缺陷产生于软件生命周期的各个阶段,试想如果在每个阶段的初期就能发现这个阶段的所有缺陷也是不错的,但这也是不可能的,再拿编码过程产生的缺陷来说,当一个方法还没有被编写出来,你如何发现它的缺陷呢?解决这个问题有2个思路:
1.阶段细分,每个阶段的工作再细分(敏捷的思路:工作细分,如scrum模型,它让每个sprint都能实现可以被测试的特性)
2. 换个思路,如何能够做到比检验做到更好呢?那就是预防。基于这个理论就有了各种checklist,各种入口评审(相对于本阶段是检验,相对于下阶段是预防),测试驱动开发严格意义上也算一种预防的手段。
做到这两点的本质就是:帮助所在建立起有效预防和发现bug的流程体系与技术栈。
而这不仅仅是靠测试人员本身的力量能够做到的了,要靠团队所有人的共同努力才能做到,做测试的同学应该作为推动者和实践者,把质量意识灌输到每个团队成员的意识甚至是潜意识中去(注意:灌输意识不仅仅是测试同学的责任!)
最后简要回顾一个小故事:扁鹊是古代名医,但当人们问到他的时候,他却认为给人们做保健的大哥是神医。但在别人的眼里他的大哥只是个普通的郎中。
最后一句话其实不会发生在软件测试人员身上。你能做到这一点,或者推动做到。就会被大家普遍认可:)IT届的意识还是很先进的。