自动化测试,最近些年可谓是大火。招聘上的要求也好,培训班的广告也罢,比比皆是,足以说明它在业内的火爆程度。
虽然说会写自动化测试也不能说明你牛批,但是你不会的话,那么很抱歉,你的上升通道就会变得更窄。
一、为什么要去做自动化测试
其实自动化测试之所以受到大家的追捧,必然也是有它的道理。说白了,我觉得根本的因素是在于提效。
当然了,提效这个是最终理想,但是有些公司的自动化项目落地的并不太好,反而成为了某种“累赘”。
在不少的测试群里待过,看到过很多人吐槽自己的领导或者公司xx,突然某天就宣布要开始搞自动化了,然后安排下去。
其实很多时候,他们自己并没有搞清楚,项目适不适合做自动化、做怎么的自动化。说白了,就是为了做自动化而做,
并不清楚,真正想要的是什么。
所以,在做自动化之前,建议搞搞清楚你们要做的自动化项目应该是什么样子的,解决了什么痛点,能提高多少的效率等等。
否则,辛辛苦苦做下来的自动化,很容易到后面就变成了废品。
二、自动化的类型
大家通常会去选择做自动化的类型一般有2种:一种是UI自动化、一种是接口自动化。
那UI自动化中,又可以有web系统的自动化、APP的自动化等等。
笔者本人曾经开发维护过一套web自动化的服务,说实话,投入回报率不高,所以后来也就逐步放弃了。
回想起来,这也算是领导没弄清目的就盲目开展的典型案例了,不过这段开发经历对我来说还是很宝贵的。
到后来重点就转移到了接口自动化了,为什么呢?
首先声明,这里讲的接口是指协议接口了,比如http协议的接口,并不是程序接口,比如java里的interface。
那么接口层相比于UI层,最大的优点是更接近底层逻辑,可以让测试更早的介入。于是更早的发现bug,修复的成本也就越低了。
另外,接口测试也可以更容易发现UI测试中不容易发现的问题。
比如说,一个接口没有对非法传参进行处理,虽然UI在输入框进行了一些不合规的类型输入校验,但是只要抓个包修改下参数请求过来,就会立即暴露出问题。
三、搭建一个接口自动化框架需要的技能
- 编程语言:既然做了这行,编程是跑不掉的。java、python 哪个熟悉用哪个吧,我个人偏向于脚本用python。
- 单元测试框架:不同语言有不同的测试框架,python有unittest、pytest等,java有testng、junit等。我个人偏向python的pytest。
- 搜索解决问题:其实有了前面2个点是基石,剩下的就是你遇到什么问题或者需求,知道如何去搜索解决实现的能力了。比如能找到合适的
第三方库,来增加自己的框架,拿pytest来说,可以用requests库来发送请求,用jmespath库来提取复杂的接口响应,以及用allure框架来
输出一个漂亮的报告等。
搞清楚了这些,基本上就可以开始做起来了。
一开始不用过度的考虑自己的框架的终极形态是什么样子的,因为我觉得没有最好的框架,只有最适合的框架。在你实现的过程中,会遇到不同的问题,
然后你不断迭代优化你的框架去解决这些问题,于是乎框架会一点点的变成大家心中的样子。
后面会分享一些个人搭建的框架,以及过程中需要注意到的一些细节等。