做梦我都没想过,我会在软件测试行业一干就是10年【避坑指南】
我是14年毕业的,普通本科,计算机系也算是一个对口专业。那时候互联网行业是个很不错的发展方向,也是机缘巧合之下,让我走上了测试工程师的道路。但是我没想到,在这个行业一干就是10年。
第一份工作
还记得我刚入行的时候,进了一家社交平台公司做测试,公司最开始只我人一个做软件测试,没有任何的流程和规范,但好在平时工作比较轻松。然而当我真正工作了半年,我就产生了一个疑惑:每天我怎么就在做一些一模一样的事啊。每天有点不完的网页,写不完的文档。随着时间的消磨,让我产生了对自我价值和岗位意义的困惑。
那时候,测试人也都爱去论坛上交流,我至今记忆犹新的是,整个版面打开来,一半是问大家薪资多少了,另一半是“工作很多年了,感觉未来很迷茫”。每个人对迷茫的描述都不一样,但问题本质都一样:除了重复劳动,我们还有什么?
一个软件测试人员,有什么可以是拿得出手的核心技术,有什么能使你区别于应届生?最重要的是在企业的不可或缺和不可替代
当时我就有这样的想法,我不想一直做重复劳动了,即便我在刚入职的时候说,我能做好并且愿意去做繁琐工作的。但是我并不擅长机械和重复的劳动,也不喜欢重复劳动。
痛定思痛,也就是这一年开始,下定决心要把自己的专业技能提升上去。
自我成长
我开始把自己的业余时间投入到学习中来,不过,学习的内容一定要基于自己的工作来,这样才能把学来的技术变成工作经验。当时由于公司的规模和产品的局限性,我无法在那里接触到更多新兴热门技术。于是我鼓起勇气,离开了那一家公司。
后来在朋友的推荐下,进了一家电商公司,当时,有一些机会在工作中做性能测试,于是,学会了用LoadRunner和JMeter,有一次需要测试MySQL数据库的性能,用JMeter搞了半天不知道怎么设置,结果叫一位开发的同事帮我过来很快就搞定了。
这让我了解到开发知识对于测试工作的帮助,编程语言的能力会决定你测试技术的深度。
那时候,Python开始流行起来,公司产品开始选用Python开发的,所以,我毫不犹豫的选择了Python。因为Python简单好学,容易上手,学起来也没花多少时间。也是因为这个在后面学习自动化测试帮助很大。
公司为了提高效率,测试必须要引入自动化的手段。注意,不是替代不替代手工测试的问题,而是必须引入自动化才能进一步提高效率。手工测试仍然在,只要他在一些领域上效率高于自动化,就仍然会继续存在下去。
当时由于项目的原因,开始使用Robot Framework测试框架,正因为有Python的基础所以很快就理解了Robot Framework框架的工作原理,并可以根据项目的需要开发系统关键字。
掌握自动化工具的原理使用起来才能更加游刃有余,而这也需要你有一定的编程基础的原因。
随着移动App越来越流行,乘着换工作的间隙,我还学习了一个月的appium自动化工具,也了解了网易开源的Airtest框架的使用。
后来,我开始针对另一个社区项目编写Web UI自动化测试,前后做了几个月,积累了一些经验,开始尝试设计Web自动化框架,当时主要还是针对Selenium API的封装。
为什么我越来越有更多机会去做自动化相关的工作,当然,是我先学会了这项技能,然后,公司项目又比较适合去做自动化,所以,我就尝试去做了,最后,这就变成了我的经验。2018年我开始做全栈工程师,和团队一起从0开发内部管理平台,后端用Django框架设计接口,前端用vue.js框架设计页面,项目已经在整个公司得到应用。
这个阶段跨度有点大,但应了我前面的一些思路,当你掌握的更多的技术,那么你也会有更多的机会继续提升自己。在这个过程中,我也养成了对于技术关注和追求的好习惯,这个好习惯一路以来对我帮助特别大,不管是在职场上,还是生活上都有很大收益,我有满意的薪资回报,生活上也不会有焦虑。因为学习和成长让我远离了那些精神内耗的问题。
我的一些建议
我从13年入行到现在,从初级手工到开始做自动化测试,到现在做测试平台开发,带团队。这中间真是走了很多弯路,踩了很多坑,接触过各种公司和项目:小到初创企业,大到独角兽公司,外资合资,自研外包,电商网站,互联网金融。主要用过4种语言,十几种工具,见过各种测试框架、工具平台,写过大大小小的类库、工具、改造过平台。虽然我只工作了10年,但换了7次单位,真是说多了都是泪啊。。。
我这次想分享的,是我当时转型的经历、对现在测试行业技术大方向的分析和转型方向的建议。另外通过这次分享也希望揭开自动化测试、测试开发、持续集成等等的神秘面纱,让大家了解真实的自动化测试相关人员的工作是怎样的,供大家在自己转型时参考。
如何从初级功能测试到高级自动化测试开发,达到技术提升和待遇提高的目的,是很多初级测试人必经的一个阶段。作为一个过来人,对学习过程中的困难深有体会。
所以我喜欢收集整理资源,记录踩坑到爬坑的过程。希望能把自己掌握,实际工作中用到的技术、学习方法及踩过的一些坑,记录下来。也希望想做自动化的你一样,通过我的分享可以少走一些弯路,可以形成一套自己的方法,并应用到实际中。
在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。
我的十年测试之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,所以,我和朋友特意花了一段时间整理编写了下面的《测试工程师学习路线》,也整理了不少【网盘资源】,需要的朋友可以在上方小卡片获取网盘链接。希望会给你带来帮助和方向。也可以加入我们一起交流技术,讨论行业资讯。
1. 自动化测试必备Python编程
自动化测试必备Python编程内容 |
---|
Python环境搭建 |
Python语法规则 |
Python运算符 |
Python数据类型 |
Python流程控制 |
对象,类,模块与包概念 |
Python文件操作 |
Python高级应用 |
2. Web自动化测试基础
Web自动化测试基础内容 |
---|
自动化测试流程概述 |
selenium环境搭建 |
常规页面元素定位方式 |
xpath元素定位方式详解 |
css元素定位方式详解 |
元素组定位 |
特殊元素定位 |
浏览器操作 |
三种等待时间详解 |
切换操作技巧 |
鼠标,键盘操作技巧 |
鼠标,键盘操作技巧 |
3. Web自动化测试项目
Web自动化测试项目内容 |
---|
WebUI自动化用例编写 |
unittest自动化框架:unittest组织测试用例的原理 |
unittest自动化框架:unittest语法详解 |
unittest自动化框架:unittest批量运行用例 |
unittest自动化框架:用例的前置后置操作,跳过运行 |
自动化用例断言 |
自动化测试之POM模型:POM的意义与原理 |
自动化测试之POM模型:POM页面对象模型 |
数据驱动:DDT实现自动化测试驱动 |
数据驱动:yaml文件驱动 |
分布式测试:selenium分布式原理 |
分布式测试:分布式环境搭建 |
分布式测试:大规模自动化测试 |
4. APP自动化测试基础
APP自动化测试基础内容 |
---|
自动化框架与工具使用 |
ADB命令操作 |
Monkey稳定性测试:Monkey稳定性测试原理 |
Monkey稳定性测试:Monkey指令详解(基础参数,事件参数,调试选项) |
Monkey稳定性测试:Monkey日志分析(日志定位,回归验证) |
自动化配置项:Desired Capabilities配置文档 |
自动化配置项:常见配置项介绍和使用场景分析 |
APP界面元素查看工具 |
APP元素定位:元素定位方式详解 |
APP元素定位:元素组定位方式 |
APP元素操作:元素属性操作 |
APP元素操作:常用API函数 |
APP元素操作:点击,滑动,输入字符,点击坐标等操作技巧 |
5. APP自动化测试项目
APP自动化测试项目内容 |
---|
微信小程序自动化操作:Appium手势连续性操作 |
微信小程序自动化操作:Appium键盘事件 |
微信小程序自动化操作:切换操作 |
微信小程序自动化操作:小程序自动化原理 |
微信小程序自动化操作:Webview元素定位 |
微信小程序自动化操作:小程序自动化实现 |
H5,Webview自动化:H5的概念 |
H5,Webview自动化:H5与原生页面的对比 |
H5,Webview自动化:H5测试技术详解 |
H5,Webview自动化:Webview元素定位,自动化实现 |
UIautomator2测试框架:UIautomator2测试框架介绍 |
UIautomator2测试框架:UIautomator2测试框架环境搭建 |
UIautomator2测试框架:常用关键字封装,滑动,APP点击 |
安卓集群服务搭建:集群环境搭建 |
安卓集群服务搭建:批量管理测试真机 |
Pytest测试框架+分布式运行脚本 |
6. 接口自动化测试基础
接口自动化测试基础内容 |
---|
接口自动化测试概述:接口测试的定义与意义 |
接口自动化测试概述:接口测试的实现方式 |
接口自动化测试概述:接口自动化的实现流程 |
HTTP协议:通信协议原理解析 |
HTTP协议:HTTP与HTTP协议详解 |
HTTP协议:session,cookie,token鉴权 |
JSON数据格式详解:JSON与XML的比较 |
JSON数据格式详解:JSON的语法规则 |
JSON数据格式详解:JSON的数据类型介绍 |
JSON数据格式详解:JSON的练习 |
Requests模块基础:Requests安装 |
Requests模块基础:使用Requests发送请求 |
Requests模块基础:不同格式解析响应数据 |
Requests之session模块:session模块应用,接口请求,会话管理 |
Requests请求HTTP接口实战:GET,POST,DELETE,文件上传 |
Requests请求HTTP接口实战:接口类型,json,from-data,参数类型 |
Requests请求HTTP接口实战:场景实战演练 |
7. 接口自动化测试实战
接口自动化测试实战内容 |
---|
HTTP接口测试实战之论坛接口:项目接口文档分析 |
HTTP接口测试实战之论坛接口:接口测试用例编写规范 |
HTTP接口自动化测试实战:Requests进行接口自动化测试实战 |
HTTP接口自动化测试实战:封装HTTP请求类 |
HTTP接口自动化测试实战:unittest组织测试用例 |
Mock server:Mock server应用场景,实现原理 |
基于Flask实现Mock server:Flask项目搭建 |
基于Flask实现Mock server:开发get,post,delete,form-data的mock |
基于Flask实现Mock server:文件上传接口,auth认证 |
WebSocket协议接口:WebSocket协议接口原理 |
WebSocket协议接口:搭建WebSocket测试环境 |
WebSocket接口测试实战:Jmeter测试WebSocket协议接口 |
WebSocket接口测试实战:Python测试WebSocket接口 |
基于RPC协议之Dubbo接口测试:Dubbo接口测试原理 |
基于RPC协议之Dubbo接口测试:Dubbo基础架构解析 |
Dubbo接口测试实战:telent测试Dubbo接口 |
Dubbo接口测试实战:Jmeter测试Dubbo |
Dubbo接口测试实战:Python进行Dubbo接口测试 |
8.持续集成专项技术
持续集成专项技术 |
---|
Jenkins介绍,环境搭建:部署Jenkins环境 |
Jenkins介绍,环境搭建:常用Jenkins插件安装 |
构建自动化测试任务:自动化测试用例结合Jenkins构建任务应用 |
构建自动化测试任务:自动化测试用例结合Jenkins定时运行 |
构建自动化测试任务:自动化测试用例结合Jenkins批量运行 |
自动化发送邮件测试报告 |
git仓库的使用:git版本库创建 |
git仓库的使用:添加远程仓库 |
git仓库的使用:克隆,pull,push,commit命令使用 |
Docker容器技术:Docker使用原理 |
Docker容器技术:Docker环境搭建 |
Docker容器技术:Docker在自动化测试中场景应用 |
流水线:构建CI/CD流水线流程 |
9. 自动化测试框架技术
自动化测试框架项目技术 |
---|
Pytest |
Pytest基础语法 |
Fixture的使用 |
Allure测试报告:Pytest之conftest使用 |
Allure测试报告:集成Allure测试报告 |
框架搭建原理思路:搭建框架之前的准备 |
框架搭建原理思路:框架的意义,设计思路,代码模块分层思想 |
UI自动化测试框架搭建一:代码模块分成 |
UI自动化测试框架搭建一:搭建日志系统 |
UI自动化测试框架搭建一:搭建断言系统,报告系统 |
UI自动化测试框架搭建二 |
接口自动化测试框架搭建一 |
接口自动化测试框架搭建二 |
UI测试框架和接口测试框架一体化 |
HTML前端 |
Flask后端api编写:Resful API开发规范,构建一套API服务 |
行动吧,在路上总比一直观望的要好,未来的你肯定会感 谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入扣群:731789136,里面有各种软件测试+开发资料和技术可以一起交流学习哦。
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
如果你想学习软件测试和需要软件测试资料,欢迎加入扣扣交流群:731789136,里面可以免费领取软件测试+自动化测试资料+软件测试面试宝典+简历模版+实战项目+面试刷题工具和大佬答疑解惑,我们一起交流一起学习!
热门相关:天龙邪尊 福晋有喜:四爷,宠上天! 重生之大文豪 永恒王权 大金主,你别假正经了