篇幅较长,请大家耐心看完,建议收藏慢慢看,另外文末给大家准备了面试资料(面试题加学习资料等),需要自取!
首先,相信大部分人所谓的发展前景就是薪资待遇与职业发展吧。如果有人跟你说这个行业没有出路,那么他一定在这个行业做得不好。
限制你发展的,其实往往是自身的格局与能力。
任何一个行业,如果只是在基础阶段徘徊,那么都是没有出路。基础测试工程师是软件测试行业的入门,90%学软件测试的都能做,所以你对于公司而言是随时可以取代的,发展待遇自然不高。
如果你想要有发展前景,那么就不能去从事那些觉得舒服、得心应手的工作。付出了才有回报,当你不断去挑战、不断地去克服时,才能在未来的职业道路上越走越远!
下面给大家详细分析一下:
一、软件测试的前景和行业现状
1.1软件测试的薪资情况
软件测试的路径:功能>>>接口>>>性能>>>自动化>>>测开>>>人生巅峰
功能测试:曾经互联网缺口和软件测试缺口都很大,所以有很多功能测试。但是,疫情的冲击下,基本上面试软件测试都会问到“自动化”。不管是培训还是自学,建议都不要止步功能。如今外包公司功能的薪资大概5-7k;但没什么晋升空间。
接口测试:在功能基础上,接口测试的薪资会高一些,8k左右,对自动化至少是了解的。
性能测试:性能测试的薪资基本上可以10k左右,一二线城市,有的三线也差不多能达到,还要看当地重什么业。
自动化测试:如果是刚学到自动化准备就业,大概开始也就12k,但是升职加薪空间很大。功能的话不存在工作年限的增涨而跳槽涨工资。但是精通自动化,看技术和工作经验,越老越吃香;
测试开发:如果是纯开发,在这个开发圈里你不一定很厉害,如果是测开,你在这个圈里肯定是很有名而且很厉害的角色。薪资不说了,做好拿期权股份的人。
1.2软件测试的行业现状
中国最早的对IT工程的启蒙和测试定位的探索大多数都来自于微软、技术启蒙和发展的话,是以自动化为主。有一些行业大佬说,十年前吧,公司里面做性能测试,就是用人一声令下,所有人一起开始点点,后来QTP和loadrunner出现就快速占据市场了。
互联网时代来临的时候,CMMI逐渐被互联网公司忽略。测试和开发的比例从1:2变成了1:3-5;移动花联网+创业浪潮的这个时代,各自发展迅猛,衍生了CI、CD和DevOps等,测试开发比例到了1:8;
现在基本上是大数据和人工智能时代,不管是这个时代的刚起步,还是怎么;其实已经逐渐形成了新的生产力并落地到了测试行业。可以参考一下新基建数据:
大数据、人工智能、5G、工业互联网,四大新基建信息基础设施建设下四大产业的TOP10,三个都有软件测试岗位。所以,题主所担心的这个行业到底有没有前途和出路,完全可以放心。说点简单易懂的,各行各业的产品供大于求,大家都在抢的流量就是用户,如果同行业产品和价格已经都稳定了,那么就要抢用户体验了。所以各个公司都非常注重自己的软件和产品,只要开始注重交互,那么软件测试和产品经理的发展就会很好很好…如果有缘刷到这个这篇问答,想转行可以放心转。
二、了解软件测试是什么
软件测试的定义就是找到软件的问题,确保修复后上线或交付;
两种测试方法主要是证明软件是工作的,或者是证明软件是不工作的。虽然目的不一样,但是操作大相径庭。
软件测试的组成是以文档、数据和程序组成的,所以软件测试应该对软件开发中形成的文档、数据和程序进行测试。但是现在很多测试仅仅只对程序测试。
测试之间的分类:
•单元测试=模块测试,对程序的模块进行检验测试
•集成测试=组成测试,检验程序单元的接口关系
• 确认测试:相当于检验和提供相对客观的证据,要证实内容就是软件是不是满足了预期
• 系统测试:要查看是不是达到了目标要求,对集成的软硬件进行测试
• 验收测试:按照项目的任务或者是合同,对系统进行全面的测试和评审,决定是否接收该软件
(友情提示:这些尽量去理解,也是很好理解的,因为这些只是软件测试的概念,零基础学习的必备)
其实还可以按照测试实施组织划分,但也是理解内容即可;技术划分的就是黑白灰盒测试;
测试类型:
• 功能测试:
功能测试就是看外部规格与程序之间有没有存在不一样,外部规格说明是一份从用户的角度对程序行为的精确描述。测试的时候按照科学的方法进行设计测试用例进行执行测试,在保证测试用例执行完全一样的前提下,在去根据业务的了解和经验判断进行探索性的测试;
• 界面测试:
UI测试,界面就是用户和软件交互最直接的层,所以更注重用户的体验性。需要测试人员从用户的感受、交互、浏览器和情感还有体验出发。具体的测试用户界面的功能模块布局是否合理,整体风格是否统一,各个控件的位置是不是符合用户习惯,都是测试人员需要考虑的,还有文字排版是否美观,是否命名统一。
• 兼容测试:
兼容性测试就是软件在特定的硬件平台,不同的操作系统上,网络环境中是不是可以正常运行。比如一个APP,在华为的mate30和小米上是不是都可以运行。还有就是在不同的系统上操作啊分辨率这些的兼容测试。
• 易用性测试:
简单来说就是软件是不是便捷,各个功能是不是复杂了,怎么去优化。这个不仅是测试要做的,还是产品。测试的时候可以根据需求,还有竞品软件分析对易用性的通用原则列出list,然后测试人员根据list进行测试。
• 性能测试:
说大白话也就是双11整点的时候,用户量增大,怎么可以模拟大量用户进行操作,看看有没有出现异常负载条件对系统的各项性能指标进行测试。
以上也就是软件测试的一些基本概念,上面说的测试类型还是需要理解了,才大概了解软件测试都有什么;
三、软件测试的日常
先回答题主问题,有人说测试很闲的而且晋升空间不大,也就个8-9k。一般做了几年功能测试的,升不上去的人会说闲的,还会说空间不大。软件测试这个行业绝对不是一个混资历的行业,也不是混年限的行业。
给看到文章的小伙伴们讲故事说吧:
身边一个33岁的小姐姐和一个35岁的大哥,工作都是很多年了,薪资要求也不高。但是最近疫情期间纷纷被公司抛弃,再找工作都没找到。其实原因很简单,疫情各个企业受到的影响都挺大的,但是企业更喜欢选择年轻人,可塑性比较强。
还有一个故事:
听到身边的一个资深HR说,最近面了一个33岁的测试人员,目前薪资4k,期望是6k;大家一致都觉得很可怕,33岁起码工作了了,就说是后转行,咱们按照30岁转行,工作3年要6k的薪资,反应了什么?
软件测试的日常生活:
有项目的时候,项目开始的时候,以开需求评审会了解迭代功能模块需求,也就是一边看文档一边开会的日子。了解阶段需要尽可能的将测试点梳理的非常细,在梳理过程中如果遇到需求逻辑不符的时候,可以先找产品确认。主要是和不同的人员,测试的侧重点不同;
项目中期的时候,就要开始写文档了也就是测试用例。如果你是个自动化测试呢,就要开始分析,或者接受领导的分析,哪一个模块需要用到自动化,你负责脚本中那个部分。中期遇到bug,还需要不断的和开发沟通。如果bug提交了,需要进行回归测试。
项目后期工作内容:
执行测试完成之后,测试人员需要对本次测试下一个结论,到底是测试通过还是不通过。这个时候软件测试人员需要下结论了,但是不能一句话就给开发和产品经理说,可以上线或者是项目不通过。
四、零基础如何自学软件测试
我们按照开篇的内容,直接按照自动化如何自学。因为学到功能不好,我们就直接零基础直接到自动化,很多功能测试入行三四年薪资还是职位都没有什么太大的提升,原因就是一入功能深似海,再去学技术等于雾里看花。
1.测试基础理论
不管有没有计算机基础,测试理论的学习都是首要的,不管你的目标是功能测试、性能测试、测试开发,这些基础知识必须优先掌握。
主要包括常见的软件开发流程及模型,尤其是解敏捷开发相关知识。然后,要学习软件测试的定义、分类、测试的流程、测试用例编写方法以及缺陷(bug)的管理及生命周期。其次,要了解web端和app的常见测试点和测试方法。最后,要会编写常见的测试文档,如bug单,测试计划、软件测试报告等。
2.Linux学习
Linux操作系统一直被用作重要的服务端操作系统,作为软件测试工程师,我们常常需要在服务器端查看日志,从而定位问题的源头。当然,更多的场景是,我们需要在linux系统上搭建测试环境。这些都需要我们掌握基本的linux系统知识,熟悉常见的命令及工具。更高级的使用,是通过编写shell脚本,自动化完成测试任务。
3. web前端
web前端开发基础:HTML、CSS基本内容学习。
web前端开发脚本:JavaScript最主流的脚本学习,同样的,这也会在自动化测试中设计没在一些工具中其实也经常会用到动态脚本,也是JavaScript语言。
开发者调试工具测试应用:虽然浏览器的F12被命名为开发者工具,但实际上不管是在功能测试还是自动化中,都起了很重要的作用。比如解析HTML,定位元素,调试脚本监控网络还有抓包;
互联网程序网络架构:TCP/UCP/HTTP等等协议的关系是什么
HTTP协议数据结构分析:完整歇息HTTP协议数据结构,包括Request、Respouse数据格式,Header的定义和用法各种状态代表什么,如何辨别。
Cookie与Session机制:解读cookie到底是什么还有它和session存在什么样的关系,如何测试需要注意些什么?
4.Mysql数据库
我说的进阶性测试,其实不应该只停留在“增删改查”
• 从mysql数据库测试应用:也就是环境搭建,客户端Navicat的使用与数据库操作还有数据相关的sql语法,增删改查你都需要掌握
• Mysql高级查询:查询升级,多表查询,子查询,查询分组,统计函数的使用(如果报名培训机构这里要问清楚,好多机构没有哦)
• Mysql自动以函数:内置函数还有自定义函数的位置,也是经常会使用的。
• Mysql存储过程sp:数据库必不可少的存储过程,通常也叫sp,怎么定义怎么测试,怎么使用更安全,测试到底用存储过程还能做什么更便于测试的内容;
• Mysql事务与编程:数据库事务使用的案例还有索引的原理和使用,数据库sql编程在测试中的应用;
5.抓包工具
Fiddler,Wireshark,Sniffer,Tcpdump各种抓包工具适用的项目;
6.接口测试工具
接口测试Loadrunner、JMeter、Postman;
现在很主流的测试工具有两款JMeter和Loadrunner。相比较于Loadrunner功能强大齐全需要收费来说,JMeter开源而且精悍短小。
尽管Loadrunner功能强大,但是很多项目都用不上就成了摆设。所以越来越多的企业都更倾向于JMeter。
其实两款工具还有一些模式上的区别,但是今天的重点是帮助大家快速了解jmeter。
7.web自动化测试JavaorPython
这里需要熟练掌握的内容是TestNG&unittest自动化框架,断言和日志处理;
自动化其实主要是思路,在了解业务上的思路,而且不是所有东西都适合自动化的。拿到一个项目,要先做分析,哪个模块进行功能测试,哪个模块要自动化,写代码的有谁,需要些脚本哪个框架。
Java或者Python任选一个:没有代码基础和非计算机专业的建议python入门。其实python入门了,再学java也没事,可以帮助你更好的理解面向对象;
web自动化就要说到selenium3的应用了:
• 开源软件:源代码开放可以根据需要来增加工具的某些功能;
• 平台:Linux、windows、mac;
• 支持多种浏览器:Firefox、Chrome、IE、Edge、Opera、Safari等;
• 支持多种语言:Python、Java、C#、JavaScript、Ruby、PHP等;
• 成熟稳定:目前已经被Google、百度、腾讯等公司广泛使用;
• 功能强大:能够实现类似商业工具的大部分功能吗,因为开源性,可实现定制化功能;
8.接口移动端自动化
专业的接口调用还有测试的解决方案,组件完整的web和接口自动化框架,Appium整体使用
9.敏捷测试&TestOpsgoujian
持续集成Jenkins框架需要熟悉到烂;
Jenkins框架实战,持续集成是最常见的框架,需要学会Jenkins操作、权限、系统管理等等,常用构件与运行实力讲
解静态的扫描测试Sonar:一款自动化代码扫描工具,也可快速发现代码中的问题,做到提前发现同一规范,自动化中的代码测试神器。应用不难~
10.性能测试&安全测试
完全进阶了,安全不是什么人都可学会的,哈哈从功能到安全也非常难,不过可以立个flag
性能测试还是相对来说好学习一些:接口的基本知识对性能很有帮助,性能来说工具只是辅助,更多的是思路和策略;
性能测试工具操作实战:前面都有了基础,看懂脚本完全不是问题,需要进阶的是关键的参数化,动态数据关联、实物、日志,大部分的脚本都可以进行实践。
安全测试起源与工具介绍:如何进行安全测试,安全测试都有哪些分类?都会用到什么样的工具,各自的作用是什么。web漏洞扫描,端口扫描,系统扫描等。
web安全测试手工实战:接口测试在安全中心的作用,不会手动的安全测试,基本上是没有办法理解自动以后的结果的。
技术行业,一定要提升技术功底,丰富自动化项目实战经验,这对于你未来几年职业规划,以及测试技术掌握的深度非常有帮助。
学习路线图:
福利
如果觉得《软件测试行业到底有没有前景和出路?》对你有帮助,请点赞、收藏,并留下你的观点哦!