我花了6年的时间,自学成为测试开发
我希望我的经历能够帮助到你们。
我的自学成为测试开发,是在3次的能力飞跃之后实现的。
第一家入职的时候是一家小公司
刚开始入行的时候,什么也不懂,就是从最简单的手工测试做起。每天做的最多的就是:编写测试用例>提交bug>回归bug。
最开始的时候不懂这些,觉得有所收获,但是3个月后,这些事情搞熟悉了,会有一种浪费时间的感觉。
另外在每次提交bug的时候,都要确认环境,还有一些bug没法复现,一方面老是被开发怼,另一方面也不得不加班。
这个时候我就想,能不能不让开发怼,能不能不加班?
我开始修炼内功,这是第一次能力飞跃的开始:
首先是看需求文档,只有了解了需求,才能知道设计这个功能的目的是什么,进而才能判断这个问题是不是bug,这样做后,一定程度上减少了被开发怼的情况,即使是开撕,也有了一定的依据;
其次就是看开发的设计文档,当然开始不熟的时候可能不给您看。你去研究他的业务逻辑,才能大致判断这个bug是如何产生的,进而能够复现和定位bug。
当然,这个过程肯定不是那么顺利。第一是因为你要主动学习和研究超出能力的事情,必须沉下心来钻研;第二是刚开始接触这些新事物的时候,处理问题会不那么完美,要扛得住质疑的压力;第三是向开发请教或者讨论的时候,必然要面对开发的鄙视和冷漠;第四就是学习会占用你的大量时间,加班不可避免。
这个过程可能1-2年,之后你就能自己排查和定位问题,提交bug之后开发也不再找你了,产品和开发开始对你刮目相看。
在找到的做测试的认同感,坚定了朝着测试持续发展的时候,我又觉得每天的重复性工作太多,能不能提升一下效率,于是我开始研究自动化,这是第二次能力飞跃的开始:
先从学一门语言开始,Java或者Python都行,开始时为了入门更容易,建议先从Python入手。掌握了语言,就可以开始编写一些脚本或者测试工具来提升效率了;
然后去研究架构,从更高的层面去提升效率,可能这个阶段你还达不到设计架构的高度,但是你要往这个方向去思考,要有这个野心。
这个阶段,大概需要2年左右的时间,如果这个阶段你完成了,你才能称得上一名合格的测试工程师,月薪15-20k以上是稀松平常的事情。话说我过了这个阶段已经跳槽了,因为第一家公司团队和业务都太小,自己已经没有太多的成长了。而这个时候,我的薪资达到了25k。
再往后,我又不满足了,不是不满足薪资,而是不满足仅仅提升效率,而是想要更早的预测缺陷以及监控缺陷,这个时候就开始往测试开发的方向去进阶,这是能力的第三次飞跃:
通过“测试左移”,提前与开发人员一起制定测试计划,推动代码评审、代码审计、单元测试、自动化冒烟测试、测试精准化分析以及研发自测等来保证研发阶段的质量;
另外,参与配置部署,将自动化测试用例配置到持续交付链中,并通过“测试右移”,全流程监控发布后的应用质量。
这里我所说的“测试左移”,也就是指的研发阶段的质量保证,“测试右移”也就是发布后的质量监控。搞定了测试开发,以我的经验来看,要去大厂,小公司用不到这个,薪资也给不起。测开目前在北京来说,年薪30W+只能算个起步。
从经验来看,如果你要自学,必须要有很强的自我学习能力,当然中间的过程也有培训,但基本上都是在职培训,还是以自学为主。
如果你坚持自学,是一定要做好一些准备的,这里我给你一些建议:
第一个准备:认知准备
在开始学习之前,首先要明确的是对于行业和学习的认知:
1、进入测试行业一定要学习一门语言,认为做测试不用写代码或者对于写代码比较排斥的,可以绕道了;
2、技术是你立足的根本,但是不要认为技术做到最强,就可以得到100%的尊重;
3、在不断学习的同时也要积极地参与行业内的交流,比如沙龙、讲座等,朋友内推比海投简历靠谱的多;
4、学历很重要,项目经验很致命,英语是加分项;
5、学习是长反馈、反人性的,不要期待短期速成,不要相信35岁失业的鬼话;
6、沟通能力是和技术同样重要的,放在任何行业都是如此;
第二个准备:思路准备
1、语言选择是Java还是Python?不用纠结,都是相通的,也最终都要掌握。建议先从Python上手,后面再学Java;
2、专研方向选择性能还是自动化?不要被自动化蒙蔽了双眼,也不要轻视认为性能很好搞定,性能的调优很难,自动化有语言基础也能快速上手;
3、大公司还是小公司?能去大公司,就去大公司,尤其是在刚进入这个行业,大公司的流程和项目以及背书都会对职业发展有很大帮助;
4、自学还是培训?能有捷径,为什么不走呢,更何况已经25了,试错的机会已经很少了,关于如何甄选靠谱机构,请关注我主页其他回答:测吧
5、将来做管理还是技术专家?即使是做管理,也必须建立在懂技术,能搞定问题的基础上。技术是根本,其余的都是锦上添花;
关于自学的学习路线,我分为3个阶段具体说一下:
第一个阶段:月薪5-9k,刚刚入行,先学会功能测试!
可能你是刚毕业的学生,也可能你是打算转行进入软件测试这个行业,那么首先以下基本的理论你是必须要掌握的:
软件测试的定义、生命周期、工作流程、需求分析;
测试用例的设计、编写、评审;
bug的基本知识以及禅道的使用;
测试计划、测试报告的编写;
SVN、Git版本控制工具的使用;
搞定上上面的这些基本必备内容,就已经知道可以做具体的实战内容,这个时候最好是先找一个web测试项目去做一下,假如一个项目拿到手之后,按照下面的一套流程跑一遍:
发布项目进行立项,建立项目组进行分工;
需求评审,学会如何看需求文档,进行需求分析,罗列测试点;
整理测试点,编写测试用例,然后进行用例评审;
执行测试,比如功能、界面、前后台、兼容性、数据库,对于发现的bug提交到禅道;
分析、总结、编写测试报告;
这个流程完整的跑一遍之后,只能说对于整体的测试流程算是掌握了,但是仍然不足以找到一份合适的工作,想要学会做功能测试,以下的内容也是必须掌握的:
Linux相关技能
操作环境、命令、安装数据库、部署测试环境等
数据库相关技能
各种命令用法、字段、增删改查
接口测试相关技能
接口测试基本理论、http协议、测试方法;
接口测试需求分析、用例编写、评审;
几种工具的掌握,jmeter、postman、soupUI;
APP测试相关技能
安装/卸载、离线、UI、登录等测试内容;
兼容性测试、monkey、fiddler抓包;
OK,搞定了这些,恭喜你已经可以投出你的简历去寻找一份测试的工作了!
简历不会写?文末帮你解决这个问题!
如果你已经入行了,且能够正常上手业务了,那么你就要思考第二个问题:如何获取更高的薪资?
第二个阶段:月薪15-25k,搞定性能、自动化测试,独当一面!
都说自动化玩好了很牛掰,但是性能测试才是互联网企业的核心痛点!
对于性能测试,业界很多都是在“耍流氓”,举个栗子:
我拿到了一份“流氓”的性能测试报告,上面只写了响应时间、TPS是多少,然后罗列了一下压力机基本配置情况,比如40个并发相应时间是5秒,TPS是260。
那么,我该怎么判断这次性能测试的有效性:
1.场景是否合理?
2.压力是否传递均匀或者传递到指定目标?
3.是否有干扰因素,或者说那些数据是否有效?
4.有没有一些可信的判断方法?
这些问题的出现,其实就是反映出了目前在做性能测试的一些误区:
只测不调,无法给出研发和运维人员执行建议
无法定位问题,缺乏清晰的逻辑和数据证明价值
性能测试工具≠性能测试
性能测试技术体系落后(loadrunner),急需拥抱开源软件
如果要搞定这些问题,那么性能测试你得这么去学:
性能测试的概念和流程
常见问题剖析、流行工具、方案设计
性能测试工具
jmeter工具的使用、实战;
jmeter多协议、拓展与定制;
分布式压测与任务调度;
性能监控
性能监控体系与监控数据采集
性能实施
分布式服务压测,场景设计、场景执行
测试结果关联分析,TPS、响应时间、线程关联分析,压力和资源使用率关联分析
性能分析与报告
jvm调试与系统调试
性能瓶颈分析
搞定这些,你完全可以很自信的和面试官说自己精通性能测试!
性能测试你能到这个程度,15k那是妥妥的了,如果下面自动化测试的学习内容你能够掌握,那就可以直接冲击月薪25k!
搞定Python或者Java语言,建议先从Python入手
基本的语言知识,语法、函数、模块、输入与输出、面向对象编程
脚本编写、标准库、多线程、第三方库,外部数据处理
unittest、pytest测试框架、参数化、数据驱动
web端的自动化测试
selenium安装、录制、处理
web控件、JavaScript脚本、PO模式
移动端APP自动化测试
appium使用、录制、元素定位方法
APP控件定位、交互,参数化用例
appium问题定位分析、源码分析、二次封装
服务端接口自动化测试
接口自动化测试框架request
接口请求构造、断言
json/xml请求、响应断言
headcookie处理、认证体系
上面这些说的是性能和自动化测试的学习路线和内容,搞定这些,基本上在这个行业,月薪2万以上是非常轻松的事情了!当然如果你想成为技术专家,或者想带领技术团队进行实施落地,那么请你接着往下看,关于年薪30W+的测试开发需要学习哪些内容:
完善测试技术体系
Linux、docker、shell、SQL、Python/java
打牢自动化测试技术基础
web自动化测试
selenium测试框架
PageObject设计模式、原则、演练
APP自动化测试
Android自动化测试框架
appium高级应用于原理剖析
APP自动化测试实战
测试框架封装改造
ios自动化测试
移动专项测试
健壮性测试、弱网测试、崩溃检测、耗电量分析等
移动端性能测试
移动端安全测试
接口自动化测试
接口协议与抓包、代理技术与mock
接口自动化测试框架、HTTPrunner测试框架
dubbo接口自动化测试
接口管理工具swagger、接口安全测试
docker容器技术
docker容器、docker镜像
持续集成/持续交付/devops
jenkins持续集成
Jenkins持续交付
如果你是测试在职,那么相信文章后半段的内容,你一定能够看到其中的价值所在!毕竟按照这个路线和内容去学习的同学,已经进入了BAT等一线的名企,目前最高级别是阿里P7,年薪最高是60W+!
另外我花了3天时间,整理了100+大厂面试经验,汇总出来这份3000字的软件测试面试题库给你!
(大厂面试真题我放在文末,自行获取,附答案!)
技术类问题
1、以前做过怎样的项目?说一下你们的测试流程?在项目组中做过怎样的工作?
2、所做项目的情况,主要做什么类型的测试?
3、你认为是bug,而开发不认同时怎么办?
4、 给你一个网站,你如何测试?
5、熟悉数据库吗 ?平时数据库用的多吗 ? (大概测试过程的1/4时间在查数据库)
6、linux查看文件用什么命令,查看进程用什么命令 ?
7 、 查看日志常用什么命令,主要查看什么内容 ?
8、 软件测试用例设计/测试用例的内容/管理工具?
9、如何判断一个问题是bug?
10、平时写测试用例会用到的设计方法?
11、有哪些不同的测试计划活动?
12、哪些信息应该包括在开发的缺陷或错误报告中?
13、你觉得自动化测试的价值在哪里?你们公司为什么要做自动化测试?
14、举例一下说明一下你遇到过那些异常
15、什么是PO模式,为什么要使用它
16、你会封装自动化测试框架吗?
职业发展类问题
1、你对测试最大的兴趣在哪里?为什么?
2、 你的测试职业发展是什么?
3、你认为测试人员需要具备哪些素质?
4、你为什么能够做测试这一行?
5、一个测试工程师应该具备哪些素质和技能?
6、你认为做好测试用例设计工作的关键是什么?
7、您认为做好测试计划工作的关键是什么?
埋坑问题
1、怎样看待加班问题?
2、基于目前中国的国情,大多数公司的项目进度紧张、人员较少、需求文档根本没有或者很不规范,你认为在这种情况下怎样保证软件的质量?
3、为何尽可能不要让时间有富裕的员工去作一些测试?
4、如何减小测试人员跳槽带来的损失?
5、你在测试中发现了一个bug,但是开发经理认为这不是一个bug,你应该怎样解决?
最后,为方便大家自学软件测试,特意给大家准备了一份13G的超实用干货学习资源,涉及的内容非常全面。 加 扣扣裙 644956177 领取哦。
包括软件学习路线图,50多天的上课视频、16个突击实战项目,80余个软件测试用软件,37份测试文档,70个软件测试相关问题,40篇测试经验级文章,上千份测试真题分享,还有2020软件测试面试宝典,还有软件测试求职的各类精选简历,希望对大家有所帮助……
敲字不易,如果此文章对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。