现在2023年,行业现在比较卷,只会功能测试迟早会被淘汰。
看今年很多面试的不会自动化连面试机会都没有,我还招聘网上刷了刷,基本岗位都需要自动化测试技能呢。
为什么说只会功能测试会被淘汰呢?
毕竟功能测试可能一个月就能学会,很多人自学,随便做做项目功能测试就会了,这样门槛就太低了,这类人群就会很庞大,所以竞争就会很激烈,然后企业肯定会拉高门槛的,所以才有了今年的行业内卷,大家都在竞争一个岗位,那么你不就得各种技术掌握的扎实才行吗?
作为软件测试来说,功能测试是作为测试人员的基本功,也是必不可少的,随着时间的推移,科技的发展,作为测试,不仅仅要有扎实的基础,还是要不断的提升自己,如果一直停留在原点,自己将会处于一个停止不前的状态,对自己的发展也是可想而知的。
既然你谈到软件测试的职业发展,那么作为一个软件测试工程师,如果一直做功能测试的话,那么还谈什么软件测试职业发展?
那你既然都已经躺平了,只想干功能测试,不想干接口测试,性能测试,灰度测试,白盒测试,自动化测试和测试开发,你还谈什么软件测试职业发展呢?
就算你不会被淘汰,那你看的周围的人在发展,难道你一直一成不变,不会难受吗?
软件测试这个职业其实只做测试的话,那个天花板它就这么高,想要谈发展就是越来越向开发靠近。
自动化测试的进阶路线
自动化测试的最高境界是: 开发测试工具,设计自动化测试框架, 让别人用。
首先需要学习一门语言
自动化要想做得好,必须要学习至少一门语言。当然至于学习语言要到什么程度了?我不可能一直学下去吧?答案是,会用就行。
掌握大部分的语法基础,已经能够满足你的自动化的日常需求了,因为我们写脚本并没有像开发那么难。
语言你需要学习,for循环,if判断,数据类型,运算符,面向对象编程等等,不管是java还是py,这些都是需要的,其实也差不多,会一门语言,其他的都类似。
语言入门后,正式踏上开始自动化成神之路。
入门web自动化框架Selenium
它能帮助你快速理解,自动化到底是个什么东西,并且能直观的在页面上面反馈给你。当初也是,看着selenium的api,一点一点啃下来的,几乎每个方法都去尝试了一下。
单元测试框架Pytest/Unittest/TestNG
你会开始学习,单元测试框架的用法,如何创建一个测试类,如何写测试方法,如何把你的脚本写成测试用例,如何校验测试是否通过,用例的执行顺序怎么去控制,断言怎么去写,这些都是你要去探究学习的。
学习自动化框架
开始研究框架的结构,有用例管理,日志,测试报告,邮件,基础封装类等等,一种框架的设计模式(经典PO模式)
初始接口测试
一般公司用的都是http接口,那么你就从http协议开始学习了,了解它的结构,请求头,请求参数,请求地址,请求方式等等等。
学习一些抓包工具
如fiddler,chales,wireshark或者浏览器的开发者工具等等,去抓包获取一些接口,慢慢的观察它的请求构造,但是这时候还是云里雾里,对接口一知半解。于是下载了一个接口测试工具,尝试把参数录入到工具中,手动发起调用。
学习Request/HttpClient库发起请求
在用完postman后,就会想到,那么我怎么用代码去发起一个请求呢?
你尝试也是把之前ui自动化的增删改查,用接口来实现,你把抓包的请求参数拿过来,一个一个方法的调用,然后一键运行!一绿三红!为什么?然后发现接口返回了401,无权限!奥!我没有登入啊,那么怎么才能登入呢??
抱着很多的疑惑开始研究,这时候你需要去了解cookie和token的工作机制,再配合你的代码,去缓存cookie,达到登入。等解决了这个问题,但是接口还是报错了啊,删除接口提示我没有这条数据!
查来查去,原来是我那条数据已经用掉了,那么怎么可以保证我每次录入的参数都是新的呢?这时候就需要去了解接口关联,如何把参数从上个接口的响应提取出来,给下个接口用。
Request/HttpClient结合Pytest/testNG+allure
一样的,等你学会了 request/HttpClient,自然也会想到用单元测试框架把他们集成起来,然后又发现了一个高大上的allure测试报告,再结合一些日志模块打印参数,轻车熟路的这么一个接口框架就出来了,和之前的差不多。
yaml/Excel管理测试用例
等你拿自己的框架,重复枯燥的写着测试用例,这时候你想了,我为啥每次都要request.post,方法都是一样的,只是数据不一样,为什么我要一直写代码呢,很累啊!为什么不用一些文件来读取测试数据,做参数化呢?
这时候你开始研究读写excel/yaml了,你想把所有的测试用例都放在文件里管理,就不用每次去写代码了,然而事情并没有那么简单!那么我在文件里如何去处理关联数据呢?如何去缓存cookie呢?如何做断言呢?如果做一些动态的输入呢?
主流配套自动化框架
接口自动化测试方向:Python+requests+pytest+yaml+alluer+Jenkins;
web自动化测试方向:Python+selenium4+pytest+POM+allure+Jenkins;
app自动化测试方向:Python+appium+POM+pytest+allure+Jenkins;
git?jenkins?docker容器?分布式?
代码只能在我本地运行,如果要给别人用,还需要去别人电脑上配置环境,copy代码给他。
那么为什么不用一些代码管理工具去管理我的脚本呢?
那么就会需要去学习git,了解如何add commit push推送我的代码到公司的gitlab,这样别人也可以使用,那么有了gitlab,我想做一些定时任务,让它自动执行呢?
学jenkins。再更多,要是我想多个用例一起跑呢?
学习selenium grid,docker等等。
自动测试平台/工具开发
等你搭建好公司的自动化生态,你还是不满足,我为什么不把这些东西可视化管理呢?做个平台?管理用例,管理任务,管理测试报告?我还可以把公司的一些部署任务也集成过来?
想法很好!此时的你已经不仅仅是一名优秀的自动化工程师了,已经迈向了测试开发的道路!开发框架django/flask/springboot,懂得了接口开发的流程,了解了mybatis,shiro,quartz等等。
开始学习前端vue/react,懂得了什么是组件开发,父子组件传值,开始了解很多东西,甚至运维方面的知识,越来越往着大神的方向去了,希望你还没有秃头,此时的你可以骄傲的称自己为一名合格的测试开发。
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图 |
每一次的努力都是为了让自己更好,让生活更美好。不要害怕失败,勇敢迎接挑战,坚持不懈,成功就会在不远的前方等待着你。相信自己,你一定可以创造出属于自己的辉煌!
只有不断拼搏,才能收获成功的果实;坚持下去,你会发现自己比想象中更强大;无论面对多少困难,都要保持信念和勇气;每一次进步都是前进的动力,让我们一起向着目标奋斗!
只有在不断前进的路上才能发现自己的极限,只有经历过挫败才更能成就辉煌。无论何时,都要坚持追求梦想,相信付出终将得到回报。记住,唯有努力拼搏,才能让自己变得更好!