测试工程师核心竞争力
测试工程师要具备的七项核心竞争力,包括:测试策略设计能力、测试用例设计能力、快速学习能力、探索性测试思维、缺陷分析能力、自动化测试技术和良好的沟通能力
测试策略设计能力
测试策略设计能力是指,对于各种不同的被测软件,能够快速准确地理解需求,并在有限的时间和资源下,明确测试重点以及最适合的测试方法的能力
具备出色的测试策略设计能力,你可以非常明确地回答出测试过程中遇到的这些关键问题
- 测试要具体执行到什么程度
- 测试需要借助于什么工具;
- 如何运用自动化测试以及自动化测试框架,以及如何选型;
- 测试人员资源如何合理分配;
- 测试进度如何安排
- 测试风险如何应对
测试策略设计能力一定是需要你在大量实践的基础上潜移默化形成的。
我认为,测试策略设计能力是功能测试工程师最核心的竞争力,也是最难培养的
测试用例设计能力
测试用例设计能力是指,无论对于什么类型的测试,都能设计出高效地发现缺陷,保证产品质量的优秀测试用例。
要做好测试用例设计,不仅需要深入理解被测软件的业务需求和目标用户的使用习惯,还要熟悉软件的具体设计和运行环境,包括技术架构、缓存机制、中间件技术、第三方服务集 成等等。
测试用例设计能力要求你不仅仅局限于熟悉业务领域的测试用例设计,而是能够融会贯通,熟练地把系统性的测试设计方法和具体业务有机结合,对任何被测软件都可以输出出色的 测试用例。
要想提高测试用例设计能力,你平时就要多积累,对常见的缺陷模式、典型的错误类型以及遇到过的缺陷,要不断地总结、归纳,才能逐渐形成体系化的用例设计思维。 同时,你还可以阅读一些好的测试用例设计实例开阔思路,日后遇到类似的被测系统时,可以做到融会贯通和举一反三
快速学习能力
快速学习能力,包含两个层面的含义:
- 对不同业务需求和功能的快速学习与理解能力
- 对于测试新技术和新方法的学习与应用能力
快速学习能力,乍一看是比较难培养的,但其实也有一些小窍门。
比如,当你学习一个新的开源工具时,建议你直接看官方文档:一来,这里的内容是最新而且是最权威的;二来,可以避免网上信息质量的参差不齐。知识输入源头是单一,而且权 威的话,你的学习曲线也必然会比较平滑
另外,当学习新内容时,你一定要做到理解其原理,而不是只停留在表面的、简单的操作和使用,长期保持这种学习状态,可以在很大程度上提高逻辑思维和理解能力。这样,当你再面对其他新鲜事物时候,也会更容易理解,形成良性循环
探索性测试思维
探索性测试是指,测试工程师在执行测试的过程中不断学习被测系统,同时结合基于自己经验的错误猜测和逻辑推理,整理和分析出更多的有针对性的测试关注点
本质上,探索性测试思维是“测试用例设计能力”和“快速学习能力”有机结合的必然结果。优秀的探索性测试思维可以帮助你实现低成本的“精准测试”,精准测试最通俗的理解可以概 括为针对开发代码的变更,目标明确并且有针对性地对变更点以及变更关联点做测试,这也是目前敏捷测试主推的测试实践之一
缺陷分析能力
缺陷分析能力,通常包含三个层面的含义:
- 对于已经发现的缺陷,结合发生错误的上下文以及后台日志,可以预测或者定位缺陷的发生原因,甚至可以明确指出具体出错的代码行,由此可以大幅缩短缺陷的修复周期,并 提高开发工程师对于测试工程师的认可以及信任度
- 根据已经发现的缺陷,结合探索性测试思维,推断同类缺陷存在的可能性,并由此找出所有相关的潜在缺陷
- 可以对一段时间内所发生的缺陷类型和趋势进行合理分析,由点到面预估整体质量的健康状态,并能够对高频缺陷类型提供系统性的发现和预防措施,并以此来调整后续的测试策略
这三个层面是依次递进的关系,越往后越能体现出测试工程师的核心竞争力
自动化测试技术
掌握自动化测试技术,可以把你从大量的重复性手工劳动中解放出来,这样你可以把更多的时间花在更多类型的测试上
一方面,自动化测试技术本身不绑定被测对象,比如说你掌握了GUI的自动化测试技术,那么你就可以基于这个技术去做任何GUI系统的界面功能测试了
另一方面,自动化测试技术需要测试工程师具备一定的写代码的能力,这通常与测试工程师职业发展的诉求不谋而合,所以你会看到很多测试工程师非常热衷做自动化测试
但是切记,自动化测试的核心价值还是“测试”本身,“自动化”仅仅是手段,实际工作中千万不要本末倒置,把大量的精力放在“自动化”上,一味追求自动化而把本质的“测试”弱化 了
良好的沟通能力
测试工程师在软件项目中作用,有点像“润滑剂”: 一方面,你需要对接产品经理和项目经理,以确保需求的正确实现和项目整体质量的达标
另一方面,你还要和开发人员不断地沟通、协调,确保缺陷的及时修复与验证
所以,测试工程师的沟通能力会直接影响事务开展的效率。良好清晰的沟通能力,是一个技术优秀的测试工程师能否获得更大发展的“敲门砖”,也是资深测试工程师或者测试主管的核心竞争力
测试开发工程师的核心竞争力
测试系统需求分析能力
除了代码开发能力,测试开发工程师更要具备测试系统需求分析的能力。你要能够站在测试架构师的高度,识别出测试基础架构的需求和提高效率的应用场景。从这个角度说,你更 像个产品经理,只不过你这个产品是为了软件测试服务的。
更宽广的知识体系
测试开发工程师需要具备非常宽广的知识体系,你不仅需要和传统的测试开发工程师打交道,因为他们是你构建的测试工具或者平台的用户;而且还要和CI/CD、和运维工程师们有紧密的联系,因为你构建的测试工具或者平台,需要接入到CI/CD的流水线以及运维的监控系统中去
除此之外,你还要了解更高级别的测试架构部署和生产架构部署、你还必须对开发采用的各种技术非常熟悉。可见,对于测试开发工程师的核心竞争力要求是非常高的,这也就是为什么现今市场上资深的测试开发工程师的价格会高于资深的开发工程师的原因
文章链接 https://fangzongzhou.github.io/2021/01/03/计算机/软件测试/测试核心竞争力/