“阅读本文大概需要6分钟。
你好,我是测试蔡坨坨。
最近收到不少小伙伴私信问,做了好几年测试,一直停留在手工测试点点点的阶段,想要进阶,想要做自动化测试,该怎么学习,以及需要学些什么?
今天,我们就来聊一聊手工测试如何进阶自动化测试。
为什么要学习自动化测试
在讨论这个问题之前,先来聊一下测试人员的职业发展路线,无非就是两条,技术路线和管理路线,技术路线一般就是功能测试(60%)-->自动化测试(25%)-->测试开发(5%)-->测试架构师/业务专家/测试专家(5%),管理路线一般就是测试工程师(60%)-->测试组长(25%)-->测试经理(10%)-->测试总监(5%)。
如果你已经从事测试工作两三年时间了,或者开发转测试,又或者上来就要包装三年及以上工作经验,那么掌握自动化测试技能必不可少。
对于还没有入行的小伙伴或者刚毕业的同学,更多的是关注测试基础技能的掌握,即使不会自动化也是可以找到一份初级测试岗位的工作,会编程和自动化更多的是作为加分项,特别是今年找工作比往年来说更难了,行业越来越卷,测试的招聘要求中几乎都会出现自动化测试的字眼,因此会自动化测试也是自身的核心竞争力。
又有人说,我想走管理路线,是不是就不需要学习自动化测试呢?虽然说,管理岗位更多的是对项目整体的把控,需要有较强的沟通组织协调能力,但并不意味着就可以不懂技术,很难想象一个不懂技术的管理者如何让手下信服,遇到一个自动化项目或测试平台项目需要开发时,如何合理科学地给下属分配任务?在我看来,即使你已经决定走管理路线,也不要过早的抛弃技术,应该要有足够的技术积累,毕竟测试是一个技术岗位,而且在互联网行业,大家极力推崇技术,可以说是技术为王的行业,一个不懂技术的管理者恐怕很难服众。
那么如何学习自动化测试?
- 学习一门编程语言
- 了解自动化测试的思想
- 主攻自动化测试,学习自动化测试工具库,包括接口自动化、Web自动化、App自动化
- 会独立搭建自动化测试框架
学习一门编程语言
学习一门编程语是打开技术大门的第一步,也是功能测试进阶自动化测试甚至测试开发的基本准入门槛。对于测试行业来说,绝大多数从业者会选择两门语言来学习,就是Python和Java。关于如何选择适合自己的编程语言,在往期文章中已经讨论过了,这里就不再赘述,参考「做自动化测试选择Python还是Java?」即可。
自动化测试的思想
在学习自动化之前,需要先了解自动化测试的思想,因为技术是为业务服务的,抛开业务谈技术就是耍流氓,只有了解其思想,才能更好地实施落地。了解什么是自动化测试,自动化测试的概念、本质,哪些场景适合做自动化测试、哪些场景不适合做自动化测试,以及自动化测试的原则等。
自动化测试就是把手工测试的一系列动作转化为机器自动执行。例如:要实现在电商网站上搜索商品,需要有以下步骤:打开网站(打开电商网站)-->定位元素(定位到搜索输入框)-->操作元素(在搜索框中输入衬衫,点击搜索按钮)-->模拟页面动作(下拉、上滑)-->断言结果(预期结果与实际结果比对,判断是否通过测试)-->生成测试报告。
适合自动化测试的场景如:需求不会频繁变动、UI比较稳定、项目周期较长、大量的回归测试任务、冒烟测试,针对本次迭代的核心功能进行冒烟测试,不适合自动化测试的场景如:交互性太强、视频音频播放器等。
自动化测原则,比如:一个case完成一个功能点、一个脚本是一个完成的场景、脚本之间独立,不能有依赖、设置合适的检查点、设计良好的框架。
主攻自动化测试
掌握编程语言以及了解自动化测试思想之后,便是开始主攻自动化测试了,总共可分为三种,接口、Web、App。推荐初学者从接口自动化开始学习,相比于UI自动化,接口自动化测试收益更大、更容易实现、维护成本更低,有更高的投入产出比,因此是公司开展自动化测试的首选。
企业中做自动化测试的目的主要是针对那些已经成熟并且变化很少的功能模块进行回归测试。比如Python技术栈会使用Requests、Pytest等框架结合公司业务实现一套覆盖公司系统绝大部分接口的自动化测试框架,并集成到Jenkins,每天定时执行,将测试报告发送到邮箱。这样做的目的主要是用来监控哪些接口服务挂了,以及版本迭代过程中上了新功能可能影响关联到其他接口导致异常发生,所以上线前要把系统或者模块的接口自动跑一遍,以便于测试人员第一时间发现问题,并交给开发人员进行修复解决,减少线上Bug率。
这个阶段需要学习自动化测试相关工具库,比如Python技术栈会有Requests、Selenium、Appium以及单元测试框架Unittest、Pytest,Java技术栈会有HttpClient、Selenium、Appium以及单元测试框架TestNG等。
关于上述技能的学习视频和电子书资料可以关注公众号测试蔡坨坨,回复关键字python或java领取。
自动化测试框架
学习了上述相关的自动化测试工具库,学会使用线性代码做自动化测试,但是线性代码存在很多缺陷,比如:测试的输入和断言都是捆绑在脚本中,易读性差;无共享或重用脚本、可复用性低;线性脚本修改代价大,维护成本高,不便于后期优化等。真正在企业中做自动化不会是这种线性代码,而是有一套较好的自动化测试框架。
因此在企业中,自动化测试工程师又可分为两种,一种是自动化测试用例工程师,日常工作主要是维护这套框架,编写测试用例脚本,以及将新增的用例维护到自动化中,技术含量不高,但比单纯使用测试工具的测试好一些;另一种是开发自动化测试框架,衡量这套框架质量的好坏很大程度就取决于它的易用性和可复用性,易用性就是让组内不懂代码的测试也能维护自动化用例,让技术能力不强的人转变为自动化测试用例工程师,可复用性就是有较好的共享重用脚本,新的功能加进来之后,这套代码的改动很小,有较强的兼容性。
关于如何独立搭建自动化测试框架,在往期文章中也有介绍,可参考以下两篇文章:
- 五分钟搞懂POM设计模式
- 五分钟学会接口自动化测试框架
以上,完。
脚踏实地,仰望星空,和坨坨一起学习软件测试,升职加薪!