问题:自动化测试有必要学吗?
答案肯定的!
1、何为自动化测试
首先,自动化测试是一种软件测试方法,是相对于手工测试的一种测试手段。其中,测试人员使用测试工具或编程语言编写脚本来执行测试。通过模拟用户行为、执行测试用例、检查系统行为、生成测试报告等方式来自动化测试流程。
手工测试是为了提高软件质量,自动化测试是在提高软件质量的同时提高测试效率(更好、更快、更省时,多快好省,降本增效),两者的最终目标是一致的,都是为软件质量服务。
常见的自动化测试工具包括Selenium、Appium、Request、Robot Framework、JUnit、TestNG等。
2、涨薪必备
学习自动化测试比较重要的一点就是涨薪的诱惑(打工不为工资,为爱发电吗?)或者说不会自动化测试在现在的行情下很难找到测试岗位工作。
随着行业内卷越来越严重,对于测试岗位的要求也是水涨船高,岗位招聘要求都会出现自动化、性能等字眼,因此也是我们跳槽面试、升职加薪必备利器。
虽然有的公司会用到自动化测试,但实际自动化的比例很小,甚至有些根本不会用到,但是面试的时候肯定会问到自动化,就是所谓的“面试造火箭,工作拧螺丝”。
3、职业发展
从职业发展的角度看,测试无非就是两条路线,技术路线和管理路线,技术路线一般就是功能测试、自动化测试、测试开发、测试架构师,管理路线一般就是测试工程师、测试组长、测试经理、测试总监。
如果你已经从事测试工作多年,那么掌握自动化测试技能必不可少。对于初级测试来说,虽然更多的是关注测试基础技能的掌握,但是会编程和自动化会是一个很好的加分项,特别是今年找工作比往年更难了。因此,会自动化测试也是自身的核心竞争力。
4、可以解决哪些痛点
1)构造测试数据
某些业务在测试之前需要准备前置条件,并且前置操作流程较长,在页面通过手工操作费时费力,此时就可以借助自动化脚本进行数据的初始化(比如调接口造数据,接口的响应时间一般都是秒级,甚至是毫秒级别的,比起页面操作可以更快完成数据的初始化);
某需求需要大量数据进行测试,就可以使用自动化工具Jmeter、Python/Java脚本循环造数据;
如果要造一些看似真实的假数据,还可以借助Faker库…
2)接口自动化测试
结合公司业务实现一套覆盖公司系统绝大部分接口的接口自动化测试框架,在上线前跑一遍,以便于测试人员第一时间发现问题,并提交给开发人员进行修复解决,减少线上Bug率。
3)web自动化测试
对于有些功能是在前端做校验,无法通过接口进行回归,又是主功能,就可以将其实现 UI 自动化。
5、自动化测试的思想
在学习自动化之前,需要先了解自动化测试的思想,因为技术是为业务服务的,抛开业务谈技术就是耍流氓,只有了解其思想,才能更好地实施落地。
了解什么是自动化测试,自动化测试的概念、本质,哪些场景适合做自动化测试、哪些场景不适合做自动化测试,以及自动化测试的原则等。
自动化测试就是把手工测试的一系列动作转化为机器自动执行。
例如:
要实现在电商网站上搜索商品,需要有以下步骤:
打开网站(打开电商网站)–> 定位元素(定位到搜索输入框)–> 操作元素(在搜索框中输入衬衫,点击搜索按钮)–> 模拟页面动作(下拉、上滑)–> 断言结果(预期结果与实际结果比对,判断是否通过测试)–> 生成测试报告。
适合自动化测试的场景如:
需求不会频繁变动、UI 比较稳定、项目周期较长、大量的回归测试任务、冒烟测试,针对本次迭代的核心功能进行冒烟测试,不适合自动化测试的场景如:交互性太强、视频音频播放器等。
自动化测原则:
比如:一个 case 完成一个功能点、一个脚本是一个完成的场景、脚本之间独立,不能有依赖、设置合适的检查点、设计良好的框架。
6、自动化测试学习
总共可分为三种,接口、Web、App。
推荐初学者从接口自动化开始学习,相比于 UI 自动化,接口自动化测试收益更大、更容易实现、维护成本更低,有更高的投入产出比,因此是公司开展自动化测试的首选。
企业中做自动化测试的目的主要是针对那些已经成熟并且变化很少的功能模块进行回归测试。
比如 Python 技术栈会使用 Requests、Pytest 等框架结合公司业务实现一套覆盖公司系统绝大部分接口的自动化测试框架,并集成到 Jenkins,每天定时执行,将测试报告发送到邮箱。
这样做的目的主要是用来监控哪些接口服务挂了,以及版本迭代过程中上了新功能可能影响关联到其他接口导致异常发生,所以上线前要把系统或者模块的接口自动跑一遍,以便于测试人员第一时间发现问题,并交给开发人员进行修复解决,减少线上 Bug 率。
这个阶段需要学习自动化测试相关工具库,比如 Python 技术栈会有 Requests、Selenium、Appium 以及单元测试框架 Unittest、Pytest,Java 技术栈会有 HttpClient、Selenium、Appium 以及单元测试框架 TestNG 等。
7、自动化测试框架
学习了上述相关的自动化测试工具库,学会使用线性代码做自动化测试,但是线性代码存在很多缺陷,比如:测试的输入和断言都是捆绑在脚本中,易读性差;
无共享或重用脚本、可复用性低;线性脚本修改代价大,维护成本高,不便于后期优化等。
真正在企业中做自动化不会是这种线性代码,而是有一套较好的自动化测试框架。
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图 |
不要因为起点低而放弃追逐梦想,每一次努力都是一次跨越。别被眼前的困境吓倒,愿你坚韧不拔,奋斗不止,最终收获辉煌的人生。相信自己,勇往直前!
不成功,便成仁。路漫漫其修远兮,我们不怕艰险,不惧挑战,只要拼尽全力,脚踏实地,相信自己,我们一定能够创造精彩的人生。愿你奋斗不息,收获喜悦!
不要因为失败而放弃,不要因为困难而退缩。只要你拥有梦想和勇气,坚持奋斗,努力追求,必将在人生的舞台上璀璨绽放,成就辉煌的人生。相信自己,你可以做到!