开篇
当开始写这篇文章时候,才感受到人生如白驹过隙,4 年时间飞逝,自己也从一个初入职场小白到能肩负项目核心事务的测试开发。在这里,总结 4 年来的心智成长之路,也是借机互相交流,并无对错之争,欢迎有见解的讨论,共同进步。
我的经历
在两个大厂分别做了两年的测试开发工作,暂且成为 M 厂和 A 厂吧。负责过游戏自动化框架开发、专项测试工具开发、版本质量保障、Devops 平台开发,也带过小团队。每个厂,每份工作都力求突破,过程辛苦,自然结果都是很满意的,都拿到了不错的绩效。
测开的岗位定位
虽然在经历过的项目中,测开的定位大部分都是 “测试”,在 M 厂里面架构会比较特别,将测试开发与业务测试彻底分开。测试开发更多是做测试平台和效能提升相关工作;业务相对单纯,整个团队会一起面向功能测试痛点、研发痛点从质量检查角度出发做工具与平台,解决研发过程和测试过程的痛点。
这份经历回想起来,还是很有意义:做事非常专一,技术也获得了不少成长。唯一不足的是,这些工具、平台也好,是否真正让业务产生了更实质上的提升,很难去精准量化。后期也做了很多量化工作的事情,建设量化的数据模型;所以切入 Devops 赛道,学习了很多 Devops 理念,造了一些轮子。当然一个人的精力是有限的,在一个成本中心里面,想去做 Devops 是很容易上手,但是做完善一整套 Devops 落地,几乎不可能的。
后来的工作,就开始跟业务了,能非常明显感觉到,业务带队水平的提升,沟通能力的提升,更多从一个质量保障的角度去做质量输入和输出,也算是亲身体会到了 QA 这个职业的 “不容易”:人在工位坐,锅从空中来,深有体会。
两段不同的经历碰撞,对测试开发这个岗位有了更纵深的思考,包括岗位价值、核心竞争力、行业发展有了一些思考。
测开核心价值
测开的定位既然也是测试,那么它的核心价值其实一句话可以总结:为质量买单,为产品保值,为过程降本。
测开本质上归属于测试序列,哪怕再厉害的测试技术、测试平台、测试工具,不要被这些所谓的 “高大上” 的技术名词掩盖了真相。做这些自动化、平台工具最终都是为了更短的时间、更低的成本输出质量,然后(这里是重点)根据输出的质量去买单。这里说的直白一点,做的这些事情当然有意义,但是跳出本位思维,站在老板,站在项目经理的角色去看待,想要的只是质量结果和谁为这些结果买单。
总有人需要为结果买单,为过程买单,核心价值也就出来了。作为测试序列的一员,最重要的存在即为质量买单。也就催生出了,为什么测试要负责过程管理、左移右移,很少见到开发提到右移到测试。测试岗位的内容自然就杂而不精了:不是一个很合格的项目管理、却又要参与项目管理环节;不是一名单纯的技术,却又要在业务测试中兼顾工具开发。甚至个别项目或者公司要求测试也要负责需求的质量把控。
因此,在一个买单岗位他的存在大部分除了输出质量之外,本身不产生直接的商业价值,成为了一个背负成本的节能减排部门。也就是上面提到的为质量买单,为产品保值,为过程降本。
2022测试生涯该如何转型
怼测试开发工程师来说,看懂代码,熟练使用测试工具,能做ui、接口、性能的测试,具备测试经验和测试思维逻辑是基本要求;既要会业务功能测试,又要能做代码层接口及单元测试,更重要的是通过能力和经验的积累,能搭建用于技术研发团队的工具平台,以更好的降低公司成本和提供工作效率。大致包括以下部分:
测试开发所需要的技术栈
一、具备一定测试经验。只有设身处地的经历过测试人员的痛点和难点,才能切实解决他们的问题。
二、会使用常用重要的测试工具。比如性能测试常用的Loadrunner、jmeter;ui自动化常用的selenium;单元测试常用的testng、junit;安全测试常用的appscan,js注入,xss注入,sql注入等等。
三、具备测试工具开发能力。下面介绍一些主流的技术栈:
测试工具系统框架搭建:1)java+maven+SpringMVC ;2)python+django
对于第一种框架,最好创建分层化的多模块工程,以便更好的设计代码框架和结构。通常dao层主要是和数据库关联;web层是controller,是前端和服务层的衔接;service层提供一些公共服务或业务处理逻辑。
Maven工程有了之后,运用当前主流的框架-springMVC,将前后端数据库关联起来。
对于无代码基础,想入门测试开发的小伙伴,可学习第二种框架:python+django,较为易学易用。
前端页面:html,css,jquery,bootstrap,Echarts,前端页面是门脸,是使用人员操作的入口,也是数据输入和展示最直观的地方。
Css样式决定页面布局和美观度;jquery是一种js框架,极大地简化了 js 编程;echarts能够提供简单易用的常用图表,使页面更加有档次感、数据展示更加直观简洁。
后端服务:spring,mybatis,使用Spring框架可以简化很多基础性的工作,配置好后可以方便构建业务应用,是一个非侵入性的轻量级容器。
数据库:Mysql或Orcale 的数据库安装,库表创建,字段设计,常用的sql语句
系统:能熟练在windows或linux系统上搭建项目,日志查看等操作
服务容器:tomcat服务部署,nginx负载配置,docker使用
持续集成:git,jenkins
开发工具:idea和eclipse
代码调试:testng或junit的单元调试及debug和远程debug使用
测试开发是以质量为中心,以业务为导向,以快速健康地保障产品交付为目标,不仅需要能cover日常测试工作,还需要肩负测试与效能齐头并进的使命的一个岗位。
测试开发岗位的难度比普通的测试要大很多,测试和开发都要懂。
那么,传统的测试工程师会被淘汰么? 这个谁都不敢做保证。要想在这个行业生存下去,唯一的丛林法则就是:优胜略汰,要跑赢技术更迭。
测试开发技能难点和学习通道
测试开发涉及到的技术知识繁杂,有一定的技术门槛。另一方面,每个团队在落地自动化测试技术体系时,又会衍生出各种各样的个性化实战问题。
比如,学习自动化测试框架容易,但是在落地实战中,框架稳定性与适用范围、用例稳定性、用例可复用性等问题则让人头大。又比如,同样做自动化,不同公司背景的实施能力和效果都不尽相同。对你们团队来说,在当下这个阶段,自动化测试该如何做?做到哪个程度?人员素质能否跟上?投入产出比是否值得?等等。质量保障是一个复杂的系统工程,在各种因素影响下,平衡好“质量-效率-成本”三者关系非常不容易。
测试高手之所以成为高手,不仅是因为技术实力强大,更重要的是经历过风雨,有各种踏坑填坑的血泪经验! 这也是测试开发工程师从入门到高手技能成长的核心挑战。
想快速提升测试开发技能水平的路径:
找到领域专家,学习过来人的踏坑经验,并结合自己公司业务实践落地,内化成自己的能力并持续优化。
站在巨人的肩膀,自然可避免很多不必要的弯路。如果还能找到志同道合的小伙伴一起打怪升级,交流探讨遇到的各种问题,那就更好了。
送给大家一句话:学习是个不断积累的过程,只有量变才会质变。测开这条路注定充满艰辛和坎坷。但他不会辜负你,只要你肯努力必定有收获,薪资一定会翻倍。
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取