我眼中的测试开发
前言:
Hi everyone!这是一篇不那么正经的分享,只是在回答过很多人相同的问题后我突发奇想,觉得何不产出一篇文档,也因此这篇文章阐述的内容可能比较接地气,但如果你是未入行的新人那么我还是建议你看下去,相信对你会有帮助的,起码可以当午后小故事看~
正文:
一、测试开发是什么
回想入行前,我认为的或者说我理想中的测试开发应该是开发占比更高的岗位、是问题驱动的开发岗位、是技能树更多维化扁平化的开发岗位、是奋斗在测试领域的技术人才,这些现在回过头来看只能说蒙对了一半。
幸运的是确实存在这样的工作模式,不幸的是那是高工的工作模式,与我们基本无关,当然这不是因为我觉的自己菜或者懒当不上高工才这样说,这一点我后面会说,这里先略过,总的来说对于大部分人尤其是校招新人来说测试开发就是你们认知中的测试,或者说是有良好技术基础的高级测试,这一点可能跟你们见过的面试官说的不一样,但大家换个角度就很容易理解。
对测试组来说测试工作和开发工作相比在工作量上前者是绝对的大头,开发工作本质上是服务于测试工作的,虽然优秀的开发产出很容易出彩,但要理解有没有好的技术产出是决定是否优秀,测试质量则决定饭碗保不保的住,并且技术工作的投入如果没有成果则=0,而测试工作只要干了就是工作量,这一点无论是对个人还是团队都是适用的,加上去年开始的行业寒冬,很多公司测试裁员,人力有限又需要保测试工作的情况下,会导致更多的测开员工工作重心逐渐偏向测试。
二、测试开发技术发展方向
测开技能分三个方面,分别是测试、开发和管理,这里测试就包含常说的黑白灰盒、性能、混沌、安全之类的,管理就是管理能力,这俩说白了经验积累很重要,这里就都不多说了,主要来谈谈开发方面。
测开的开发技能树是比较多维化、扁平化的,通俗讲就是啥都地会但只会一点点,概括来讲主要就四个方面————测试相关、后端开发、前端开发、other,其中测试相关就是上面说的自动化、性能测试、混沌测试、安全测试等等,这些东西为什么在测试和开发里我都提到了呢,是因为这几个属于常见的测试工作内容且初期不太需要开发能力。
例如性能测试初期只需要使用业内常用的软件或者公司内部的工具去发压去获取报表就行了,但测试需求不可能一直这么简单,万一工具不支持protobuff协议呢,万一是游戏业务需要支持kcp协议呢,或者说java业务需要能写录制类,也可能存在一些很叽歪的限制不得不要能写工具去发压去汇总、清洗甚至报表展示数据,总的来说没有开发能力的支持你很难在这个技术方向走远,包括有些公司会指定招性能专家,你不能说熟练使用各种工具、熟练分析数据、熟练制作报表就成专家了吧。(写到这突然想起来之前接触过一些小公司招的性能专家好像就是这样的,只能说事无绝对....)
再说下后端开发和前端开发,如果你身边有干了几年开发的朋友,你可以问问他这句话『测试是公司里最喜欢搞平台的组』他肯定深有感触,这句话有调侃但也有道理,测试开发的主要是工具,工具方便使用集成到平台是很好的思路,最终导致的现象就是测试组里各种平台一堆,这就涉及后端、前端开发。测试的平台基本都是对内的,简洁能用就行,所以前端开发要求极低,基本就是靠大家大学学的那点就能实用了,实在不行低价找个前端外包了事,所以前端技能其实普遍比较浅,主要是后端比较重要。
后端来说分两方面,一方面是测试方向比较通用的python后端技术栈,像Flask,Django这些是很多测试组自己用的,另一方面如果平台功能需要大量使用业务框架的服务时,测试组的后端也会直接用业务框架,这时就是说业务是什么语言什么框架实现的你就地会什么,而且互联网公司这方面变化还是比较快的,就我从业短短的2年多中就经历了分别以php、java、go为主要语言的业务,难免会碰上不熟悉的语言,但也不要慌,在测试中慢慢学就行,这里建议合理请教熟悉的rd,尤其是java、C++这类语言,对应的开发很多是从入行至今一直深耕一种语言的大佬,你遇到的很多问题对他来说就是看一眼的事。
最后说说other,测开技能栈很大程度上受业务技术栈、业务需求影响的,所以也会有很多不通,上面我说的三类是基本通用的,还有一些是不一定有的,例如有些业务可能对图像质量有要求,或者游戏行业有些特有的技术栈、甚至有些岗位可能是算法测试,不过这些占比并没有那么大,我也不太了解就不多说了。
三、职业发展与优缺点
测开或者说测试职业发展还是比较清晰的,基本就是从基础测试工作做起,从小的测试工作到大的测试工作,从团队测试中的一员到团队测试中的owner,从负责一点技术开发工作到单独负责一快技术开发方向,最后就是选择走测试方向走管理岗或是技术方向成为团队技术开发负责人。
优点的话,一是与研发相比来说门槛低,加班短,但不会差太多,有时候大家会看到网上有测开同学抱怨加班,但这种往往研发加的更狠。二是薪资差不多,大家看看校招薪资就知道了,基本上比研发低1-3k,还行。
缺点的话,一是上限低,这一点有资源的同学可以去了解下,你心怡公司的最高级别qa和最高级别rd分别是什么级别、有多少人,一个项目qa和rd的owner一般是什么级别,基本上都是qa比rd要低的,在互联网公司上限在很大程度上决定了你最高能到什么薪资级别和晋升速度。(这很好理解吧,假如最高领导就比你高3级那你一年升一级不全成领导了)
二是技术积累弱,说实话qa的技术积累真的比较弱,这里主要是跟研发比,毕竟研发哪怕是个实习生都至少地熟悉框架能搞定自己的环境吧?qa真不一定,遇到很成熟的部门测试环境都是直接申请就行,我见过很多都转正了的qa连linux环境都玩不转、裸环境搭框架起服务都不会....这还只是初期,要是入行一年两年甚至五年后呢,所以很多公司qa往上走的时候都会要求转岗干一年研发,包括早些年测开这个岗位很多大佬都是从研发转过来的,所以会看到组内有些高工qa吐槽年轻rd代码写的烂,人家是有硬实力的,说不定就跟研发负责人以前是战友。
四、是否推荐走测开职业以及一点建议
没有完美的职业也没有一无是处的职业,根据我个人经验我推荐一些情况可以考虑测开方向:
1、技术实力不够硬、学历不够硬又想进大厂的,双非本在qa里还是有不少的。
2、项目经验拖后腿的,其他研发项目经验讲究技术+对口,qa这就没有对口这一说且要求还浅一点,还能指望学的是测试专业不成,只要体现出技术基础、学习能力就行。
3、就想挣笔钱,30岁左右就有跑路想法的,qa瓶颈比研发来的还早,快的30慢的35就会到瓶颈,不是说一定会失业,但晋升肯定阻塞,不过其实很多人都等不到这个瓶颈(懂的都懂)反正是要有这方面预期的。
一些小建议:
1、实习期间借机会去提升与社会接轨的技术基础比单纯混实习经验实习项目更有效。
2、测开校招要求区间严格小于研发,不要过分纠结项目经验和实习经验,面开发的简历面测开一点问题没有,在我们看来优秀的技术基础才是优先级最高的,项目经验进来一个月包够。(一周排3个需求锻炼锻炼)
3、offer选择时不建议选跟钱相关的组,事业心不那么重的同学也可以避开跟娱乐业务相关的组,这样你就能避开大部分加班狂魔。