一个产品的生命周期是由产品从准备进入市场开始到被淘汰退出市场为止的全部运动过程。而一个软件测试工程师的生命周期(职业生涯)亦是如此。如何在生命周期的每个阶段最大化的利用好这段时间,是我们每一个即将成为测试或者已经成为测试工程师应该关心的问题。

        软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。中国的软件测试行业发展起步较晚,但是发展速度迅速,岗位缺口也很大,因此各种行业转行的或是读过几本软件测试基础书籍的人都跑来分一杯羹,软件测试培训机构也是异军突起,这就导致了目前就业的众多测试人员中,大家的水平参差不齐。有的人做了 7、8 年仍然只是一个小公司的功能测试,而有的人起点较高,一毕业就进入大公司进行了正统的培训学习实践,本来这没有什么问题,大家各自混好自己的小圈子,做好本分工作就好了。

        但是,受世界金融危机的影响,世界经济的持续低迷,人们的消费能力逐步下降,导致企业的收益下降,进而众多的小公司逐渐倒闭,加上互联网风口已经不能把猪吹的来飞起来了。互联网史上最大的裁员风波已经袭来,这是每个 IT 从业人员都能感受到的吧。那么作为一个小测试,我们该如何在这场暴风雨中挺过去,如何面对 35 岁的人生焦虑,如何让自己的职业生涯走的更长远,我们需要做的是,重视测试生命周期的每一个阶段,在每个阶段做该做的事,让你走的每一步都是按照自己的规划走,而不是被年龄的增长和生活的现实牵着鼻子走,接下来我们就一起来分析测试工程师的生命周期有哪些阶段,每个阶段我们应该如何规划自己的发展方向。

入门阶段

        这个阶段的你就像一张白纸,对软件测试这个行业比较陌生,隐约有个概念就是这是一项专门找软件 bug 的工作,但是软件的 bug 长什么样?相信很多人都没有一个清晰的认识。这个时期的我们头脑里会出现很多的问题,什么是 bug?做软件测试需要会什么技能?零基础该如何学习?做软件测试收入高吗?软件测试加班多吗?软件测试是不是很枯燥?等等问题可以凑成一本十万个为什么。在入门初期,我们就像一个无头苍蝇,到处乱撞,只要看到软件测试相关的东西,我们都会很感兴趣,就是想搞清楚软件测试到底是什么,我到底适不适合做这行。

        “软件测试是越老越吃香的工作,岗位缺口大,工资收入高,比开发轻松”,想必很多人都曾经被这样的话洗过脑,一方面这是当时软件测试刚刚兴起,大家都不太了解这个行业,因此培训机构为了招生而想出来的一种说辞,另一方面其实对于当时刚刚出现的这个新职业,这些描述也确实有几分道理。但是时至今日,初级软件测试人员已经接近饱和,这份职业也并没有越老越吃香这种说法。

对于入门阶段的你,最重要的事就是想清楚以下 3 个问题:

你是否喜欢这一职位,有足够的热情来迎接这一岗位?
你是否能够接受互联网的工作节奏?
你是否有足够的学习能力来紧追互联网发展的步伐?
下面解释一下这三个问题:

1)俗话说,干一行爱一行,你如果做着自己不喜欢的工作,每天都是一种煎熬,如果你觉得当你发现一个程序的 bug 时,有一种兴奋感,一种成就感,那么恭喜你,你至少还不讨厌这份工作。

2)互联网是出了名的加班多,之前热议的 996 事件,其实在 IT 人员看来,这只是生活常态。曾经我告诉朋友我们晚上一般九点下班时,他们惊讶的目光,我仍然记得,但他们还不知道,9 点并不算什么,因为我还经历过很多个通宵上线。这些都是一个即将走入 IT 行业的人员应该慎重考虑的问题。

3)这一点是最重要的,即使你有足够的热情来迎接工作,但是热情也有耗尽的一天,唯一能支撑维持我们一路走下去的是我们的学习能力。互联网技术日新月异,一个技术往往流行 2-3 年就会被新的技术所代替,技术种类多,领域细分繁杂,技术更新频繁,必须要有很强的学习能力才能匹配公司发展的要求。不爱学习的同学,上进心较差的同学,劝你早点放弃。

如果上述 3 个问题,你都 OK 的话,恭喜你,进入下一阶段。

