上个礼拜刚好转正了,三个月试用期,五月份换的工作。
现在这份工作,相比上一份确实好很多,比如工资直接涨了一倍,7到14,13薪,朝九晚六,从不加班,项目也简单,包括我在内测试组一共有7个同事,但是每个人分到的任务真的很少,用自己一句话总结就是上班7.5小时,摸鱼6个钟。。。对,我现在的公司是7.5小时制的,所以才说轻松
说一说上一份工作吧,因为刚换工作没多久,目前这份工作还没什么代表性,上一份我干了2年,可以让我讲很久了。
2020年的时候,因为疫情,我毕业后的第一份工作辞掉了,但是找了很久都没找到下一份,我简历写的薪资要求是7-8K,那时候能找到一份7K的就已经不错了。
每天投几十份,也接到过面试,但都不理想,有些是我自己不喜欢,面试时去到才发现公司环境太差,有些是给的工资远远低于7这个数字;有些是面完之后,别人觉得你不合适,比如我面过小鹏汽车,那个应该是小鹏在广州的某个办公点,具体地点我现在忘了,很偏僻,地铁转公交,兜兜转转两个钟,最后来到一个汽车产业园,周围还是一片农田。一个中年男面试我,很随和,先问了mysql,基础的的单表查询我能回答上来,但后来他给我画了几张表,让我做个多表查询,做不出来,不过面试官态度真的很好,全程微笑,并没有因为我做不出来而面露不悦或者终止面试。
然后问了接口测试这一块,他问我postman如何切换环境测试,因为我之前有用过postman,隐约记得是通过大括号{}做一个引用来切换的,所以还是可以回答上来。因为时间距离现在都两年多了,有些细节忘了,就只记得这两个。面完之后,我感觉不是很理想,因为mysql这块是我的弱点,过了几天一点回应没有,就知道挂掉了…
2020年那会,找工作真的太难了。。。
后来还是找到了,就是我上一家公司,电商行业,自研的saas平台。20年5月份入职,还记得入职那会,他们测试就只有一个小姐姐,后来才知道因为项目即将上线,他们才招了我进来。
入职第一天,小姐姐直接把一份测试用例、以及原型发给我,让我在两个星期内把用例过完一遍,有问题直接提禅道上。
说真的,我一头雾水,他们都没有对我进行培训,就直接让我负责这个新项目的测试了,但我新来的,对这个项目真的不熟悉啊,主流程是什么?不知道。如何业务闭环?不知道。
幸好我还应付得了,凭借之前实习以及第一份工作积累下来的经验,自己慢慢摸索,两个星期内就基本了解了主流程、基本业务,也顺利把测试用例跑完了,提交了N多个BUG。
其实这个电商平台刚上线那会,做的只是一期功能,看上去很庞大,涉及web、APP、小程序,但现在看起来,也不过如此。
在公司站稳之后,顺利转正,因为我从入职第一天就开始负责这个saas电商平台的测试,后来公司组织架构调整后,他们就让我专门负责这个项目,另一个同事小姐姐,负责其他杂七杂八项目的测试。
整个2020年,都在一种无聊又安静的环境中度过,那时候客户并不是很多,每次迭代功能比较少,我一个人负责全平台测试,还是可以的。真正转折点应该是2021年,电商行业火爆,公司业务扩展迅速,基本上客户量每个月都以一种指数级的速度来增长,需求自然就多了,往往一次迭代就有10个功能,有些还是大的功能,需要开发这边改动很大的代码量,新添加接口,所以BUG就很多,往往都是一边开发,一边测试,有BUG就迅速提给开发,火速修复,发布测试环境,再验证。
然后是加班,2021年开始,加班很多,特别是上线前几天,项目组往往加班到八九点,上线当天加班到11点。累是肯定的,但主要还是我一个人负责整个项目的测试,从web、APP、小程序,都是我一个人搞,其实公司中途也尝试过给我招人,不过都因为某些原因跑路了,有些人干了一个月跑了,有些刚好准备转正,又跑了,所以这两年来,终究还是我一个人扛了下来,就自然而然变成我一个人负责整个项目的测试,以及相关的工作。
有的人会问,不是还有一个小姐姐的嘛?是呀,整个公司就只有我们两个测试,但她也和我一样,忙,各自负责一些项目。
21年的时候,心力交瘁,迭代频繁、新需求源源不断、加班严重(没加班费),虽然我公司是双休的,但我还是累得像狗,拿着7K的工资,整个项目都是我一个人测试,相当于一个人干着两三个人的活了。
那一年,我都有无数次提桶跑路的想法。
但仔细想了一下,发现自己还是不够资格,因为我在这家公司做了这么久功能测试,单纯的点点点,就算跑路了,那下一份工作呢?还是重复这样的点点点吗?
痛定思痛,也就是这一年开始,下定决心要把自己的专业技能提升上去。
jmeter
比如jmeter、postman,2018年我实习的时候跟着部门老大学的,大学那会儿老师可没教这些。因为这份工作单纯就是点点点,我几乎没用过这些,我就去网上自学,还有B站,我就是在B站白嫖了某一个机构的公开课,把jmeter的入门都学会了,比如接口的上下关联、token跨线程调用、参数化、正则表达式、json提取、jmeter+ant+jenkins、压力测试、jp@gc监控,等等,学了之后,自己把jmeter应用到公司的项目,把项目中将近1000个主流程接口全部集成到jmeter中,每次迭代上线前两天我都会跑一遍脚本,来检验有哪些接口又被开发搞坏了(防止背锅,你懂的)…
而且学会jmeter接口测试之后,确实大大降低了压力,提高效率,比如说有时候开发改了某些逻辑,只是后端修改了接口,前端没改,那我只需要测接口就知道有没有BUG了。
然后是postman,因为熟悉了jmeter,postman做起来就简单多了,因为他俩差不多的。所以很多事情往往没有大家想得那么困难,只要你学会了其中一种,另一种就很容易上手了。
python
python是一定要学的,这是我个人理解,不信大家可以去主流的几家招聘APP查一下,你想拿15K以上,必须要会python、java其中一门语言,而python相对简单、容易入门,所以绝大多数测试都是以python为切入点,用它来做接口自动化、UI自动化。
我自己是在博客园、CSDN这些论坛学的,看大佬们的文章。但我并没有从零开始学python,我是直接copy大佬们的代码,自己一点一点修改,把它应用到公司项目去。
我最开始学的是python+unittest+requests这个自动化框架,遇到不懂的,就直接网上查,比如说我在学这个框架的时候,最开始就遇到一个跨不过去的难题,token如何跨.py文件传参? 我就论坛上查,学到了两个方法,一个是通过global设置全局变量,另一个是把登录接口传出来的token写入一个文件里面,遇到需要token的时候就取出来。
所以网上自学,基本都是这样的,你想学基本的、入门的,网上肯定有,论坛、B站,都行,自学过程中遇到很多问题,也是可以通过网上查,通过大佬们的文章,自己慢慢领悟,比如上面提到的token如何跨.py文件传参? 我查到的文章,他们写的代码和我的不太一样,我是参照他们的,然后自己改了,但最后的效果都是一样的,所以自学的过程,提升的速度是非常快的,因为自己是带着问题去学的,事前思考,事后复盘,往往会更有见效。
mysql
linux
Fiddler/charles
这些就更不用说了,作为一名测试,肯定是要学会的。像数据库mysql,我个人总结是:面试必问、不懂必挂。
linux在面试中也是问得比较多。
fiddler、charles这些是抓包工具,一定要掌握的。我在上一家公司的时候,一开始其实是没那么在意抓包这种,后来我就学着一边测试,一边打开F12,时刻关注接口的变化,就在这种潜移默化中,对抓包、接口的分析也懂了很多,对于提升自己的接口测试、定位前后端BUG,确实有很大的帮助。
我后来吧,还自学了charles的其他小功能,比如弱网测试、打断点、映射,都是非常实用的,都在实际测试中用处很大,比如说之前一直有客户反馈我们的APP偶尔有闪退,但是开发暂时没法定位是啥原因,后来我用charles的弱网,终于把BUG重现出来了,因为网络很差的时候,前端没法处理一些数据,安卓APP自带的机制,直接就报crash了。
另外,我还自学了adb+monkey,用于APP测试。因为上一家公司的时候,我们是有APP的,加上两年前我面试过一家公司,面试官问我会monkey吗?那时候我听都没听过,又挂掉了…所以我就干脆把这个也学了。
除了上面这些,在2021年的时候,我还跟着项目组的架构师,学了性能压测、了解了微服务、分布式、k8s、nginx负载均衡、linux服务器,等等。然后自己通过网上自学,用目前比较流行的jmeter+grafana+influxdb搭建了一套性能测试的框架。
虽然没有进行过很正规的性能测试,但起码知道了很多关于性能压测的东西,比如全链路压测、分布式压测、中间件、redis等等
所以,2021年的时候,我一边工作,一边在空余的时间里自学,一个测试工程师所需要掌握的技能,我基本都学了,在学习的同时,还把自己学到的知识应用到公司的项目中,一方面确实提高了测试效率,另一方面也提升了个人水平,找下一份工作的时候,底气也足了。
顺便说一下自己这份14K的工作是如何找到的。
我是今年五月换的工作,上一份工作刚好做满了2年。
经过2021年的自学,感觉自己的能力已经有了质的提升,像jmeter、postman、python、mysql、linux都学了,还学会用jmeter+ant+jenkins、python+unittest+requests搭建了自动化测试框架,基本上达到了一个自动化测试工程师的水平吧,觉得找一份12以上的工资应该不难。
起码我当时是这样想的,预期薪资是12K。
万事俱备,只欠东风,今年4月开始在五百丁更新自己的简历,有了上一份工作的经验,自己简历也多了很多亮点,比如独立负责过大型互联网saas平台的测试流程、使用jmeter+ant+jenkins、python+unittest+requests搭建过自动化测试框架。
投简历的时候我是有针对性地去投,凡是薪资低于12的一律不投递,集中投递15-20这个范围的。
投了没几家,就开始有公司约面试了,当然也有不少外包,疯狂主动找上门,比如我在boss、拉钩上设置了简历公开,最开始目的是为了让其他HR可以看到我的个人简历,但设置简历公开之后,每天都收到20、30多个HR主动打招呼,其中90%都是外包公司的。。。
在这我给大家总结一下为什么外包会主动找我,因为我2019年毕业到现在,已经有三年测试经验,上一家公司我是独立负责大项目的全流程测试,会接口测试、会jmeter、python、mysql,外包公司是非常青睐这些,加上大多数外包的测试岗位,其实还是手工点点点,所以在她们看来,我就是一个相当不错的候选人。这不是我吹,事实就如此,我也有不少同学在网易、平安做测试,同样拿着十几K的薪资,干的还是功能测试。
但我个人不是很喜欢外包,所以就拒绝了。
最后相中了一家,三轮面试,电话面试、网上笔试、视频面试,一炮而过。视频面试的时候,个人感觉挺好,面试官问的问题,全部都回答上来了,而且很多问题都是在以前实际工作中遇到的,结合自己的感受,自己概括出来,回答的效果就非常好,这种肯定不是培训出来的小伙伴所能到达的境界。比方说,面试官问了我一个印象中最深的BUG,哈哈,这个问题还真是遇到了,我不知道面试官是不是也是第一次面试,还是照搬网上面试题。
我个人回答是,不止一次遇到过一些印象深刻的BUG,我就举例其中一个,去年国庆、今年元旦的时候,我公司服务器宕机了十几分钟,当然宕机的原因有很多,比如常见的就是节假日流量太大了,服务器集群本身配置很低,扛不住大流量访问、或者是代码有问题某些死循环耗尽了资源、又或者是不合理的查询导致内存大幅度飙升,比方说后端接口在查询时没有做分页,我在测试的时候,直接使用DataFactory给测试环境造了几十万条数据,然后查询某个操作日志的时候,后端直接返回了几十万条数据,这种情况,服务器不崩才怪呢,所以我在日常测试中,但凡是碰到有查询功能的,一律要求后端做分页,一次加载300到500条数据就够了,后来我们还优化了查询的方式,每次只能查询三个月以内的数据,尽可能减少查询的数据量。ps:每次只能查询三个月以内的数据,并不是说你只能查过去三个月的,比如6-8月的,不是这样的,你还可以查今年1-3月的,还可以查去年10-12月的,只不过做了限制,日期输入只能选三个月的范围。这样一来,服务器压力就比较小了,特别是我们做电商行业的,数据量真的是太大了,并发量又高,10万以上的TPS,对数据的访问一定是慎之又慎。
当我这样回答的时候,我相信面试官是非常肯定我的答案的,因为这种答案结合了自己公司的项目,实际发生的现象,最后如何解决、优化,全都有,肯定不是那些培训出来的小伙伴能想得到的。
第三轮的视频面试,除了有点小紧张,因为我是第一次线上视频面试的,面试官说话又有点听不清楚,哈哈,不过还好,总体感觉良好,问的问题都回答上来了,除了刚才那个“低级”问题,面试官还问了我linux常用命令,比方说 如何动态查看日志? 这个当然是tail,例如tail -n10 -f xx.log。
还问了对python熟悉吗?测试中有没有用python做过什么? 这个刚好问到我熟悉的点,去年到今年,一直在学python,我就回答有用过python+requests+unittest框架做接口自动化,直接封装项目接口,再结合jenkins做了持续集成,在日常的时候跑一遍接口,检验有没有问题,上线前两天也会跑几次接口,确保主流程、重要的业务场景没有任何问题。
在聊到python自动化时,面试官又问了 “你在做自动化的时候,有没有尝试对一些测试数据进行处理?”、“你的自动化是如何分层的?”
第一个问题我可以回答上来,无非就是ddt呀,就是测试数据和用例要分开,方便不同的数据来测试而不用改动代码,或者结合csv数据表也行的。
第二个问题,我一开始不是很理解,我就问对方这个“分层”指的是什么?我以为是项目架构的分层。面试官说你的用例、还有一些你写的方法、全局引用等等是如何分开的,以及用例是如何执行的?哈,他这么一说我就立马懂了,这无非就是unittest框架的分层嘛。太简单了,直接上图。
类似于上面这种,其实就是一个接口自动化的框架,unittest的。
分层指的就是公共方法、测试数据、测试用例、测试报告、日志等等,分层,比如说:
commom里面我就写了一些get、post请求的公共方法、读取文件的方法;data里面我放的是测试过程中生成的数据,可以给到下一个接口调用的;gol放的是全局引用,典型的就是token传参;report就是测试报告;test_case就是测试用例,按功能或业务模块划分;run_all就是执行测试的主方法,上面截图就有完整的代码,通过discover查找测试用例,批量执行,最后HTMLTestRunner输出测试报告。
反正就是巴拉巴拉地说了一通,按照自己的理解和平常玩unittest的经验,给面试官总结性说一下。除了以上这些问题,其实视频面试时,问的问题还挺多的,从基本的常识、问到mysql、linux、python、自动化、测试流程,等等。不过我都能顺利回答上来,哈哈。
面完之后,还不到15分钟,他们的HR小姐姐给我打了电话,说我目前是离职还是在职状态,听到这个,我就知道稳了,刚好那时候我已经和公司提了离职,也都在交接工作中,所以就直接回答在职中,但已经提了离职申请,在交接工作,预测最晚下个礼拜三就能入职。HR小姐姐听到后,就“嗯嗯嗯,好的”,我听她的语气我就知道这个offer已经拿定了。
大概又过了半个小时吧,小姐姐正式通知我公司录用我了,然后她就问了我目前手头上还有没有其他的offer,预期薪资是多少…听到这里,我心里就笑了,真的,她一开始就问我手上有没有其他offer,那我肯定回答有啊,哪怕我没有,作为谈薪资的阶段,这位HR小姐姐貌似还有点年轻,居然把筹码丢给了我,让我获得了主动权,我说现在手上有两个offer,一个是15K,13薪,另一个是16K,12薪,但目前还是在考虑中。然后HR小姐姐就说她们这边开出的是14K,13薪,让我考虑一下她们,我跟她说我现在考虑中,因为另两个offer虽然薪资高一点,但一个环境不太符合我,另一个是金融行业外包。(其实这都是假的,你懂的…)
后来吧,这个小姐姐说可以帮我争取一下涨500…过了一会,又打电话给我,最终敲定的是14.5,13薪,如果我考虑的话,就马上发offer到我邮箱。
谈判拉锯战到了这里,其实已经可以收网啦,我就跟小姐姐说我这边考虑清楚了,接受offer,哈哈哈。
小姐姐火速确定了我的邮箱是不是简历上那个,得到肯定后,不到10分钟,叮咚,你的offer已收到,请注意查询。
于是乎,沉浮软件测试三年了,终于突破10000的薪资,从7到14,刚好翻了一倍。
还有一点要说明的,我到了新公司签合同才发现,当初HR小姐姐给我争取涨500块,其实是餐补+交通补贴,并不算入合同工资,所以每月发工资其实是14000(税前),500块要到月尾才打到工资卡。
上一家公司给我带来了什么?
我目前在这家公司做了三个月,刚好转正,试用期也是发100%薪资的,这一点很nice。
特别是不加班,真的让我太开心了,双休、不加班。
不过现在也有一点不好的地方,就是项目太轻松的,都是点点点,功能测试,我原本以为自己在去年学了那么多技术,可以到新公司大展身手,什么接口自动化啦,性能压测框架啦,现在才发现,草率了,压根就没有用武之地,所以我也不知道这家公司到底为什么要花14000块招我进来做功能测试,招一个毕业生不香吗?8000块足够了。
我感觉自己在这家公司也不会待很久了。
我在上一家公司虽然很累,但说真心一句,确实能学到太多东西了,电商领域本来用的就是互联网行业最前沿的技术,比如微服务、分布式集群、k8s,而且我觉的上一家公司那些开发真的是牛,在这种敏捷迭代中,写一个新接口出来,特别快,一个大功能往往要写十几个新接口,他们一个人一天就能写出来,几乎不用思考的,修bug的速度也很快,我每次提BUG,10分钟后,他们就让我测试环境试一下。还有,我对比了一下目前这家公司,他们用的是java,而我上一家公司用的是.net,我个人觉得上一家公司的开发,写接口特别规范,不管是命名,还是传参,一目了然,一看接口前面几个单词就知道是属于哪个模块的。虽然这群开发有时候也会乱动代码,搞出一些莫名其妙的BUG,但他们的技术,真的没毛病可挑。
还有他们的那个架构师,技术也是杠杠的,和我同样是90后,但人家可牛了,java、.net样样精通,之前我负责的这个电商saas,就是他一手带起来的,底层的中间件,用的什么框架、组件啥的也是他敲定,从零开始,带领团队给公司创造了一个saas平台出来,目测现在的TPS早已经超过了15万。
我去年的时候也是跟着他学的性能压测,第一次知道了jmeter+grafana+influxdb这种框架,居然还有这种玩法。。
可以这么说吧,我在上一家公司之前,就完全是一个小白的功能测试,linux不懂、mysql半桶水、jmeter学得不精、python不会,实在没啥优势,虽然我也是本科出来的,学的还是软件工程专业,但大学四年自己真的没学到什么。在上一家公司,自己的能力就有了一个质的飞跃,特别是python这一块,自学,以及跟着公司的大佬们学到很多,了解了很多,所以我在今年换工作面试时,才表现这么好。
所以呢,我现在是特别感谢上一家公司对我的栽培,要不是工资太低、加班太多,我应该就不会换工作了,哈哈。
好像上面还有点没说清,我现在这家公司,开发的水平如何?
一言难尽,水平参差不齐,特别是一些97、98后的开发,写的接口我自己都看不下去,每个接口都controller,我知道java有controller,但也不用写到接口名称上面去吧,还有,有些接口url后面拼接十几个参数,看得眼花缭乱,我尝试给公司的项目搭建接口自动化框架,但看到这种接口我就瞬间没兴趣了。更要命的是,有些项目有swagger,有些压根就没有,我问他们要接口文档,就直接丢一个word文档给我…好吧,我还是自己抓包吧,自己动手,丰衣足食。
所以,这家公司除了工资高一点,工作轻松,貌似也没有机会可以学习,特别是没办法提升个人技能的时候,我感觉也是时候跑路了。
这个周末在五百丁,我又更新了自己简历,不出意外的话,可能国庆之后我就真的要跑路了。
不过在跑路之前,我得抓紧时间学一下python的UI自动化,我之前一直学的都是接口自动化,UI这一块还得补回来,另外,性能压测这一块我自己还是欠缺的,因为想要工资20K以上,性能肯定是要会的,比方说性能进阶的,有分布式压测、全链路压测、性能监控、性能分析、调优方案,这些都是要具备的,而不是简单了解就可以的了。
除此之外,我可能还要学一下java了,我个人觉得如果要成为高级的性能测试工程师,必须要具备架构师一样的水平、思维,单靠python肯定是不行的,所以打算学java。
资源分享
下方这份完整的软件测试视频学习教程已经上传CSDN官方认证的二维码,朋友们如果需要可以自行免费领取 【保证100%免费】