最近发生的几件事情让我开始思考这个问题--测试的核心价值和能力是什么:
故事1:前几天帮别的项目组面试招人,候选者是一位拥有8年测试经验的资深人士,简历很漂亮。但交流了一会,我就发现了一个问题,他熟悉的业务和他现在申请的职位的业务相差甚远,但是他除了对业务非常熟悉之外,几乎没有任何思考和总结,对测试,甚至连最基本的概念都模糊不清。不过更触动我的是,和我一起面试的另外一位面试官,面试完后私下给我说,感觉有点不舒服,害怕自己8年后会同这位面试者一样。
故事2:也是帮别的项目组面试。候选者有4年左右的工作经验,简历很漂亮,已经在大公司里面做测试项目管理了。面试时,他对他当前所在公司的流程,研发管理方法侃侃而谈,全部都很high level。但当我问到他一个在具体的场景下如何识别和处理项目风险,深入问他一些细节的时候,发现怎么聊都深入不下去,原来对他而言,"风险"就等于"项目延期",一旦出现了"项目延期",就发邮件给领导,按照流程去处理就可以了,而且他认为,这就是测试管理,这就是测试策略。
正是这两个故事,引得我思考这个问题:什么是测试的核心能力?
作为测试人员,掌握业务是必须的,但是业务知识不等于测试能力,并不是测试的核心价值更不是测试的核心能力。测试流程固然重要,但它只是固化下来的经验、管理的手段和方法。测试流程也不应该是测试的价值,测试的核心。
那么对测试而言,究竟什么是测试的核心价值?哪些是一位优秀测试应该具备的能力?作为测试者,我们又该如何去提升、突破自己?
我理解,测试的核心能力有两个:对需求的理解和把握和对产品失效规律的把握。--我们对需求进行分析,得到产品的测试范围,并确定我们的测试目标(验收标准);结合设计,得到产品的测试重点、测试难点,测试深度和广度。同时我们还需要结合我们对产品失效规律的把握,基于风险来进行测试。我们所有的测试,要"测什么","怎么测",都是围绕上面来进行的,我理解这才是最核心的测试技术--定好测试策略。
认识到测试策略在测试的核心地位后,对我的测试职业发展之路产生了巨大的影响。记得我曾经就职的一家公司会要求测试代表在项目开始写《总体测试策略》,在项目过程中做"缺陷分析",做"产品质量评估"。我一直觉得那玩意很虚,对这些技术不以为然,认为有这些分析思考的时间,不如去看看开发的实现代码,觉得只有编码才是真技术。但自从我被逼着开始试着认真的去写测试策略,去学习怎么把握需求,怎么确定测试的深度和广度,学习怎样做缺陷分析才最有效,怎样评估质量时,我突然好像进入了一个全新的世界,我越来越觉得测试很难,真的很难,但随着不断的思考和总结,我也越来 越感到测试的魅力。
我也逐渐理解到,对测试来说,核心价值,就是能够利用自己对产品的失效规律的把握,对需求的理解,来预防缺陷,和其他角色一样来保证产品的成功。
例如,测试参加需求(story)的确定讨论,往往能够从系统、用户的视角提出很多很有价值的问题,能够帮助团队快速澄清问题,达成一致。
测试参加开发的设计讨论,往往能够从功能之间的联系、非质量属性、容易出现Bug的地方提出很多开发在设计上容易忽视的地方,而这些问题点到了测试阶段,其实都是Bug,这就起到了预防缺陷的作用。
是不是我们做到这步就够了呢?事实上,"失效规律的把握"也好,"需求的把握"也罢,归结起来还是和具体业务息息相关。测试者一旦换了产品,面对的是一些你不熟悉的业务,你掌握的失效规律,掌握的需求,特别是对用户的深入理解,可能就失效了。所以我们需要把这些知识,从测试的层面再提炼总结一下,成为测试能够"通用"的知识、技能、或者模型。