初级阶段

        到达此阶段,说明你已经下定决心要和软件测试死磕到底了,“干一行,爱一行”,既然选择了这个工作,那么我们就要付出自己的努力,争取在测试小圈子里激起一波涟漪。这一阶段是每个测试工程师必须经历的阶段,在不断的工作积累过程中,我们逐步对软件测试有了一个大概的概念,软件测试就是开发用代码写出来的产品,上线之前,我们测试要做好质量把关,保证产品能够顺利上线。

        “哇,xx 开发,这儿有个 bug!”,想必刚入行的我们都曾做过这样的事吧,一脸兴奋的告诉开发,自己发现了一个 bug。开发会马上回一句:“不可能,我写的代码怎么会有 bug,我本地都是好的!”。初级阶段一切都是新奇的,我们总会崇拜的看着高级测试工程师和开发一起争论一个功能的实现方式或是哪段代码需要优化,否则会造成性能问题。总希望自己也能像他们那样牛逼,成为测试大牛,于是,下班后到处找资料学习,各种公开课听着走,总希望把一切知识都装进自己的肚子。

那么我们该如何利用好这段求知欲超强的阶段呢?

打好基础,脚踏实地

        这段时间,我们不必急于求成,“万丈高楼平地起”,我们需要做的是夯实自己的基础知识:测试用例设计能力,业务理解能力,沟通能力。认真看看几本测试经典书籍《Google 测试之道》《软件测试的艺术》,理解测试的岗位职责,学会如何在产品开发迭代过程中把好质量的关。学习别人的测试用例设计方法,学习别人的逻辑思维,尽可能写出规范且覆盖全面的测试用例。

        学会巧妙的和开发、产品进行沟通,比如当你发现 bug,你可以装的弱弱的和开发说:“xx 开发,你来看看这里是不是有问题?为什么和 PRD 写的不一样呢,是不是我理解错了?”,开发肯定会想:“不会吧,难道是我写的代码有 bug?”,这个时候就会避免大部分和开发的冲突。所以说,说话也是一门艺术。(本人不建议,测试用例都写不好的时候,就去搞自动化和性能,测试最重要还是业务能力,自动化测试只是辅助能力,请刚入行的测试同学要分清主次轻重)

中级阶段

        一般工作 3 年之后,你已经能够写出一套溜得很的测试用例,也能和开发搞好关系,生活走上正轨,但总觉得生活缺少点什么。没错,你已经花了很多时间来深入理解软件测试这项工作了,已经大致摸清了你测的那款产品的坑在哪儿,如何快速的完成测试任务了。因此你开始思考,是否需要做点 什么来提高自己的工作效率,做点不一样的东西。

        这个时候,你开始了职业生涯中第一次抉择:是学自动化好呢还是性能好呢?是学 UI 自动化好呢还是接口自动化好呢?是学 java 好呢还是学 python 好呢?是主攻 app 测试呢还是主攻 web 测试呢,或者是服务端测试,亦或者是安全测试?在此,我不能帮你做决定,人生的一切抉择都是靠自己选择,即使路不好走也是自己选择的。

但是我给在此阶段且比较迷茫的同学一点建议:

1)关于测试方向的选择

        不管是 app 还是 web,或者是大数据、安全、人工智能,都不重要,软件测试划分很细,每一个种类都有它存在的必要性,无论是哪一方面,最主要的还是看自己对哪一方面更感兴趣,做起来不感觉心累,每一种都是有前景的,只要专攻某个领域,将来你就在这方面比别人有更大的优势,我们要选择一个方面重点发展学习,当然其他种类的知识点也要略知一二。

2)关于开发语言的选择

        无论是 java 还是 python 或者 php,语法始终只是你完成任务的工具,不要过于在意谁谁谁都在用 xx 语言,我也要学这个,不然过两年就找不到工作了。虽然市面上的开发语言千千万,但是作为测试人员,只要我们掌握最流行的一种就可以了,因为语言都是融会贯通的,一通则百通。

        当然由于测试人员的代码水平较开发人员要差一些,如果想快速上手,写点测试脚本,我还是建议大家可以学习 python。python 网上资料一大堆,大家可以去搜廖雪峰的 python 教程(建议学习 3.+ 版本),如果大家今后想往测试开发的方向发展,或者干了 2 年测试准备往开发方向发展,我建议你们可以学习 Java,推荐一本书《Head First Java》图文形式,幽默风趣,或者是马士兵老师的 java 视频教程,虽然年代有点久远了,但是讲的确实很好。

