目前的测试工程师分为两大类别,一类是做业务功能测试的,另一类是做测试开发的,二者的核心竞争力有很大差别。只有当你真正明白了自己的核心竞争力,你才能理清 “应该做什么” 和 “应该怎么做” 这两个问题,才能朝着正确的方向前行。
- 作为业务功能测试人员,必须要深入理解业务,但是业务知识不能等同于测试能力。
- 测试开发岗位的核心其实是 “测试”,“开发” 的目的是更好地服务于测试。看重的是对测试的理解,以及在此基础上设计、开发帮助测试人员提高效率并解决实际问题的工具,而不是一个按部就班、纯粹意义上的开发人员。
传统测试工程师应该具备的核心竞争力
** 测试策略设计能力 **
测试策略设计能力是指,对于各种不同的被测软件,能够快速准确地理解需求,并在有限的时间和资源下,明确测试重点以及最适合的测试方法的能力。
测试策略中的关键问题:
- 测试要具体执行到什么程度;
- 测试需要借助于什么工具;
- 如何运用自动化测试以及自动化测试框架,以及如何选型;
- 测试人员资源如何合理分配;
- 测试进度如何安排;
- 测试风险如何应对。
培养出色的测试策略设计能力,不是一朝一夕的事情,通常需要经过大量项目的实际历练,并且还要保持持续思考,主动去提炼共性的内容。不像测试技术,可以通过培训或者网上资料的学习而有快速的提升,测试策略设计能力一定是需要在大量实践的基础上潜移默化形成的。测试策略设计能力是功能测试工程师最核心的竞争力,也是最难培养的。
** 测试用例设计能力 **
测试用例设计能力是指,无论对于什么类型的测试,都能设计出高效地发现缺陷,保证产品质量的优秀测试用例。
- 深入理解被测软件的业务需求和目标用户的使用习惯
- 熟悉软件的具体设计和运行环境,包括技术架构、缓存机制、中间件技术、第三方服务集成等
- 多积累,对常见的缺陷模式、典型的错误类型以及遇到过的缺陷,要不断地总结、归纳,才能逐渐形成体系化的用例设计思维
- 阅读一些好的测试用例设计实例开阔思路,日后遇到类似的被测系统时,可以做到融会贯通和举一反三
** 快速学习能力 **
快速学习能力,包含两个层面的含义:
- 对不同业务需求和功能的快速学习与理解能力;
- 对于测试新技术和新方法的学习与应用能力。
方法:
- 当学习一个新的工具时,建议直接看官方文档:
- 一来,这里的内容是最新而且是最权威的;
- 二来,可以避免网上信息质量的参差不齐;
- 当学习新内容时,要做到理解其原理,而不是只停留在表面的、简单的操作和使用,长期保持这种学习状态,可以在很大程度上提高逻辑思维和理解能力。
** 探索性测试思维 **
探索性测试是指,测试工程师在执行测试的过程中不断学习被测系统,同时结合基于自己经验的错误猜测和逻辑推理,整理和分析出更多的有针对性的测试关注点。
** 缺陷分析能力 **
缺陷分析能力,通常包含三个层面的含义:
- 对于已经发现的缺陷,结合发生错误的上下文以及后台日志,可以预测或者定位缺陷的发生原因,甚至可以明确指出具体出错的代码行,由此可以大幅缩短缺陷的修复周期,并提高开发工程师对于测试工程师的认可以及信任度;
- 根据已经发现的缺陷,结合探索性测试思维,推断同类缺陷存在的可能性,并由此找出所有相关的潜在缺陷;
- 可以对一段时间内所发生的缺陷类型和趋势进行合理分析,由点到面预估整体质量的健康状态,并能够对高频缺陷类型提供系统性的发现和预防措施,并以此来调整后续的测试策略。
** 自动化测试技术 **
掌握自动化测试技术,可以把你从大量的重复性手工劳动中解放出来,这样你可以把更多的时间花在更多类型的测试上。
自动化测试的核心价值还是 “测试” 本身,“自动化” 仅仅是手段,实际工作中千万不要本末倒置,把大量的精力放在 “自动化” 上,一味追求自动化而把本质的 “测试” 弱化了。
** 良好的沟通能力 **
- 需要对接产品经理和项目经理,以确保需求的正确实现和项目整体质量的达标;
- 还要和开发人员不断地沟通、协调,确保缺陷的及时修复与验证。
测试开发工程师的核心竞争力
** 测试系统需求分析能力 **
除了代码开发能力,测试开发工程师更要具备测试系统需求分析的能力。你要能够站在测试架构师的高度,识别出测试基础架构的需求和提高效率的应用场景。
** 更宽广的知识体系 **
测试开发工程师需要具备非常宽广的知识体系:
- 不仅需要和传统的测试开发工程师打交道,因为他们是构建的测试工具或者平台的用户;
- 而且还要和 CI/CD、和运维工程师们有紧密的联系,因为你构建的测试工具或者平台,需要接入到 CI/CD 的流水线以及运维的监控系统中去;
- 了解更高级别的测试架构部署和生产架构部署、还必须对开发采用的各种技术非常熟悉;
DevOps 思维
DevOps 强调的是,开发、测试和运维等组织团队之间,通过高效自动化工具的协作和沟通,来完成软件的全生命周期管理,从而实现更频繁地持续交付高质量的软件,其根本目的是要提升业务的交付能力。
DevOps 的具体表现形式可以是工具、方法和流水线,但其更深层次的内涵还是在思想方法,以敏捷和精益为核心,通过发现问题,以系统性的方法或者工具来解决问题,从而实现持续改进。
因此,测试工程师也必须深入理解 DevOps 思想的核心和精髓,才能在自动化测试和测试工具平台的实现上做出最契合的设计。无论是测试工程师,还是测试开发工程师,都会成为 DevOps 实践成功落地的重要推动力。
DevOps 的学习路径,可以从深入掌握 Jenkins 之类的工具开始,到熟练应用和组合各种 plugin 来完成灵活高效的流水线搭建,之后再将更多的工具逐渐集成到流水线中以完成更多的任务。