你真的了解什么是测试开发吗?

在一些大公司里,会设立测试开发岗位,薪资比常规的测试要高,甚至有一些会跟开发岗位拿到的差不多。

那么这个岗位究竟是干什么的呢?

《Google 软件测试之道》这本书里找到了它在 Google 里的定义:SET - Software Engineer in Test。实际上也是软件开发工程师,但是专门针对测试领域,通过编写代码去帮助开发工程师测试他们的业务代码。

所以测试开发一般是不参与公司产品代码开发的,而是去测试产品代码,发现 bug,保障质量。

但这么说比较简单,实际上每个公司对这个岗位的定位不完全一样,我了解到的情况是这样的:

有些公司,测试开发偏重于开发工作,他们开发测试工具、测试平台、测试框架等,提供业务测试人员去使用,帮助整个测试团队提高测试效率和完成人工无法覆盖到的测试面。但他们较少参与到测试中来,不怎么去写测试用例,所以如果具备开发能力就能胜任。

有些公司,测试开发偏重于测试工作,他们要参与到业务中,针对接口,API 编写用例代码去测试。这要求他们具备测试能力,知道如何设计用例,并熟悉业务产品系统的特点。

在我看来,如果某个测试开发的工作内容特别偏向其中一块对其发展都不太好,我的观点如下:

如果多数时间的工作内容属于第一种,也就是偏重工具,平台开发这一块,那么纯开发也是能做的,这样对比开发就没有什么优势。因为测试产品都是对内使用,很多功能优先考虑实现出来,能够快速投入交付,而不会像产品功能那样,要考虑 UI、性能、稳定性、安全性等等更加复杂的环境,这样对开发能力提高有限,天花板就会很低。

如果多数时间的工作内容属于第二种,偏重测试业务的话,过多测试方面的工作,会让其开发能力得不到很好的发展。因为接口,API 分析及用例设计也是很消耗精力的事,更多的情况则是借助现成的框架去开发用例代码,执行代码,提交 bug 和维护它们。缺乏更深入的开发能力就会在面对更复杂,更底层的系统时没有很好的应对策略。

不过两种情况相比的话,第二种发展会更好一些,因为培养了测试能力,同时具备代码水平,可以往自动化测试方向平移。

因此作为测试开发,需要把自己的天花板设的更高,成为资深级的测试开发,就需要很好地兼备测试以及开发两种能力。

一是,保障测试体系下的开发能力。

理解移动端和 Web 端的热门自动化测试平台,测试框架技术,原理,要非常清楚它们的架构是如何设计的,用到了哪些开发技术。

熟悉移动端和 Web 端的热门框架,原理和用法。能够搭建开发一套 Web 服务(这对开发质量监控等平台是最基本的)。

其他的开发基础知识,编码等常规能力,在上面两类能达成的基础上就不会存在太大问题。

二是,保障测试体系下的测试能力。

测试讲究质量、效率、覆盖率等,所以对持续集成、持续交付、分层测试、mock 测试要理解和熟练
一些专项领域,移动端的比如耗电量、流量检测、CPU 内存监测、流畅度、界面切换时间、内存泄漏检测等的测试方法要非常清晰;Web 端的并发,吞吐量监测,可用性监测等方法也要十分清楚。

对业务系统比如分布式,负载均衡等的测试方法也要掌握。

所以说,一个测试开发干得好,干到极致的时候,真的是比一个开发还要强。

在国外,大的软件公司的软件测试工程师通常都需要是非常资深的软件开发工程师才能够胜任的。因为挖掘漏洞这种活,需要工程师对系统有非常深入的认识。

国内的情况,由于竞争太过于激烈,小公司在测试上只能停留在界面 UI 的黑盒,也只有大公司对测试开发才有更大的需求,因而薪资待遇也更高。

测试开发这个岗位我其实非常看好,未来需要的人才是综合性人才,一个具备多种能力的软件工程师一定是更能适应软件行业发展的。但综合性意味着很难精通,所以对测试开发来说,向上突得更高意味着要付出更加巨大的精力。

源自公众号 henryWoo



留言