前言
前几天一个前同事找我聊了个问题:一个好的测试开发同学需要具备哪些能力?我思考了一下,给了他如下答复:
从我工作中接触到的测试开发,以及面试测试开发候选人时问的问题,我将自己对测试开发这个岗位的理解,总结了如下六点能力。我个人认为,具备如下六点能力,会是一个优秀的测试开发同学。这篇文章,就来聊聊我对这六点能力的看法,观点仅供参考。
什么是测试开发工程师?
我对测试开发的定义
从我工作中接触到的测试开发,以及面试测试开发候选人时问的问题,我个人对测试开发这个岗位的定义如下:
技术广度的拥有者,测试团队过程效率的提升者,解决落地交付痛点的终结者。
如何理解我上面的定义呢?
在国内测试开发很重要的一点是具备大部分测试所不具有或不擅长的coding能力以及技术广度,他可以通过借助已有的成熟工具框架或者二次开发,快速解决测试过程遇到的各种block效率的问题,以及为技术团队内部提供一些更高效的研发测试工具,提高交付过程的效率,并保障测试过程的质量。
测试开发日常做什么
从我接触到的测试开发来看,测试开发工程师的日常,大多在做如下几点事情:
- 借助已有的成熟工具或者框架,搭建内部的各种测试过程平台或者框架,如提测平台、用例管理、自动化测试平台、单元测试覆盖率、线上冒烟验证平台、测试的造数工具等;
- 业务需求较多时临时去支援业务的版本迭代测试,照样需求评审、写测试case、提BUG、线上发布验证;
- 内部技术分享、新人技术培训等;
QA最核心的就是交付效率和质量。测试开发的本质,还是和测试过程以及线上交付有关。
测试开发工程师一方面通过工具和平台来提高测试过程的效率, 另一方面也要保障最终线上的交付质量。
测试开发的六大能力
基础能力
上面提到了,测试开发的本质还是做测试交付相关的工作。
基本的如需求分析、设计测试场景、编写测试case、发现和验证bug、沟通协调以及测试流程管理、质量把控等。
技术能力
测试开发需要借助已有的成熟工具或者框架,搭建内部的各种测试过程平台或者框架。
因此除了coding能力,还需要负责对业内广泛使用或者成熟度较高的工具框架进行引入落地,来解决日常测试过程中的种种问题,提高测试过程效率,保障线上的交付质量。
常见的有工具框架有:
- 单元测试框架如Junit;
- 单元测试覆盖率如jacoco;
- 自动化测试框架或工具,如apifox、pytest;
- 内部的持续集成工具,常见的就是jenkins和gitlab;
- 流量录制回放,常见的有GoReplay、JVM-sandbox;
- 混沌工程异常注入工具,常见的有ChaosBlade、Monkey-Ops;
沟通协调能力
沟通协调能力是一项软能力,但在今天的职场,却是一项非常重要的能力。
无论是平台工具推广落地,还是和其他团队的技术同学沟通配合,都需要大量的沟通协调。
很多同学梦想着安心做技术,不要有人打扰。但实际上,职场上特别是一些大厂,沟通协调能力甚至比技术更重要。
产品设计能力
前面提到了测试开发需要去做一些平台或者工具落地,这里并不是说只要把工具用起来就OK了。因为团队里的同学技术能力各有不同,需要通过平台或者工具来规范流程,提供便捷的操作方式来提高效率。
而且每个公司的流程、业务特点导致了对平台的诉求各不一样。因此需要针对性的进行平台交互逻辑设计,甚至一人搞定原型图PRD前端后端开发各种事情。
画饼和落地能力
互联网行业打工人,几乎都逃不了KPI/OKR的真香定律。做产出,推落地,拿结果,讲价值,哪个不需要画饼落地能力。
因此学会给领导画饼,并且把饼做出来,是很考验个人的一个技术活儿。这不仅关心到绩效的好坏,也是一个自我价值诉求的主动传递过程。这里强调一句:向上管理,很重要!
项目管理和交付能力
聊到最后一个能力,实际上不仅仅是测试开发同学,测试同学有时候也会做这些事情。日常工作中除了固定的版本迭代,偶尔还有一些独立的业务或者技术项目要参与其中。
很多互联网企业都会强调员工的主动性,什么ownership,向前一步,不推活儿主动承担责任啥的。但凡你向前一步了,基本逃不开跟进项目进度、把控项目质量、评估风险、协调资源甚至保证按时交付。
干这些事情,不就是日常项目经理的事情么?身兼多职,有责任没利益,做的好是应该的,做不好就是你的锅,可太有意思了。
聊到最后其实我想表达的是:现代职场一方面对于岗位的职责划分粒度越来越细,另一方面又要求员工的综合能力要高,最本质的因素还是以前粗放的时代过去了,增长放缓利润降低,沟通成本越来越大,造轮子推倒重构的频次越来越高。这何尝不是另一种内卷呢?
当然,这种情况会锻炼个人的综合素养和能力,但其中一得一失,个中滋味只能自己品尝了。