以搜索为例,从功能测试,到抓取接口,实现 Jmeter 接口自动化思路详解!

本贴最后更新于 180 天前,其中的信息可能已经时移世易

一、背景

我们先看如下电商项目的搜索模块,作为一个专业的测试工程师,你会如何测试?

图片.png

初级测试:

思考: 以上的这种测试是充分的吗?答案是 否定的!

非常重要的一点: 在输入存在的商品关键字,例连衣裙,我们一定要验证商品结果的正确性及完整性,而不是只展示商品结果就够了!


那么作为专业测试,对于这里会怎么测呢?

测试思路: 输入符合条件的搜索,搜索结果验证,关注2点:


二、功能测试

功能测试操作:

1、输入连衣裙点击搜索,界面总共展示了5条符合要求的商品数据;第1条为“...蕾丝绣花钉珠连衣裙”,最后1条为“连衣裙”

2、查询项目数据库表,编写当前搜索商品的SQL语句;得到sql结果

图片.png

3、查询数据库表商品数量5条,与界面搜索一致;查询数据库表第1条、最后1条跟界面结果一致。测试通过。


总结: 完成以上模块测试工作,需要具备:


三、接口测试

接口测试的思路跟功能测试思路是一致的,如果以上模块需要进行接口测试,首先得先获取对应接口信息,包括接口地址、请求方式、请求头、请求体数据;这部分数据如果没有接口文档参考,可以通过抓包获取。再去实现接口自动化测试。

1、通过F12开发者工具抓取接口信息

图片.png

图片.png

图片.png

2、通过Jmeter测试搜索接口,得到结果

1)将获取到的搜索接口信息,填入到Jmeter工具中,如下:

图片.png

2)点击运行,得到响应结果,如下:

图片.png

3、Jmeter获取数据库数据

以上得到搜索接口的实际返回数据,需要通过查库获得的商品数据,去对比一致性,来完成测试。因此Jmeter脚本中需要进行数据库查库操作。

1)添加JDBC Connection Configuration,配置变量名,数据库连接信息,如下:

图片.png

2)Jmeter工具操作数据库需要自己添加驱动jar包,下载一个,放到jmeter的lib目录下,并在测试计划中导包,如下:

图片.png

3)添加JBDC Request,填写变量名,输入当前搜索商品的SQL语句

图片.png

4)点击运行,得到结果如下:

图片.png

4、接口返回结果 vs 数据库数据 对比一致性

如何通过Jmeter自动判断接口返回商品数据 与 查库的商品数据是一致的,这里通过断言处理!跟功能测试思路一样,从数量,以及取第1条商品数据、最后1条商品数据来做比较。

1)通过sql获取到的数据,定义2个变量来保存

图片.png

2)在搜索接口下面添加JSON断言,用来自动判断接口返回结果跟数据库查库商品数量一致性

图片.png

3)在搜索接口下面添加响应断言,用来自动判断查库得到的第1条商品数据、最后1条商品数据是否包含在接口实际返回结果中

图片.png

4)添加断言结果,点击运行;如上JSON断言、响应断言同时断言成功,则运行结果为绿色,表示测试通过。否则为红色,测试不通过。

图片.png

若红色,则为断言失败-测试不通过。

图片.png

四、总结

通过以上的实操案例,不论是用Jmeter去实现接口测试;还是用Python或Java去实现自动化测试,都是基于功能测试思路去实现。测试思维是不变的,是基础也是核心。在追求更高效的工具、代码测试过程中,不要忘记了最为本质的测试思维能力的提升,是非常重要的!

学无止境,行以致远。

回帖
请输入回帖内容 ...