2022年大部分应届生和一些想转行IT行业的奋斗者都将目标定位了软件测试行业。今天就和大家聊一聊软件测试0基础如何自学,并且如何面试。如何能让每位读者看后能有最大的收获呢,琢磨了很久,先将我的思路列出来:
1、对于零基础转行自学者而言,看书是好的自学方法吗?
2、该如何自学和面试?要还原目标,给转行人员认真介绍测试行业
3、有目标后,应该怎么自学?
4、有目标后,应该怎么去面试?
一、对于零基础转行自学者而言,看书是好的自学方法吗
题主提到的两本书,本着负责任的态度,我查了查,看了下目录,大致也了解了一些。但其实这些对于找到工作还是远远不够。
1、书本信息虽准确却滞后:
看书可以,但是对于一个零基础要找对应工作,帮助不大。
书这东西尤其技术类的,写的深了你看不懂,写的浅了你以为就这些。
还有就是书本的信息滞后性:书从编写,整理,既稿件,调整再到出品发布,印刷,再到出版社售卖这是一个很长的过程,这本书拿到手往往针对前几年的问题,日新月异的今天,未必跟得住时代行业的发展。
比如:移动端都是说:安卓&iOS,但现在给你个鸿蒙系统的你咋测?
就好比我那会儿学python下的版本就是3.5,可书上版本都是2.7,连print打印都输出不出来,一边看一边查才知道写法变了。
只有拥有实操经验多了,再看些书其实收获会更多。
所以对于零基础看书不如看视频(文章后面有关自学方法时,会推荐一些视频)。
2、书本理论同实际缺乏关联:
比如书本会介绍QTP和LoadRunner基础的知识,比如:LR从录制到手动编写,预测系统行为和性能的负载测试。可是实际企业实操中,性能好是怎么定义?关注的指标又是什么?
且据我的了解,QTP和LR基本都是正版软件,一般小公司用不起,大公司自己能写不会用。除非一些投标类的公司可能会用,因为要在投标过程中体现自己软件达到怎样的一个标准程度。
所以书本知识,我觉得更偏重于思想,而不是实操。而领基础转行更需要实操。
3、书本都会有侧重点,导致你很难对测试有成体系了解
出几个测试基础的实战题,看你能回答上几个:
1) adb命令,Linux命令?
2) 数据库语言,数据库的增删改查语句?
3) 测试时用到什么工具?
4) 测试购物车的支付问题,压测问题,测试流程。
5) http和https的区别?http里面post请求 和 get请求的区别?
6) bug优先级,如果开发不愿意修改bug,你会怎么处理?
7) 负载测试和压力测试过程中逐渐增加并发用户数负载,每次会加多少?
8) 抖音首页的用例 ;微信发朋友圈用例;根据场景设计测试用例,关注测试用例的覆盖度及思路清晰;
不清楚你从书里面学到的只是,能不能解决这里三分之二的问题?
通过书中的学习,对这些问题是否有思路进行解答?
以上这些问题真不是一两本书能够解决的,况且你现在还是一张白纸。
如果你一开始选择的学习方向是错误的,那么无论你有多努力,终究还是得不到一个好结果,正所谓“选择比努力更重要”就是这个道理。
那应该怎么学呢?
二、该如何自学和面试?要还原目标,给转行人员认真介绍测试行业
测试分工是非常细的,正如题主所言:就是“信息庞杂”。在精细化分工的今天,每个行业其实都是在不断的细分,测试也是。
举例题主想从事的移动端测试,就可以细分为安卓原生,还有镶嵌H5页面的,web端,桌面端,小程序等等。你会发现随着你的逐步学习,所需要学习的知识如同井喷一般,根本把握不住。
回到测试行业,其实按工种分,就有功能测试,接口测试,性能测试,安全测试,白盒测试,自动化测试,测试开发...... 这还只是一个维度,还没有按照业务分,团队分。请问,面对这么多的分类,你分的请他们的区别,薪资待遇,发展前景吗?
面对选择题,首先不要只看选项本身,而是要还原目标。
你要问自己,选择测试是为了什么?你最想要达到的结果是什么?
比如上图中的两把宝剑。你只盯着2把宝剑是选不出来的,你得看你要用来干嘛?你是要上沙场杀敌?还是要放在家里当装饰?目标一旦确定,答案就自动出现了。
所以零基础转行学员,咱们要先去了解下,现在测试工作内容是什么,测试行业有什么职位,对应的薪资待遇,在公司都干什么,有什么前景。
了解后,我们再定岗位。定了岗位,我们在定学习方法和面试方法。
1、先带你感受一下真实的测试工作内容:
简单说下软件迭代前、中、后都要做哪些事儿:
前期准备阶段:
先是需求评审。一次评不过两次,评审通过定稿。
研发给测试出排期,一般研发先给出排期,测试人员再根据研发排期来介入。
测试编写测试用例(包括接口的和手工的测试用例)。 在研发前后端快进行联调的时候保证测试用例已经写完。 在提测前最少两天时进行用例评审。
介入测试阶段: 用例评审通过的话,测试人员分配冒烟用例(就是最基础能保证程序跑通的用例)给参与的研发,在提测前一天或当天给出。 执行通过后,研发通过邮件告诉所有参与人,可以提测了,这时测试人员可以准入。 先执行一遍冒烟用例,通过率不足90%的直接打回,发送邮件通知所有参与人@相关研发。再次准备进入提测阶段。
执行测试用例阶段:
测试人员制定测试计划,分配测试用例,在测试环境中执行测试用例,
发现问题反复进行问题定位,再跟研发来沟通问题。确定是问题,提交bug单,标题尽量简短但是能够突出问题本身,前置条件,操作步骤要写清楚,能传图片的传个图片,能提交视频的在录制的时候尽量录制关键步骤,突出问题。
开发解决问题后再进行验证,测试阶段无问题后,进入预生产环境。
都没有问题的时候测试人员编写测试报告,准备进入灰度,进行回归。灰度通过后全量发布,还需要在线上进行关键功能的回归测试。
你以为这就结束了?并没有!
还需要记录哪天发布了哪些内容,本次需求是什么,新增或者改动哪些,新增或修改了什么规则?新增了几个接口,哪些重要字段,新增了哪些表,干什么用的,对应的sql语句,测试过程中有哪些问题总结一下,吸取了什么教训或者增添了哪些知识?养成一个良好的记录文档的习惯,不仅仅是一种产出,也是知识的积累和沉淀,更是对自己工作的一份总结。
2、从岗位薪资待遇看:
3、从质量保证的核心业务来看
• 前台验收测试:web、app、gui;
• 前台用户体验测试:性能、安全、耗电量、稳定性;
• 中后台功能测试:性能、安全;
• 流程管理:持续集成、持续交付、devops;
• 质量分析:监控平台、数据分析平台、ai辅助平台。
4、从质量保证的团队建设及组成来看:
• 外包测试团队:负责基础功能的测试;
• 测试团队:手工测试、自动化测试、持续集成;
• 测试开发团队:一种是跟业务的测试负责测试中台化,另一种利用测试技术赋能测试与研发团队;
• 外部测试服务:提供对外的测试服务。
5、大公司小公司的区别来看:
大小公司整体来讲都大差不差。不过“小公司学技术,大公司学流程”。
小公司需要身兼数职,能锻炼人,人员流动性强,好晋升,综合素质锻炼较高,实用主义至上,对于技能浅尝辄止。
大公司团队协作性强,体系化,工作稳定,专注度高,更容易集中精力钻某个技术。对于你可以尝试先从手工测试干起。
去什么公司,还是取决于自己。
6、从测试各岗位发展前景来看
测试行业的整体薪资自2016年开始,几乎年年都在涨,现在测试的薪资基本和开发一样高,已经突破了21K。请看下方中立网站职友集有关测试的薪资截图,看看上涨趋势。
测试均薪能年年涨,直接原因是高薪的自动化测试不断涌入,正逐步替代低薪的手工测试
以前一个公司只需要少量的技术好的测试人员,以及大量的初级手工测试既可。
现在企业减员增效,公司的测试人员少了,要求自然就高了。低薪的纯功能手工测试的需求量越来越小,更高薪的接口测试、自动化测试、性能测试等岗位的需求量则在不断增加,推动着测试行业的整体薪资一路上涨。
当前市场环境还会加快替代速度,也导致自动化测试还处于紧缺中。
所以如果你转行的目标,和我说料想的一样,就是为了今后的发展,为了有更好的薪资。
那么你的而目标应该以自动化测试、测试开发,作为转行目标。
三、定好自动化测试目标后,应该怎么自学?
我按照薪资的不同大致划分成3个档位:
- 月薪5-9k:从零基础入门到能够找到工作
- 月薪15-25k:测试在职搞定性能测试和自动化测试
- 年薪30W+:搞定测试开发,进入一线大厂
第一阶段:月薪5-9k,刚刚入行,先学会功能测试!
可能你是刚毕业的学生,也可能你是打算转行进入软件测试这个行业,那么首先以下基本的理论你是必须要掌握的:
软件测试的定义、生命周期、工作流程、需求分析;
测试用例的设计、编写、评审;
bug的基本知识以及禅道的使用;
测试计划、测试报告的编写;
SVN、Git版本控制工具的使用;
搞定上上面的这些基本必备内容,就已经知道可以做具体的实战内容,这个时候最好是先找一个web测试项目去做一下,假如一个项目拿到手之后,按照下面的一套流程跑一遍:
发布项目进行立项,建立项目组进行分工;
需求评审,学会如何看需求文档,进行需求分析,罗列测试点;
整理测试点,编写测试用例,然后进行用例评审;
执行测试,比如功能、界面、前后台、兼容性、数据库,对于发现的bug提交到禅道;
分析、总结、编写测试报告;
这个流程完整的跑一遍之后,只能说对于整体的测试流程算是掌握了,但是仍然不足以找到一份合适的工作,想要学会做功能测试,以下的内容也是必须掌握的:
Linux、数据库、接口测试、APP测试等
OK,搞定了这些,恭喜你已经可以投出你的简历去寻找一份测试的工作了!
嗯,大概就是以上的内容吧,以上全部都是理论和文档能力、只要你肯背、肯写,都是能独立的掌握的。
会了以上这些内容,只能说是能够获得一份工作,但是现在行业招人的要求原来越高,搞定自动化或者性能测试,才能拿到10k以上的月薪。
第二阶段:月薪15-25k,搞定性能、自动化测试,独当一面!
先说性能测试,行业内是有很多误区和痛点的:
- 只测不调,无法给出研发和运维人员执行建议
- 无法定位问题,缺乏清晰的逻辑和数据证明价值
- 性能测试工具≠性能测试
- 性能测试技术体系落后(loadrunner),急需拥抱开源软件
如果要搞定这些问题,那么性能测试你得这么去学:
性能测试的概念和流程:常见问题剖析、流行工具、方案设计
性能测试工具:jmeter工具的使用、实战;jmeter多协议、拓展与定制;分布式压测与任务调度;
性能监控:性能监控体系与监控数据采集
性能实施:分布式服务压测,场景设计、场景执行;测试结果关联分析,TPS、响应时间、线程关联分析,压力和资源使用率关联分析
性能分析与报告:jvm调试与系统调试;性能瓶颈分析
性能测试你能到这个程度,15k那是妥妥的了,如果下面自动化测试的学习内容你能够掌握,那就可以直接冲击月薪25k!
搞定Python或者Java语言,建议先从Python入手,先学习Python的基本语法等。
web端的自动化测试:selenium安装、录制、处理;web控件、JavaScript脚本、PO模式;
移动端APP自动化测试:appium使用、录制、元素定位方法;APP控件定位、交互,参数化用例;appium问题定位分析、源码分析、二次封装;
服务端接口自动化测试:接口自动化测试框架request;接口请求构造、断言;json/xml请求、响应断言;headcookie处理、认证体系;
第三阶段:月薪30k+,对标大厂,冲击测试开发岗位!
性能和自动化玩精通,月薪在10k+甚至是20k+都是很轻松的,那如何冲击30k+呢,这就要求往技术专家或者管理层去发展了,但是即使做管理,也必要要求技术水平够硬?说做管理不需要技术精通?你试试底下的人会不会反你?
在测试开发的路线上,就要求更加专精,更加全面:
完善测试技术体系:Linux、docker、shell、SQL、Python/java
打牢自动化测试技术基础:
web自动化测试:selenium测试框架;PageObject设计模式、原则、演练;
APP自动化测试:Android自动化测试框架;appium高级应用于原理剖析;APP自动化测试实战;测试框架封装改造;ios自动化测试;
移动专项测试:健壮性测试、弱网测试、崩溃检测、耗电量分析等;移动端性能测试;移动端安全测试;
接口自动化测试:接口协议与抓包、代理技术与mock;接口自动化测试框架、HTTPrunner测试框架;dubbo接口自动化测试;接口管理工具swagger、接口安全测试
docker容器技术:docker容器、docker镜像;
持续集成/持续交付/devops:jenkins持续集成;Jenkins持续交付;
在这里,我想给想进阶的朋友们一点建议:很多时候,很多事情,并不像你想象中的那么简单,千万不要自认为简单而不愿意去做,很多东西只有你亲手去做了之后,才会发现事情并不像你最初想的那么简单。
其实自动化测试的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点了解的程度。so,出去面试时先看看自己复习到了哪个阶段就好。
四、有目标后,应该如何去面试?
很多自学者,因为自己没有实际工作经验,没有实际业务支撑,或者怕自己学的不够扎实,从而不敢去面试。其实大可不必。你应该跳出自己是求职者的身份,来看面试工作。
1、如何让自己面试不紧张?
对人力工作的一些介绍:人力的作用就是招人。
如果他们招不到人,则会被测试经理向老板控告他们不作为,以至于耽误工作。所以他们也有压力,所以面试就是一场博弈(如果面试紧张,想想人事的压力)。
所以找工作,是一种双向选择,我们和面试官是平等的。要不卑不亢,这样回答问题也就能淡定些。
2、了解面试官到底在考核什么
举例我比较熟悉的测试,我们在面试中常见的面试题会有这些:
1、如果一个bug被提交后,开发人员认为不是问题,怎么处理?
2、冒昧的问下,像你这种水平的测试人员非常紧缺,你为什么要离职呢?
3、在软件测试行业,你的职业规划是什么?
4、看你简历介绍你之前那不是计算机专业的,怎么从事测试这个行业了呢?
5、面试官问:如何使用SQL快速插入100000条数据?
6、你上家公司,一个项目中测试工作如何介入的?
7、给你一个物件(花瓶、笔、桌子)你怎么测试?
8、你们公司测试通过的标准是什么?
9、没有需求文档,你会如何执行测试?
10、在测试环境出现偶尔出现的BUG,你会如何处理?
11、给你一个网站你如何开展测试工作?
12、看你简历你做过app端测试,也做过web端测试,你能介绍下,APP测试与WEB测试有哪些不同之处?
13、看你简历项目经验丰富,请问针对项目如何写测试计划?
如果我们要将上面的面试题归归类的话,其实可以归类为技术、态度、潜力这三个方面。
比如考核技术类的:
1、如何使用SQL快速插入100000条数据?
2、你上家公司,一个项目中测试工作如何介入的?
3、给你一个物件(花瓶、笔、桌子)你怎么测试?
4、没有需求文档,你会如何执行测试?
5、在测试环境出现偶尔出现的BUG,你会如何处理?
6、给你一个网站你如何开展测试工作?
7、看你简历你做过app端测试,也做过web端测试,你能介绍下 APP测试与WEB测试有哪些不同之处?
8、看你简历项目经验丰富,请问针对项目如何写测试计划?
比如考核工作态度类的:
1、如果一个bug被提交后,开发人员认为不是问题,怎么处理?
2、看得出来你真的是出自实战,非常不错。冒昧的问下,像你这种水平的测试人员非常紧缺,你为什么要离职呢?
比如考核潜力这类的:
1、看你简历介绍你之前那不是计算机专业的,怎么从事测试这个行业了呢?
2、在软件测试行业,你的职业规划是什么?
3、看你简历已经做了快2年测试了,能讲讲你对测试的认识和行业的发展么?
所以你面试的时候,要准备好这3类问题。
如果遇到不会回答的问题,可以说不清楚,但一定要记得体现你的态度和可塑性。比如回答回家后会关注这个问题,或者回答下你的分析思路。
比如:面试官问了这样的一个问题:“你从事测试这个行业至今一共提了多少个bug?”
你可以告诉面试官,没有算过。但可以补充:测试的迭代周期是怎样的,一次迭代差不多能有多少个bug,你干了多少年测试,告诉一个估值。
这样给面试官留下:逻辑还很清晰,思维还敏捷,可塑性上得满分。
3、面试也是一种学习方式可以了解自己的不足:
之前有去一家大厂面试,对于自己感触很大。
当时对方问我做过接口相关的测试么。我说当然做过。
对方就让我简单聊下状态码,我心想这还不简单。
突然面试官说:“502是什么意思,什么问题导致的?”
我:“服务端错误。”
面试官:“服务端什么错误?”
我:“emmm服务端报错。”
面试官:“ok那500什么意思?”
我:“emmm服务端报错。”
面试官:“那502呢?”
我:“这...我不知道。”
面试官:“ok,404知道吧?”
我:“知道,访问页面不存,可能是用户地址输入错误导致,或者该页面...。”
面试官:“好好但并没有打算问你这个,我是想问:它有返回值么?”
我:“emmm有。”
面试官:“返回的是什么数据类型?或者说他返回的数据类型应该是以点什么为结尾的?”
我:....
当然后来面试官也问了些其他问题,最后面试也没过。
其实面试结束的时候也可以跟面试官交流下。他也表示就状态码,按照类别分:200是正常的,300重定向,400客户端错误,500服务端错误,大家都了解,又怎么能看出谁好谁坏呢?
404、502这种也很常见,我们要通过状态码不仅仅去看问题,同时也要知道如何去进行分析、定位、排除,不是说看到这个状态码,我们去百度查一查就能解决的。需要的是了解数据在各个节点中究竟反应了什么问题,尤其是在实际生产作业的时候。
面试后路上想一想,在此之前对状态码的理解和了解太浅薄了,并没有实际掌握。所以对自己而言,还需要静下心,在接下来的学习,要更深,思考更广。
所以勇敢去面试吧。
学习资源分享
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走
这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….