您现在的位置是:首页 >技术交流 >思维觉悟,3年时间从7K到30K的薪资转变,我的高级测试工程师前进之路网站首页技术交流
思维觉悟,3年时间从7K到30K的薪资转变,我的高级测试工程师前进之路
感谢那些嘲讽我代码写的烂的人,五年开发经验的前辈嘲笑刚出校门踏入社会的我,让我放弃了开发工作,走向测试的这条道路,肯定有人觉得这是降维打击,建议大家可以继续往下看。
曾经的开发经验对我测试工作的帮助是无与伦比的,数据库,编程语言,liunx,环境部署维护,程序打包,参与代码走查,专项测试,性能分析,抓包工具的使用等一系列让很多测试人员头疼的事情并没有发生在我的身上。一学就会,一点就通,举一反三。
我为什么要选择测试工作?
起初,与很多人一样,我也很迷茫,我是不是一定要从事与自己专业相匹配的工作。校招的时候自我认识不足,把自己的放到很高的位置,放弃了9k的offer,等到社会上找工作的时候处处碰壁,好不容易找到一份工作,工资低,加班严重还要承受某些素质底下的同事的嘲讽。我的专业是软件工程,主修的是J2EE方向,web后端开发。等我从事后端开发工作的时候,由于刚从大学毕业,代码能力还有些不足,实际工作中经验丰富的同事能够轻松完成的任务,而我却需要加班完成,同时代码的质量还不太高,测试发现的问题也主要集中在我负责的模块中。我发现仅仅是实现功能并不能很好的适用团队的工作,满足产品的需求,经过深思熟虑,我决定放弃开发的工作,成为一个测试工程师。也许我成为不了一个好的开发,但是我会成为一个好的测试。因此我放弃了成为一个优秀开发者的机会,转身投入到测试工作中。
两个礼拜成为一个初级测试工程师
我从6个月开发实习转到了测试岗位,为了应聘上测试工作,我用2周的时间把大学里的《软件工程过程》和《软件质量管理》两本书看了再看,翻了再翻。结合我之前的开发经验,我对软件产品的认知到达了一个新的高度。我也终于明白了以前工作后的学长们说的,“以前我着重与技术之类的书籍,等我工作一段时间后,我才发现我在大学中没有好好学习《软件工程过程》是多么无知,多么愚蠢。”
想要成为一个初级测试工程师,边界值,等价类,场景法,因果图,流程图等基础的用例设计方法是必不可少的,结合他们来设计测试用例,尽最大的可能确保测试不会遗漏场景。数据库能够掌握基本的增删改查,liunx系统的常用命令等也是必不可少的。
初级测试工程师掌握的技能:
- 测试用例的设计
- 数据库
- liunx系统的常用命令
- 抓包工具的使用
- 沟通能力。
就我的理解来看:无论是开发还是测试,起初工作时如果能够进一个工作流程完善,技术完备的公司对你的职业发展是百利而无一害的。首先,你能够学习到软件从需求到运维的一系列的流程,什么时间需要做什么事情,虽然有些步骤可能觉得有些繁琐,但是不能否认它产生的效益和起到的良好的规范效应。其次,无论哪一种软件开发流程都能够帮助你更好的理解软件的周期,如果从一开始就能够了解并接触到整个软件从无到有的过程,对今后的职业发展不言而喻。
半年成为一个中级测试工程师
当我入职之后,我开始了点点点的工作,整体就是写用例执行用例。等我跟整个团队熟悉之后,我利用周末休息的时间,把整个项目之前的所有需求和用例看了一遍。由于是小公司,文档很不完善,遇到看不明白的需求文档我都会记下来,等到公司之后询问产品经理和对应的开发人员。就这样我大约利用了一个多月的时间看完了项目已有的所有文档。之后我又用了一周的时间熟悉数据库中的表,搞清楚他们的表结构,关联关系。跟开发人员了解测试环境服务的部署路径和启动顺序,主动承担了测试环境的部署工作(测试环境的部署原本就应该是由测试人员维护,由于同事的态度问题,一直由开发人员维护,为此我与开发人员搞好关系,将测试环境的部署掌握到自己手中)。
由于我有编程基础,测试团队中有一个大佬再搞自动化并维护,近水楼台何乐而不为。于是我大学的时候自学过python,虽然忘得差不多了,但是捡起来还是很快的,工作之余,我就开始在B站上学习自动化测试,有不明白了先请教搞自动化测试的同学,还是不明白的再请教大佬。慢慢的大佬认可了我的能力,开始带我维护项目的自动化代码,同时教了我很多视频和书本上学不到的东西。不久大佬辞职之后,老板让我接手并维护自动化项目。
原来的自动化项目只有web端,后来我又用appium实现了app端的UI自动化。自此我与自动化测试结下了不解之缘。我可以毫不要脸的说,UI这一块所有的问题我基本上都遇到过了。
中级测试工程师需要会哪些技能:(除了初级的技能之外还需要掌握)
一定的专项技能:例如:app的专项测试,性能测试的分析,自动化技术等
除了需要掌握的技术之外,还要有其他的能力:
- 能够带领新同事尽快的融入到工作中来。
- 了解产品,风险的预见性和如何规避。
- 文档能力。
- 能够带领小的团队负责项目的一部分内容或者整个项目。
向高级测试工程师前进
当我的能力已经完全胜任了中级测试工程师的时候,我开始学习一些测试理论,参加过几次机构的线下沙龙,参加过他们的线上技术分享,当然并不是参加过几次沙龙,技术分享就可以了,而是要根据他们分享的内容来学习一些自己不会的内容。从我开始实习到现在已经工作三年多了,前一年我一直再学习一些我不会的技能,后两年我基本上都在研究测试的理论和思想,从测试左移到测试右移,从devops到testops,从测试策略到测试风险的规避,学的越多就会发现自己不会的越多。只能不断的充实自己。
高级测试工程师具备的技能:
- 掌握一门或者几门编程语言,例如python,java,shell等。
- 能够根据实际情况制定合适的测试策略。
- 能够协调团队人员,保证高质高量的完成测试任务。
- 利用一切手段来提高测试的效率。
现在我所在的团队,我们在开始追寻一种低成本的敏捷,使用yapi平台来进行API自动化,使用rebotframework来进行app的UI自动化,使用API接口自动化和UI的契约测试来回归整个项目。既节约了成本,又节约了时间提高了效率。
同时测试的左移和右移同步进行,产品的需求必须由测试人员一起评审通过后才能确定,同时要制定好验收标准 ,否则打回。当产品上线后,每天取生产环境的日报进行分析,每个批次取生产环境的awr日报进行分析。效率大幅度提高。
前车之鉴
前进的道路是曲折的,学习的路上有很多困难,以下是我的前车之鉴。
1.我有一个习惯,学习新知识的时候先要买一本相关的书看一遍,哪里不明白的圈圈点点,但不做深究直接跨过,等看完之后再去网上找视频找文档学习。相对于文档我更喜欢视频类的资料,因为讲解视频中会有讲解人员的个人经验。视频学习推荐B站和慕课网。慕课网的课程质量都很高,B站的课程很多很杂,需要自己甄别,好处是免费的。
这里推荐大家选择一个课程跟着学。当时部门同事就给我推荐了一个课,就是下面这个,大家可以看一下
我是在听了免费课程之后,觉得这个课程的设置相当ok的,新手学起来也特别容易,而且老师直播在线,有问题当场就能解决,每次上课都能学到有用的东西,新的知识也能吸收到,从理论到实战,知行合一才能真正的掌握...
大家也可以先去下载听一下,自行保存;如果有过期失效的,可以点击下方卡片去群文件查看
2.学习新知识的时候,要讲究够用原则。不要过度挖掘,非要学的特别深奥,这样是不可取的。
3.万变不离其宗,一类工具的原理基本上都是一样的,使用方式也大同小异,学习完一款工具后在横向对比学习,你就会学会这许多的这一类工具,结合实际情况来选择一款合适的工具来开展工作。
4.初始要选择一样技能学习到精通,不要广撒网,百门通不如一门精,当你精通一门技术之后再着手学习其他技能。例如:我根据的实际情况,我选择的是自动化,首先学习的是工具自动化,后来在学习代码自动化。横向对比,纵向对比总结优缺点。无论是数据驱动还是关键字驱动,精准测试还是单纯的契约,都吃透玩精。
5.python简单易学,如果要向学习一门编程语言可以从python入手,菜鸟教程就是一个不错的网站。
6.shell是我们提高效率的有效工具。
7.我看过的觉得比较不错的书《全程软件测试》《软件测试技术指南》《测试架构师修炼之道》。
这里分享作者的书单:
8.精通一门测试技能之后要开始注重测试的广度,例如app的专项测试,兼容性测试,安全测试,性能测试。不一定要精通,但是至少能够使用一款工具来进行相关的测试,将产出报告交付给开发人员进行分析。
9.如果你的产品经理不太专业,那么你要多多考虑用户的隐形需求。
个人对于非计算机相关专业转行做软件测试的一点建议
- 由于软件测试的门槛相对于开发来说较低,非计算机专业可以通过培训或者自学达到测试工程师的从业标准,如果你已经超过30岁了,那么我不太建议你转行。但是对于大学刚毕业的同学,测试工程师是一个不错的选择,毕竟现在测试工程师还是非常紧缺的,大多数测试从业者都是转型过去做测试的,测试思维比较缺乏,年轻还是很有竞争力的。
- 如果学习比较吃力但是经济基础比较好,参加一个培训还是不错的选择。不想花钱的可以去B站、腾讯课堂、慕课学习,这上面的视频教程都是免费的。建议学习的时候开1.5倍速率,他们讲的都比较墨迹。
- 《软件工程与过程》,《软件测试技术指南》比较不错,初学者可以看一下,等工作经验丰富后可以看朱少民的《全程软件测试》,这一本书我已经看过不下5遍了,每次看都有新的收货。
- 工具不要贪多,先学一个就好,postman,charles。
- 测试用例的设计非常重要,一定要熟练地使用掌握测试用例的设计方法。
- 不要只考虑正向测试用例,逆向测试也非常重要。
现在我所掌握的技术
接下来我想分享一下这些年来,我对于技术一些归纳和总结,和自己对作为一名高级测试者需要掌握那些技能的笔记分享,给那些在测试这条道路上一路走到黑的朋友一点帮助!
一、Linux必备知识
Linux作为现在最流行的软件环境系统,一定需要掌握,目前的招聘要求都需要有Linux能力。
二、Shell脚本
掌握shell脚本,包括shell基础与应用、shell逻辑控制、shell逻辑函数等。
三、互联网程序原理
自动化必由之路:前端开发基础知识以及互联网网络必备知识。
四、Mysql数据库
软件测试工程师必备Mysql数据库知识,不仅仅停留在基本的“增删改查”。
五、抓包工具
Fiddler、Wireshark、Sniffer、Tcpdump各种抓包工具适用于各种项目,总有一款适合你。
六、接口测试工具
接口测试神器,你绕不开的强大工具:Jmeter。小巧灵活:Postman。
七、Web自动化测试Java&Python
了解自动化的目的,熟练掌握testng&unittest自动化框架,以及断言与日志处理。
八、接口与手机自动化
专业接口调用、测试解决方案。组建完整的web和接口自动化框架,Appium整体使用。
九、敏捷测试&TestOps构建
揭开TestOps的神秘面纱,持续集成Jenkins框架烂熟于心。
十、性能测试&安全测试
软件测试的彼岸:性能测试和安全测试,选对方向,努力爬坑吧!
目前还不清楚需要掌握哪些测试开发技术栈的测友们,可以根据我的这个学习架构路线,不断地去摸索与提升,突破技术的瓶颈,可以说,这个过程会让你痛不欲生,但只要你熬过去了。以后的生活就轻松很多。我也是走过这样一段路,才能获得更多高薪职位的机会,付出终有回报,也算是对我能力的一种认可吧,真正的证明了自己的价值。至少税后30+的薪水是我当前状态下比较满意的。
给大家分享一些干货,自己根据从事测试的经验,整理一套系统的自动化进阶教程(课件+笔记+案例源码+测试工具使用文档),跟大家分享下我的成果,定期更新教程和学习方法、学习资源、分享自研自动化测试平台,需要的小伙伴可以关注我点赞可以点下方卡片链接即可免费领取!最重要是免费的!免费的!免费的!【很多人问我为什么无偿分享,我只想说大家可以给我点个赞吗,送给粉丝福利】
最后,不要成为一条咸鱼
想以测试为长期发展职业目标,是需要好好提升自己,毕竟“逆水行舟,不进则退”,如果你还在原地,那也只能在大环境下被困。好啦就到这里了,祝大家2023年能升职加薪,拿到心仪公司的offer,事事顺遂。
如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。