强烈建议阅读完此文,让你少走弯路,避免被忽悠。
前言
忙忙碌碌又一年,2020的计划完成了么?目标达成了么?买房、买车、脱单、加薪等等,都是很现实的事儿,2021了,80后步入40+,90后步入30+,曾经的追风少年,如今的油腻大叔,突然感觉时间好残酷,职场也一样,竞争、裁员,不知道下一刻的命运,只有强者才能主宰自己的命运,无畏未来,正因为如此,大城市才兴起了很多付费的自习室,因为氛围很重要;
接触了很多测试,说自己年龄大,或者技术不好,焦虑,有职业危机感,也是,如果你的测试技能和你的年龄、工作年限等不匹配,怎么和别人竞争呢?特别是,00后都要来抢饭碗了,如果技术本来就一般,薪资低也很正常;
作为一名测试人员,如何成为主宰自己命运的强者呢?
如果想要在测试领域好好发展,提升自己的测试技术是必不可少的,首先,选对方向更为重要,之前写过一篇《测试技术提升建议》,引起了广泛共鸣,功能测试、自动化测试、测试开发、性能测试、安全测试、测试管理,每个测试方向都不简单,但是,大环境就是,你不会点代码、懂点底层原理啥的,都是算low的。
去boss上搜几个招聘,看下招聘要求。
测开20k以上
性能20k以上
招聘要求分析及行情
1、我搜索了下20k上下的岗位,确实测开岗位比性能岗位多,但是很多测开要求性能、或者有性能经验优先
2、不管是测开还是性能,开发的主流技术、性能先关的,都是面试造火箭、要高薪必备的
3、语言,还是java更有竞争力
4、测试薪资行情
一直以来,不管是私聊还是群聊,我发现大家最向往的两个提升方向是测试开发和性能测试, 既然有的测开也要求性能,那先说说性能。
性能测试
说明:这里说的性能测试不是只会用工具瞎跑而不会监控分析的,只会工具瞎跑的是性能外行。
为什么选择性能测试?
1、面试造火箭、要高薪必备:互联网用户越来越大,对性能要求越来越高,所以性能测试越来越被重视,很多薪资偏高的招聘把性能作为必须项,或者加分项;
2、提升测试地位:要提升测试地位,就要多做和开发有交集的测试,比如性能,因为性能是大部分开发的弱项,终于有机会扬眉吐气、怂开发了,很多测试不是抱怨测试没地位么?
3、代码弱不想写代码:绝大部分性能测试任务确实不需要写多少代码,因为有主流工具功能强大,偶尔写点简单的beanshell;
4、前景:持久的竞争力,性能是经验的积累,做的越多,能力越强,薪资待遇也会越高,职业周期也越长,类似中医;性能是架构师的知识面,需要不断深入、不断实践、不断积累、不断总结,能力才会不断提升,而且,经常和高级开发、架构师沟通交流,和优秀的人一起,肯定能学到很多;
性能要不要代码?
关于代码,不是所有性能问题都是代码问题:比如压测过程中,错误日志提升“获取不到jdbc连接”,这个就该考虑jdbc配置的问题了;dba不会代码,还不是照样数据库调优;
如果性能要深入全面,还是需要代码的,因为有些问题是代码的问题,至少能根据线程栈信息去看懂对应的代码,然后进行分析、定位,所以,强烈建议后期补一补代码;
刚开始困难,可以让开发帮忙一起看(毕竟代码量庞大,有些问题不是看几行代码就能分析等位到的),你就旁边学,多请教,哈哈,日积月累,慢慢就上手了;
总之,性能可以让你触类旁通;
性能需要的知识:
性能需要学的东西很多,总之就是架构师的知识面了,需要不断的学习、实践、总结,要做深入,也需要代码,至少能看懂,这就是为什么面试造火箭性能必备;
基础:性能理论、并发工具(jmeter、loadrunner等)及协议
后端性能:技术栈基础(linux、nginx、tomcat、mysql、jvm、分布式消息中间件、分布式存储中间件、分布式框架、微服务)–监控、分析及工具–全链路–性能自动化;性能最好能看懂开发的代码(建议学java)
前端性能 :有工具可以做
其它扩展:maven–git–shell–jenkins–docker–kubernetes
关于性能等级,来看看网上有些资料是怎么说的:
性能外行(简称瞎跑型):会做简单的脚本跑并发(复杂的,需要写代码的,就搞不定了);
性能初级:会性能监控;
性能中级:会常见性能问题的定位调优;
性能高级:会调优,性能自动化预警监控、容量规划;
严格说:jmeter≠性能,切记,别被别人忽悠了,而且,性能和jmeter也非强关联,jmeter只是并发工具而已,并发工具很多,用其它工具或者自己写并发代码都可以模拟并发,性能重点是监控、分析、调优。
关于性能等级,来看看网上有些资料是怎么说的:
性能外行(简称瞎跑型):会做简单的脚本跑并发(复杂的,需要写代码的,就搞不定了);
性能初级:会性能监控;
性能中级:会常见性能问题的定位调优;
性能高级:会调优,性能自动化预警监控、容量规划;
严格说:jmeter≠性能,切记,别被别人忽悠了,而且,性能和jmeter也非强关联,jmeter只是并发工具而已,并发工具很多,用其它工具或者自己写并发代码都可以模拟并发,性能重点是监控、分析、调优。
测试开发
说明:这里说的测试开发,是能开发测试产品、测试工具的测试开发。
为什么热衷测试开发?
1、招聘岗位多,待遇可观:貌似测开成了大半个全栈的代名词了,大家去看下招聘,有些测开,除了能测试开发,还要求会性能、会自动化等等,总之就是要会性能,待遇当然不会低;
2、工作压力小:开发测试工具或者测试产品,一般不会很紧急,因为都是内部使用,所以,相对公司里面临产品上线、项目交付压力的专职开发来说,压力小了很多,所以秃顶的测试开发很少;
3、无法胜任开发:部分短暂做过开发,或者培训过开发,但是无法胜任开发的,就转测开了,毕竟会写一些代码,有点优势;
4、前景:可能对自己的开发能力提升有限,因为测试开发开发出来的工具或者产品,都是本公司内部使用,用户量有限,基本上不会考虑高并发、高可用、安全性等(因为是内部用,基本上就没这些需求),估计也不会有这些性能及安全需求,不像专职开发,用到各种前沿的技术、框架,必须考虑性能、安全等等,提升肯定不如专职开发快;当然,测开的产品,能满足公司需求即可,况且,每个人对自己以后定位、规划不一样,如果以后考虑转其它方向,比如产品,这都是要和开发打交道的,懂主流开发技术,是优势也是趋势;所以,我对年龄小的都是建议转开发,不要怕压力大,能吃苦,几年后,你的职业路径完全不一样。吃得苦中苦,方为人上人;如果你单纯喜欢写代码的测试开发,那请以高级开发的目标来严格要求自己,这样职业周期才长,转项目其它方向,优势也大;另外,建议java,这样方便多和开发交流学习;
测开需要的知识
测试开发要求前端、后端都要会(一般的公司,不会给测试开发还配专职前端),可能还要自己设计产品,那就是全栈开发+了,对能力要求也很高,如果产品设计不佳,可能最终无法落地投产,也可能迭代困难,最终要完全重构;
前端:html–css–js–vue
后端:javase–tomcat–jsp–springboot(最好先学spring–springmvc)–mysql–mybatis–shiro–redis–nginx–消息中间件
其它:maven–git–shell–jenkins–docker
当然,也可以选择python技术栈,我还是推荐java,详见下面语言选择。
自动化测试
经常看到一些测友花大量时间研究自动化,虽然是当前测试基础必备技能(12年左右测试基础必备是会功能用例设计方法等价类、边界值等等,17年左右测试基础必备是功能自动化),但是自动化只是回归,发现不了新问题(除非你业务测试漏测);
就算你专职做自动化,不出1年,保证让你感觉没意思,因为每天复制粘贴维护脚本,技术含量有多少?你的提升有多少?哪有每天写框架的活儿?
建议:ui自动化会面试即可,接口自动化更实用,能自动化持续集成、跑起来出结果即可;
so,不建议花太多时间折腾,自动化没机构吹得那么高大上,要提升竞争力,还是多花点时间学代码、性能之类的吧,以及了解主流技术栈的底层原理,这样才能面试造火箭要高薪;
如何快速学习自动化?
代码基础就不说了,至于框架,我建议网上找个自动化框架看懂,修改下满足当前工作使用即可,也可以找我要一个。
安全测试
至于安全,除了下面说到的知识范围,我觉得还应该再加上行为学、心理学等,安全的水太深了,而且,稍微不注意,就突破底线,可能就进去包吃包住了,还配备保安,so,不推荐;
测试管理
部分测试朋友说,打算转管理了,我建议,最好是做技术型管理,否则难以服众,所以,还是先提升技术,然后业务、管理方面再提升下,总之,机会是留给有准备的人的。
测试提升建议:语言&技术方向
语言选择
至于语言的选择,推荐一个高级(java),加上1-2个脚本(python、shell),很多招聘也是这么要求的,可以说是标配,脚本语言会基础即可,尽量深入高级的,也就是java,而且,当前项目绝大多数是java吧(其次是go,python的太少了),学java,自动化、测开、性能、白盒都能做,和开发无障碍交流。有问题,也可以问开发,何乐而不为呢?
代码,只要坚持多写多练,入门还是挺快的。
实在困难的,特别是非计算机专业的,可以先python入门,把简单实用的接口自动化搞定,找找成就感,可以加我微信给你发一个自动化框架,看懂,改改,持续集成跑起来就ok,自动化是回归,不要花过多时间,然后再深入java。
技术方向选择
如果你不想写代码,又想高薪,性能是个不错的技术提升方向,面试造火箭、高薪必备,而且提升竞争力、提升测试地位,值得选择。但是要做深入,至少得看懂代码,so后期还是需要学;
如果你喜欢写代码,就选择开发或者测试开发,哪怕你不做性能,但是有些岗位还是要求性能,所以,还是得学性能,哪怕不做性能,还是得先过面试造火箭这一关吧?
不管哪个方向,只要努力做好,都不会差,而且,不管哪个方向,做到最后都是:测试开发要会性能,性能测试要会代码,安全也需要代码(厉害的安全都是自己写工具);
推荐:接口自动化 + 性能
后记
人的精力是有限的,特别是有娃后,或者年龄大了后,所以,不建议学多个方向,选一个方向深入即可,因为技术更新快,学太多,后期维护技术成本也大;
我现在回家,只能等娃睡了才悄悄起来开电脑总结整理笔记,所以,如果你还没到这一步,特别是单身的,抓紧时间学吧,少刷剧、少刷抖音,提前把技术打牢,跳个好公司,拿一份满意的薪水。
技多不压身,持续学习,提升竞争力;在32之前务必把技术弄牢实(32之后技术不好,跳槽真的难,30之后都开始难了);
有朋友说,打算转行了,如果转非计算机相关行业,又没有门路或者资源,还是不建议,毕竟隔行如隔山,转行的成本很大,特别是上有老,下有小,还有各种贷的朋友,要转,也建议转产品、技术支持之类的,但是前提还是先把技术学好吧,趋势都是要技术型,比如:懂技术的产品。
抛砖引玉,欢迎交流;
加油吧,测试人!路就在脚下,成功就在明天!
未来的你肯定会感谢现在拼命的自己!
给大家推荐一个软件测试技术交流群:810119819 群友福利免费领取
愿你我相遇,皆有所获! 欢迎关注微信公众号:程序员阿沐
1.免费领取一份216页软件测试工程师面试宝典文档资料。
2.软件测试学习路线以及相对应的视频学习教程免费分享!