09 | 软件测试工程师的核心竞争力是什么?
下载APP
关闭
渠道合作
推荐作者
09 | 软件测试工程师的核心竞争力是什么?
2018-07-18 茹炳晟 来自北京
《软件测试52讲》
课程介绍
讲述:茹炳晟
时长14:46大小6.76M
在前面的文章中,我给你介绍了测试工程师应该具备的一些基础知识,包括如何设计测试用例、如何制定测试计划、什么是测试覆盖率,以及软件生命周期各个阶段的自动化技术等等内容,相信你通过这些文章,或温故知新,或拓展视野,希望你有所收获。
那么,在介绍完这些比较基础的内容后,今天我就来和你聊聊测试工程师的核心竞争力到底什么。只有当你真正明白了自己的核心竞争力,你才能理清“应该做什么”和“应该怎么做”这两个问题,才能朝着正确的方向前行。
我以我们团队招聘功能测试和测试开发工程师为例,带你了解一下测试工程师的核心竞争力到底是什么。
案例一来自我们的资深功能测试工程师招聘。当时,有一位拥有近 9 年测试经验的资深测试候选人,我对他的简历还是比较满意的,所以就安排了面谈。但是,在聊的过程中我很快发现,这位候选人绝大多数的测试经验积累都“强”绑定在特定的业务领域。
如果抛开这个特定的业务领域,他对测试技术本身以及产品技术实现都缺乏系统的思考和理解。换言之,他的价值仅仅能够体现在这个特定的产品业务上,而一旦离开了这个业务领域,他的经验积累很难被有效重用,也就是说他很难快速适应并胜任我们的业务领域测试。所以,他最终没有得到我们的 offer。
从这个案例中,你可以看出作为测试人员,必须要深入理解业务,但是业务知识不能等同于测试能力。
案例二来自我们的测试开发岗位招聘。当时,有一位 5 年测试开发从业经验的候选人,是南京大学软件学院的硕士,毕业后一直在国内的互联网巨头公司从事测试框架和工具平台的开发工作。
看完他的简历,我发现他参与开发过的测试框架和工具和我们当时在做的项目很匹配,加之他的背景也相当不错,内心感觉这个职位基本就是他的了。但是,面谈结束后,我彻底改变了想法。
他所做的的确是测试框架和工具平台的开发工作,但是他的核心能力纯粹就是开发,他只关注如何实现预先设计的功能,而完全不关心所开发的测试框架和工具平台在测试中的具体应用场景。
我承认他的开发能力,但他并不能胜任我们的测试开发岗位。因为,测试开发岗位的核心其实是“测试”,“开发”的目的是更好地服务于测试,我们看重的是对测试的理解,以及在此基础上设计、开发帮助测试人员提高效率并解决实际问题的工具,而不是一个按部就班、纯粹意义上的开发人员。
这两个实际案例,是否已经引发你去思考这样一个问题:什么才是测试工程师的核心竞争力?
目前的测试工程师分为两大类别,一类是做业务功能测试的,另一类是做测试开发的,二者的核心竞争力有很大差别。那么,接下来我就带你一起去看看,功能测试和测试开发工程师的核心竞争力分别是什么。
我先带你看看业务功能测试工程师,也就是传统意义上的测试工程师的核心竞争力,我归纳了以下几点。
传统测试工程师应该具备的核心竞争力
这部分内容,我按照一项能力对测试工程师的重要程度的顺序,给你依次归纳了测试工程师要具备的七项核心竞争力,包括:测试策略设计能力、测试用例设计能力、快速学习能力、探索性测试思维、缺陷分析能力、自动化测试技术和良好的沟通能力。
或许,你感觉测试策略设计能力、探索性测试思维等对资深的测试工程师来说更重要,而你现在还处在培养快速学习能力、沟通能力、测试用例设计能力的维度。那也没有关系,不断地学习、丰富自己的知识体系,具备更强的职场竞争力,不正是你在追求的吗?
所以,我在分析你应该具备的主要能力的同时,也会给你分享如何才能使自己具备这些能力 ,帮你成就更好的自己。
第一项核心竞争力,测试策略设计能力
测试策略设计能力是指,对于各种不同的被测软件,能够快速准确地理解需求,并在有限的时间和资源下,明确测试重点以及最适合的测试方法的能力。
具备出色的测试策略设计能力,你可以非常明确地回答出测试过程中遇到的这些关键问题:
测试要具体执行到什么程度;
测试需要借助于什么工具;
如何运用自动化测试以及自动化测试框架,以及如何选型;
测试人员资源如何合理分配;
测试进度如何安排;
测试风险如何应对。
培养出色的测试策略设计能力,不是一朝一夕的事情,通常需要经过大量项目的实际历练,并且你还要保持持续思考,主动去提炼共性的内容。
不像测试技术,你可以通过培训或者网上资料的学习而有快速的提升,测试策略设计能力一定是需要你在大量实践的基础上潜移默化形成的。
我认为,测试策略设计能力是功能测试工程师最核心的竞争力,也是最难培养的。
第二项核心竞争力,测试用例设计能力
测试用例设计能力是指,无论对于什么类型的测试,都能设计出高效地发现缺陷,保证产品质量的优秀测试用例。
要做好测试用例设计,不仅需要深入理解被测软件的业务需求和目标用户的使用习惯,还要熟悉软件的具体设计和运行环境,包括技术架构、缓存机制、中间件技术、第三方服务集成等等。
测试用例设计能力要求你不仅仅局限于熟悉业务领域的测试用例设计,而是能够融会贯通,熟练地把系统性的测试设计方法和具体业务有机结合,对任何被测软件都可以输出出色的测试用例。
要想提高测试用例设计能力,你平时就要多积累,对常见的缺陷模式、典型的错误类型以及遇到过的缺陷,要不断地总结、归纳,才能逐渐形成体系化的用例设计思维。
同时,你还可以阅读一些好的测试用例设计实例开阔思路,日后遇到类似的被测系统时,可以做到融会贯通和举一反三。
第三项核心竞争力,快速学习能力
快速学习能力,包含两个层面的含义:
对不同业务需求和功能的快速学习与理解能力;
对于测试新技术和新方法的学习与应用能力。
显然,快速学习能力是各行业从业者应该具备的能力,但为什么我会单独列出来呢?
现今的软件项目,尤其是互联网项目,生命周期通常以“月”甚至是以“周”、“小时”为单位,一个测试工程师需要接触各种类型的测试项目,而不再像早年,可以在很长一段时间内只从事一个产品或者相关产品的测试了,所以快速学习能力对测试工程师来说,就是至关重要了,否则就容易被淘汰。
快速学习能力,乍一看是比较难培养的,但其实也有一些小窍门。
比如,当你学习一个新的开源工具时,建议你直接看官方文档:一来,这里的内容是最新而且是最权威的;二来,可以避免网上信息质量的参差不齐。知识输入源头是单一,而且权威的话,你的学习曲线也必然会比较平滑。
另外,当学习新内容时,你一定要做到理解其原理,而不是只停留在表面的、简单的操作和使用,长期保持这种学习状态,可以在很大程度上提高逻辑思维和理解能力。这样,当你再面对其他新鲜事物时候,也会更容易理解,形成良性循环。
第四项核心竞争力,探索性测试思维
探索性测试是指,测试工程师在执行测试的过程中不断学习被测系统,同时结合基于自己经验的错误猜测和逻辑推理,整理和分析出更多的有针对性的测试关注点。
本质上,探索性测试思维是“测试用例设计能力”和“快速学习能力”有机结合的必然结果。优秀的探索性测试思维可以帮助你实现低成本的“精准测试”,精准测试最通俗的理解可以概括为针对开发代码的变更,目标明确并且有针对性地对变更点以及变更关联点做测试,这也是目前敏捷测试主推的测试实践之一。
第五项核心竞争力,缺陷分析能力
缺陷分析能力,通常包含三个层面的含义:
对于已经发现的缺陷,结合发生错误的上下文以及后台日志,可以预测或者定位缺陷的发生原因,甚至可以明确指出具体出错的代码行,由此可以大幅缩短缺陷的修复周期,并提高开发工程师对于测试工程师的认可以及信任度;
根据已经发现的缺陷,结合探索性测试思维,推断同类缺陷存在的可能性,并由此找出所有相关的潜在缺陷;
可以对一段时间内所发生的缺陷类型和趋势进行合理分析,由点到面预估整体质量的健康状态,并能够对高频缺陷类型提供系统性的发现和预防措施,并以此来调整后续的测试策略。
这三个层面是依次递进的关系,越往后越能体现出测试工程师的核心竞争力。
第六项核心竞争力,自动化测试技术
掌握自动化测试技术,可以把你从大量的重复性手工劳动中解放出来,这样你可以把更多的时间花在更多类型的测试上。
一方面,自动化测试技术本身不绑定被测对象,比如说你掌握了 GUI 的自动化测试技术,那么你就可以基于这个技术去做任何 GUI 系统的界面功能测试了。
另一方面,自动化测试技术需要测试工程师具备一定的写代码的能力,这通常与测试工程师职业发展的诉求不谋而合,所以你会看到很多测试工程师非常热衷做自动化测试。
但是切记,自动化测试的核心价值还是“测试”本身,“自动化”仅仅是手段,实际工作中千万不要本末倒置,把大量的精力放在“自动化”上,一味追求自动化而把本质的“测试”弱化了。
第七项核心竞争力,良好的沟通能力
测试工程师在软件项目中作用,有点像“润滑剂”:
一方面,你需要对接产品经理和项目经理,以确保需求的正确实现和项目整体质量的达标;
另一方面,你还要和开发人员不断地沟通、协调,确保缺陷的及时修复与验证。
所以,测试工程师的沟通能力会直接影响事务开展的效率。良好清晰的沟通能力,是一个技术优秀的测试工程师能否获得更大发展的“敲门砖”,也是资深测试工程师或者测试主管的核心竞争力。
测试开发工程师的核心竞争力
接下来,我再带你一起看看测试开发工程师的核心竞争力。
首先既然是测试开发工程师,那么代码开发能力是最基本的要求。可以说,一个合格的测试开发工程师一定可以成为一个合格的开发工程师,但是一个合格的开发工程师不一定可以成为合格的测试开发工程师。这也就是案例二中的候选人没有通过面试的原因。
第一项核心竞争力,测试系统需求分析能力
除了代码开发能力,测试开发工程师更要具备测试系统需求分析的能力。你要能够站在测试架构师的高度,识别出测试基础架构的需求和提高效率的应用场景。从这个角度说,你更像个产品经理,只不过你这个产品是为了软件测试服务的。
第二项核心竞争力,更宽广的知识体系
测试开发工程师需要具备非常宽广的知识体系,你不仅需要和传统的测试开发工程师打交道,因为他们是你构建的测试工具或者平台的用户;而且还要和 CI/CD、和运维工程师们有紧密的联系,因为你构建的测试工具或者平台,需要接入到 CI/CD 的流水线以及运维的监控系统中去。
除此之外,你还要了解更高级别的测试架构部署和生产架构部署、你还必须对开发采用的各种技术非常熟悉。可见,对于测试开发工程师的核心竞争力要求是非常高的,这也就是为什么现今市场上资深的测试开发工程师的价格会高于资深的开发工程师的原因。
总结
我把测试工程师按照工作内容,分为了功能测试工程师(即传统测试工程师)和测试开发工程师两类,分别给你分享了他们的核心竞争力。
对于功能测试工程师来说,其核心竞争力包括:测试策略设计能力、测试用例设计能力、快速学习能力、探索性测试思维、缺陷分析能力、自动化测试技术和良好的沟通能力这七大部分,你可以有针对性地提升自己某方面的能力,去获取更大发展空间的“敲门砖”。
而对于测试开发工程师来说,你需要具备优秀的测试系统需求分析能力和完备的知识体系,这样才能保证你设计的测试工作和平台,可以更好地满足提升测试效率的要求。
思考题
你有没有想过这样一个问题,你很少会听到开发工程师谈论自己的核心竞争力,往往都是测试工程师更关注这个问题,这是不是从某个侧面反映出测试工程师的核心竞争力不够清晰或者是随着互联网时代的到来而发生了很大变化,说说你的看法吧。
欢迎你给我留言。
分享给需要的人,Ta购买本课程,你将得20元
生成海报并分享
赞 19
提建议
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
上一篇
08 | 以终为始,如何才能做好测试计划?
下一篇
10 | 软件测试工程师需要掌握的非测试知识有哪些?
精选留言(61)
- Cynthia🌸2018-07-18为什么开发很少讨论自己的核心竞争力,我想是因为开发的学习线路图和发展路线比较清晰,而测试,其实大家都是在迷茫中摸着石头过河。 个人认为,如果是开发转测试,去做测试开发,可能会更清楚自己的路线和规划。 如果是从功能测试入门进来,则很容易迷茫。因为入门很容易,而想要更深一步去走的话,像作者列出来的这几条能力,也是很难量化的,都是需要在实践中摸爬滚打,再加上不断总结经验教训,才能有一点感悟。很难说要怎样“学”会,或者怎样“教”会后来者。 而开发就不一样了,目标明确,容易量化,拥有大量教程。 期待作者后续的文章更深入的讲讲实践部分。展开共 5 条评论139
- 人生总有一点来不及2018-07-18个人是觉得测试工程师涉及的太广了,然后就很迷茫,觉得什么都要会,什么都不精,然后就不知道职业发展需要往哪个方向走。感觉在日常工作中被各种杂事淹没了,没有个清晰的职责,这样就很难找到方向60
- Luckybear2018-07-19我认为测试的核心竞争力是一直是清晰的,也并没有因为互联网时代到来而有根本性的改变。对自动化技术的掌握要求,比确实比以前高。但自动化仍然是服务于产品质量的提高,而非提高自动化测试率,所以测试人员要做的是利用自动化,更smart地测试。 之所以很多的测试会感觉到迷茫,或者找不到自己的核心价值,是因为测试的核心价值的得到和提高,并没有太多具体的书和文献可看,一切都需要测试人员自己一直保持主动去思考,去总结,在不断实践中潜移默化地完成升华。这种能力每个人都有,但并不是很容易做到。另一方面,测试确实经常处于大量繁杂琐碎的任务中,还有很多重复性的工作,比如一遍遍的回归测试。越不思考和总结,就越是在按部就班地劳动,能力和价值难以提升,最终产生迷茫和对测试价值的怀疑。展开44
- A冰淇淋麻麻,不听语...2018-07-23这里讲了传统的功能测试工程师和测试开发工程师,能不能讲讲性能测试工程师
作者回复: 很好的点,性能测试工程师的核心价值不是会多少性能测试工具,而是对于性能问题的直觉和定位能力,这个都是需要靠扎实的基础理论知识和大量的实践才能培养出来的。有核心竞争力的性能测试工程师就像经验丰富的医生,一看测试报告的各项参数就能猜测可能的问题点,这个就像有经验的医生一看验血报告就知道问题大概在哪里是一个道理。
共 2 条评论33 - sylan2152019-02-121.非常赞同这个观点:测试开发岗位的核心其实是「测试」,「开发」的目的是为了更好的服务于测试; 2.对于偏业务的测试工程师来说,个人理解,业务是自己的最大优势,如果懂技术并且知道灵活应用,那就很厉害了; 3.对于偏技术的测试开发来说,个人理解,技术是自己的最大优势,如果懂业务,并且可以自行分析提取业务中的自动化需求进行实现,那就相当厉害了; 4.万变不离其宗,测试和测试开发都是为了保障产品质量,而保障质量又不是哪一个人的事,是团队的事,从这个角度来说,软技能对测试和测试开发来说会显得尤其重要; 5.所以我总结的核心竞争力是业务、技术和软技能。 以上,欢迎沟通交流。展开共 1 条评论23
- 燕子2018-07-18从功能测试入行,想做自动化测试或者性能测试,发现到后面瓶颈越来越大,越来越发现不会代码的苦恼,自学开发感觉真的好难,网上各种查资料,买书学理论,到最后发现实践还是不会,痛苦……迷茫……共 5 条评论21
- 简愿2018-07-19功能业务测试可替代性更强,核心竞争力中的沟通、探索、学习其他岗位人员也具备,用例设计的优秀和一般体现不明显,测试策略大部分人可快速习得达到一般水平、完善细化可以依靠团队补充,自动化技术体现在自动化测试人员、纯功能测试未体现,所以纯功能测试更焦虑;测试开发,即便只会开发去学习测试的知识也更容易。共 1 条评论17
- 小小光芒2018-07-28大厂里,测试人员设计优秀的测试用例,很优秀的缺陷报告,也很少人会注意到。kpi似乎也对写coding的人更加宽容。互联网行业,除了金字塔尖的一些人,开发人员和测试人员本身存在感差别很大,求职市场上待遇差别明显。测试门槛也低,人员能力参差不齐,从整体上更加削弱存在感。从个体上,从实际项目中摸爬滚打出来的资深测试,从自身发展角度考虑,很多人想着转行产品经理。没有了前辈示范,剩下刚入行或者有几年工作经验的人,会更加迫切寻找核心竞争力的定义和发展规划展开13
- Geek_84a77e2018-07-19老师可否配合例子说明理论? 比如提高测试的用例设计能力,可否分享一下具体的例子,您对于常见的缺陷模式、典型的错误怎么总结归纳从而形成了哪种体系化的用例设计思维。就像之前文章中讲的登陆功能模块测试一样。多谢6
- 白梦2018-07-19能否有专门的章节详细讲解一下测试策略的设计方法。还有本文提到的测试策略设计中可能遇到的几种问题的应对方法,非常想了解这方面的相关知识。6
- 小老鼠2018-10-081,性能测试工程师(非功能测试工程师)属于两类中的哪类? 2,什么业务均能测试的人才真是太难得了? 3,设计好的测试用例,己任还建议大量阅读bug。 4,对于计算机专业毕业的人员如何学习好业务知识,比如电子、通信、金融…? 5,接触一个新东西,一上来就看官方文档容易找不到北,建设先看一下博客,有了基本概念再去看官方网站,再看博客,如此反复,效率更好。 4,我认为测试的任务是发现缺陷而不是去定位问题,让专业的人作专业的事。 5,开发工程师也是需要有核心竞争力的。展开共 1 条评论5
- justin2018-07-18按照这个思路,从培训班流水线出来的开发,做两年开发转测试,会比一开始做测试的人更有竞争力。后面一直做测试的人会被淘汰,回到国外资深开发人员才能做测试的状态。这一切的乱象会结束?共 1 条评论5
- 红娟2018-07-18关键词 功能测试工程师 测试开发工程师 核心竞争力 说实话,我最近一直在思考软件测试中最重要的是什么?我的结论是测试用例的设计和测试方案的灵活设计。沟通能力和测试能力也是同等重要。以前总觉得自动化测试很深奥,经历过几个项目的自动化平台的应用,发现bug的效果并不尽如人意。所以要平常心看待自动化测试,它必经是一个工具,关键还是使用工具的优点。 老师总结的功能测试和测试开发的核心能力,我的思维顿时清晰,原来自己的更靠近功能测试。测试策略,测试用例,快速学习,探索性测试,自动化测试,沟通能力。接下来我知道自己努力的方向。多谢!展开5
- 派森2019-01-25以前不信测试开发能做开发,直到进了测试开发团队
作者回复: 测试开发的综合能力应该是很强大的
4 - 在路上2018-07-18作为一个外包的自动化功能测试人员,对工具的掌握,业务的理解,测试用例的设计,深感重要性,但依然迷茫,即使提高能力,但职业天花板就在眼前,测试发展方向是不是过于狭窄了。共 1 条评论4
- (╯‵□′)╯︵┻━...2019-08-18测试需要根据其他团队的具体状况,调整自己的核心能力。如果开发工程师能力弱,测试需要强化设计审阅、需求实现分析和代码分析能力;开发能力强,测试可以强化可维护性设计能力;和不同开发团队合作,优先针对能力弱的一方进行强化以确保业务对接。如果运维偏好手工,那么测试需要强化文档能力;运维偏好自动化,则强化CD技能。全局把控型PM需要测试的工具报表能力,任务导向型PM需要测试的计划执行能力。 测试需要面向薄弱环节强化对接,面向全局进行整合。展开共 1 条评论3
- 口水窝2019-03-19我的核心竞争力:优秀的测试策略,编写高质量的测试用例,沟通技术。短板:自动化技术了解甚少,所以现在进军java行列。3
- Kola2019-02-21可以没有测试人员 但是不能没有测试!互联网时代是 产品、开发、测试三足鼎立的时代~就算人员在各项职能之间会跳来跳去 但是流程上不可或缺,特别是敏捷开发3
- 陈雷@端到端交付能力2018-09-18因为测试本就该消失掉,测试工程师的独立存在,是时代的产物,是别人失误的成本。共 5 条评论3
- 温如玉2018-07-31测试用例设计部分,之前有章节特意说到好的测试用例与缺陷无关,为什么这一章节说好的测试用例设计能力是设计出能高效发现缺陷用例的能力呢?共 1 条评论3