今年是我从事软件测试工作的第十年,从功能测试进阶到自动化测试,然后负责稳定性测试团队,进而兼任整个质量团队的技术专项治理,再到基础架构团队的测试专家角色,负责多个技术项目的产品/运营和质量保障工作。可以说绝大多数测试同学做过的工作我都做过,且积累了不少的经验。
有很多同学咨询过我,作为一名软件测试工程师,该如何提升自己的技术能力,构建自己的职场核心竞争力?特别是在当下这种裁员的大环境下,具备哪些技能才能在激烈的竞争中脱颖而出。
我个人认为,软件测试岗位作为一个技术岗位,其最核心的竞争力依然是他的技术能力,或者说依靠自己的技术解决工作中遇到的问题,支撑业务高效稳定的运行。
性能 中间件测试
以性能测试为例,只要掌握了正确的学习路径,性能测试入门进阶其实很简单。结合自己的经验,我个人认为,性能测试从入门实战到进阶,大概需要掌握这几方面的知识。参照下图:
理论知识
任何一个技术领域,想要很好的在这个领域有所收获,一定要先掌握这个领域的理论知识,并且对相关的底层通用知识有所了解,否则在深入实践时会遇到很多认知上的偏差导致的结果南辕北辙。
基础理论知识不难学习,学习理论知识也不需要死记硬背,理论知识的作用在于让我们对性能测试有一个足够和全面的了解。而通用的底层知识,对性能测试同学来说,无非就是系统架构及常用的各种中间件。
业务知识
所有的测试活动开展,都是基于具体业务场景,因此在掌握基础理论知识后,开展性能测试的前提一定是要对业务场景有足够深的理解。
性能测试实施所涉及的业务知识,其实主要是三部分:业务场景模型 流量场景模型 数据场景模型。这三部分,构成了我们最终实施压测时候的压测模型。有了正确的压测模型,性能测试活动才能很好的开展。
工具组件
技术发展带来的优势就是出现了多种类型的工具,工具的作用是辅助人提高做事效率,性能测试过程中常见工具如下:
- 压测工具:jmeter、gatling、locust、;
- 监控工具:skywalking、jaeger、prometheus、grafana;
- 分析工具:arthas、jconsole、visualvm、系统自带工具;
- 服务组件:常见的如redis、kafka、ES、nacos、mybatis;
技术实践
性能测试是一个特别吃经验的活儿,需要大量的项目实践和踩坑,通过排查和定位分析优化,才能累积经验和案例。
在我看来,性能测试入门实践,最核心的需要掌握的技能主要有这几点:工具选型、工具或者插件开发、工具使用策略、性能监控分析以及瓶颈定位优化。
体系建设
任何的技术实践,做到最后都是建立体系,体系是基于理论指导的适合自己的支撑业务目标达成的最佳技术实践。我个人认为对测试同学来说,体系建设主要包含这几点:
性能测试体系:从理论知识到技术实践,再到建立性能测试体系,这是性能测试人员入门到进阶所必须掌握的能力。
全链路压测体系:全链路压测是性能测试最核心也是更高阶的实践,建立全链路压测体系,可以更好的扩展性能测试同学的技术能力以及职场影响力,助力性能测试同学的职场成长和晋升。
全链路质量体系:无论性能测试还是全链路压测,都是质量保障的一部分。将性能测试的能力和体系,融入到质量保障体系中,最终达到全链路的质量保障,这样才能体现测试同学的岗位职责和价值。
自动化 测试开发技术
测试开发很重要的一点能力是通过已有的工具框架或者二次开发,快速解决测试过程遇到的各种block效率的问题,以及为技术团队提供一些更高效的研发测试工具,提高交付过程的效率,并保障测试过程的质量。
结合我在面试测试开发候选人时问的问题,以及我的工作经验,我将测试开发必须具备的能力进行了总结。我个人认为,具备如下几点能力,会是一个优秀的测试开发同学。
基础能力
基本的如需求分析、设计测试场景、编写测试case、发现和验证bug、沟通协调以及测试流程管理、质量把控等。
技术能力
测试开发需要借助已有的成熟工具或者框架,搭建内部的各种测试平台或者框架。常见的工具框架有:
- 单元测试框架如pytest;
- 单元测试覆盖率如jacoco;
- 自动化测试框架如,如airtest、selenium;
- 持续集成工具和框架,常见的如Git、Jenkins、Gitlab;
- 企业级性能测试技术和压测工具,常见的有Jmeter和beanshell;
沟通协调能力
沟通协调能力是一项软能力,但在今天的职场,却是一项非常重要的能力。
无论是平台工具推广落地,还是和其他团队的技术同学沟通配合,都需要大量的沟通协调。职场上沟通协调能力甚至比技术更重要。
产品设计能力
前面提到了测试开发需要去做一些平台或者工具落地,这里并不是说只要把工具用起来就OK了。因为团队里的同学技术能力各有不同,需要通过平台或者工具来规范流程,提供便捷的操作方式来提高效率。
而且每个公司的流程、业务特点导致了对平台的诉求各不一样。因此需要针对性的进行平台交互逻辑设计,甚至一人搞定原型图PRD前端后端开发各种事情。
画饼和落地能力
互联网行业打工人,几乎都逃不了KPI/OKR。做产出,推落地,拿结果,讲价值,哪个不需要画饼落地能力。
因此学会给领导画饼,并且把饼做出来,是很考验个人的一个技术活儿。这不仅关心到绩效的好坏,也是一个自我价值诉求的主动传递过程。
项目管理交付能力
最后一个能力,实际上是测试同学很重要的一个能力。
工作除了版本迭代,偶尔还有独立的技术项目要参与其中。很多互联网企业都会强调员工的主动性,向前一步,主动承担责任。这些基本逃不开跟进项目进度、把控项目质量、评估风险、协调资源甚至保证按时交付。