测试的核心价值和能力:对需求的理解和把握和对产品失效规律的把握。
我们对需求进行分析,得到产品的测试范围,并确定我们的测试目标(验收标准);结合设计,得到产品的测试重点、测试难点,测试深度和广度。同时我们还需要结合我们对产品失效规律的把握,基于风险来进行测试。我们所有的测试,要"测什么","怎么测",都是围绕上面来进行的,我理解这才是最核心的测试技术--定好测试策略。
对测试来说,核心价值,就是能够利用自己对产品的失效规律的把握,对需求的理解,来预防缺陷,和其他角色一样来保证产品的成功。
测试参加开发的设计讨论,往往能够从功能之间的联系、非质量属性、容易出现Bug的地方提出很多开发在设计上容易忽视的地方,而这些问题点到了测试阶段,其实都是Bug,这就起到了预防缺陷的作用。
"失效规律的把握"也好,"需求的把握"也罢,归结起来还是和具体业务息息相关。测试者一旦换了产品,面对的是一些你不熟悉的业务,你掌握的失效规律,掌握的需求,特别是对用户的深入理解,可能就失效了。所以我们需要把这些知识,从测试的层面再提炼总结一下,成为测试能够通用的知识、技能、或者模型。
========================================
核心价值就是“能发现一般人发现不了的Bug!”。
1、测试用例设计能力。
就一句话“测试用例是整个测试过程的基石”
2、发现问题的敏锐目光。
如果是白盒测试,看到同样一段代码,开发同学只想着正常数据输入,程序会得到正常输出;而测试工程师会想到正常的输入、异常的输入(根据业务而来的)。
如果是黑盒功能测试,比如Web测试,同样看到一个页面,测试工程师是可以比开发工程师更快速地发现这个页面展示问题、功能问题的。
如果是性能测试,当得到一个性能测试结果,比如响应时间是多少、TPS是多少,测试工程师应该清楚地发现该指标是否正常,性能是否符合要求,因为我们有对其他类似模块测试的经验,比开发对我们的整个系统、整个网站的总体情况更加熟悉(有的公司,开发工程师的负责的模块相对固定,面比较小,而测试工程师会测试整个系统,测试很多模块)。
3、bug分析能力。
一方面,是bug的定位能力,发现一个错误的现象,可以很快预测问题的原因出在哪里,可以在提bug时,建议开发工程师从哪个方面去查原因。
另一方面,是指我们可以根据发现的一个bug,预测模块中类似bug的出现几率,可以有意对相应的功能进行测试,可以快速找出潜在的bug。
还有一个是,分析一个项目或者某一阶段的bug数量、bug类型、bug趋势等,给开发工程师提出建议,希望他们从哪些地方可以在开发中就避免掉一些bug,也可分析出项目的整体质量情况和趋势,供项目经理、研发主管、测试主管、产品经理参考,方便他们分配人力物力、制定项目和产品的一些战略。
4、良好的测试技术。
这里并不是一定要和Java工程师比Java编程,也不是跟研发架构师比系统设计,我想说的是,我们关注测试相关的技术能力。当然具备基本的编程能力,应该是一个优秀测试工程师的必备条件。
测试技术方面,我们可以做的更好,比如说,(以身边实际为例,我们做Web应用的测试,对于的开发是Java Web开发工程师,Web系统部署在Linux服务器上),Linux系统的使用可以比开发熟悉,通过写一些测试环境脚本,可以比开发更快速地部署Web 应用测试环境,可以比开发更熟悉写Oracle的SQL语句,可以比开发更熟悉地使用Firefox的一些插件来进行Web测试,可以比开发更熟悉自动化测试工具的使用(不少开发工程师认为自动化测试有些神秘),可以比开发了解更多的单元测试、性能测试的理论、工具盒方法,可以比开发更了解JVM机制和操作系统原理,在性能测试分析时也能比多数开发更有思路。
5、良好的沟通能力。