3)关于自动化和性能的选择

        在此之前我要强调一下,自动化只是用于回归测试,协助我们减轻重复劳动力的工具,不要过于夸大他的作用,更不能盲目跟风,为了自动化而自动化。我们是工具的使用者,而不是被工具牵着鼻子走。如果有精力和时间,或者在工作中有机会接触到自动化或性能的话,我建议大家都去学一下,虽然我刚才让大家不要过度追求,但是在如今的招聘要求中都免不了要求会自动化和性能技术。

        自动化测试分为 UI 和接口,UI 分为 app 和 web 两种,app 自动化常用工具是 appium,web 自动化常用工具是 selenium。就测试金字塔而言,我个人觉得接口自动化更有实用价值,UI 自动化虽然看起来很炫酷,界面自动点击回放,但是 UI 是我们产品研发改动最多的,元素经常变动,维护成本比较大(当然已经定型的成熟项目除外)。而 UI 的功能交互都是依赖于接口的数据传输,接口是更为底层的一种功能测试,不要想的太过高大上,接口测试简单且好维护是各大公司都在做的,它更能早期的发现问题,不用等到前后端对接后再来改,符合敏捷测试的要求。

        性能测试是比较难的一个课题,由于性能测试要求懂代码,懂运维,懂计算机原理,懂数据库,懂业务等等,很多测试同学望而却步。其实性能测试难不在于写脚本,准备测试数据或者执行,而是难在性能分析和调优。当然我们如果不想做专职的性能测试工程师的话,我们只需要学会做性能测试的流程和简单的性能分析就可以了。包括拿到性能需求后,如何设计性能脚本,如何准备大批量的测试数据,如何搭建压测环境,如何监控性能指标,是做单节点压测还是做多节点的分布式压测?这些都足够我们学一阵子了,拿到性能数据之后,我们怎么去分析问题,tps 上不去是什么原因?cpu 使用率过高怎么办?这些都是我们需要是实战去积累的,我们大多数人没有美团,阿里那样的高超技术和开发环境,不能自己开发性能工具,因此我觉得作为普通测试大众,只要会使用市面流行的 jmeter 或者 loadrunner 即可。

高级阶段

        到此阶段估计已经不需要我的建议了吧,大家都是测试老油条了,测试行业的走向,测试技术的发展,测试思维的建立,测试这一工作的坑都已经踩得差不多了。但是我还是要给那些测试经验不太丰富的同学聊一聊。

        何为高级?工作年限够长就是高级了吗?不不不,高级是你已经经历了前面的种种,经受了社会的毒打,知道了自己想要什么而做的职场第二次抉择。一般到这个阶段,测试的发展方向有 3 种:

1)技术专家

        技术专家可以狭隘的理解为测试开发(或者性能专家)。这条路坎坷不好走,但对于不太善于管理和人际沟通的同学,也不失为一条良策,专心搞技术,不问世事。工作 5-6 年以后就可以开始思考自己的发展方向了,如果选择了走技术这条路,就要深入的学习代码,平时多练,多和开发沟通学习,写一些测试工具或者测试平台,让自己能达到一个中级开发的技术水平,才能在测试开发(性能专家)这条路走的更远。

2)做管理

        做管理不易啊,和人打交道是最难的,你要承上启下,既要把上级安抚好,又要把下面的团队管理好,夹在中间的确挺难受的(不过排除某些天生具备管理天赋的人),如果做管理的话,我劝大家尽量做一名技术管理,你要懂技术也要会管理,如果你是个什么都不懂的纯管理,手下的人是不会服你的,做技术的都一股傲气,必须以技服人。相对来说,管理的生命周期要比技术专家长一些,因为技术永远在更新,年纪大了以后,学习能力确实很难跟上。因此选择做管理的同学,平时就要多学习如何和产品,开发,领导打交道,如何完美的完成工作,让大家都觉得舒服。

3)创业转行

        到达 35 岁人生关键点后,家庭,身体各方面原因,已经没有了刚毕业的很多优势。既不能加班,身体也不行,工资还要的高,因此,裁员就离你越来越近。所以不少这个年龄段的同学都选择创业或者转行,要从自己工作 10 来年的岗位去向另一个方向打拼,也是需要很大的勇气的。在此建议即将创业转行的同学,千万不要盲目创业,因为创业者的钱是最好赚的,到头来自己没赚到钱,却交了巨额学费。创业前一定要做好详细的前期调查,先小笔投入试水,一步一步来,千万不要走捷径,任何一个行业都没有捷径,唯有脚踏实地。再啰嗦一句:创业有风险,投资需谨慎,特别是现在经济下行,消费能力不足的情况下。

总结

        前面说了很多,基本上描述了软件测试工程师这一职业的完整历程,360 行行行出状元,只要用心做,不管做什么,你都可以成功,即使你很难突破你所在的阶层,但是至少能在目前这个阶层处于偏上水平。至少生活还算过得去,加油吧,成年人的生活没有容易二字,既然不能反抗,那就好好享受吧。

声明:图片来源网络,如有侵权联系删除。
本文原创,禁止转载
关注公众号,共同学习进步:testdkt


↙↙↙阅读原文可查看相关链接,并与作者交流