测试开发工程师的核心竞争力

2021年4月4日 0 条评论 1.11k 次阅读 1 人点赞

自从本公众号(测试开发工程师)编写第一篇文章《什么是测试开发工程师》开始,至今已去经年,无论是行业里还是个人发展,对于测试开发工程师都已经逐渐提高了要求,接下来就通过核心竞争力来看看行业对于测试开发工程师的一些变化和要求。

00 引言

行业变化

在互联网新趋势和不断自我革新的推动下,测试行业也在不知不觉中发生着非常大的改变。从原先的手工测试到自动化测试、分层测试,再到持续部署、持续测试,对于软件研发本身也是不断进行革新和迭代,最开始的功能测试(也就是low的代名词)已经渐渐为人所抛弃。

企业需求

对于企业来说,当然最重要的是有“价值产出”。《Google软件测试之道》中提到,测试人员和开发人员需要同等技能和同等水平(软件测试角色和软件开发角色的地位是平等的而只是专业和作用不同的愿景),最终实现同等的价值产出。在大部分人的眼中,只有开发人员才是价值产出角色,而测试人员不是,为了改变这个想法,应该做出一些改变。

同样,对于企业而言,想快速发展自己的业务,必须有一个强大的团队来保证质量,通过一系列的质量保障手段,如引入CI,CD以及其他的手段来促进项目的快速迭代与交付。这个“质量团队”就是我们现在经常提到的QA角色,而非单独的开发人员或者测试人员。全员为质量负责。

01 核心竞争力

对于测试角色来说,最重要的就是技术能力和帮助产品解决业务问题的能力。其实就是硬技能和软技能两个方面。

对于测试开发角色来说,从产品的生命周期来看,测试开发属于开发的下游,对开发和测试负责,交付测试框架和提效工具。像在Google,让所有的SET(Software Engineer in Test)去辅助SWE(Software Engineer)写单元测试,让所有的SWE感觉写 test 容易,且乐于写test。测试开发的职责就是Testing Service的提供者,为开发负责。

下面总结了一些常见的软技能和硬技能,供大家参考:

硬技能

对于硬技能来说,最重要的第一点是业务理解和测测试技能。对测试需求的深入理解与产品质量本质的挖掘,对于产品软件架构,需求的理解决定了测试方案,测试框架,测试工具的选型及设计。

其他的参见上图,都是测试的基本功。

第二点就是基础的编程能力和开发框架/测试框架能力。有了编程的能力和一些基本框架的知识,才初步具备同开发平等交流的可能。不然开发一句话:你测试不懂这些就搪塞过去了。

对于测试框架来讲,最基本的XUnit是如何实现的是需要理解的,还有自己使用的测试框架,如Selenium、TestNG、request等等。

第三点就是研发流程、CI/CD的知识。《持续交付2.0》中总结了各种分支发布模式的概念,其中分支灾难模型印象深刻,恐怕大多数大规模的团队都有可能正在经历分支灾难:有很多的分支,当合并的时候,质量活动很费劲,成本非常高,而且稳定时间很久。作为测试开发角色,其实也需要推动团队做一些改变。

接下来就是各种软技能

软技能其实很多,但是对于任何一个“打工人”来讲,重点就是学习能力、沟通能力、总结能力。

学习能力

作为IT人这再基础不过了,说这个行业必须终身学习也不为过:你永远不知道哪一天你所学的东西会不会派上用场,但是你所学的东西如果派上了用场,就能真正能体现出你的价值。

当然,这个学习能力并不是说凡是新的东西,都要拿来学一学。从我自己的例子是这样的:接触一个新东西,关注底层实现逻辑和解决的问题,然后举一反三,是否其他也能实现。

就拿XUnit来举例,我最早接触的是Ruby的Unittest。对于Unittest来讲,其实和用例本质上是一致的:用例收集、用例组织、用例执行。Testcase中做业务操作,通过断言来判断用例执行情况。收集用例执行结果。给出报告。

举一反三,后来去看Python的Unittest、Google的C++ GTest框架、JavaUnittest等其实大同小异。虽然前期看看底层代码可能学习曲线陡峭,但是对于后续的学习成本其实是非常低的,只需要几个小时就能入门,并快速上手。

这样,在做技术选型的时候就知道各种技术的优势和差异,可以做出正确的选择。

沟通能力

沟通能力对于软件交付至关重要,对于测试这个角色,沟通也是必不可缺的能力。因为测试在团队中更需要反复确认需求、澄清需求;反复确认问题、澄清问题。相信做过测试的同学都深有感悟。

总结能力

总结能力这里就给大家推荐“金字塔原理”

结论先行

以上统下

归类分组

逻辑递进

image.png

此处也不详细赘述,有机会跟大家分享分享。

今从晚向

这个人太懒什么东西都没留下

文章评论(0)

你必须 登录 才能发表评论