Jmeter实现接口业务闭环测试脚本实例

面试官这样子问:

能举个你工作中实际发生的接口自动化测试例子吗?

参考回答:

我之前公司是业务是XXX,项目形式是在大型的稳定项目上不断的迭代新的需求,因此每次上线的时候,除了要保证新需求的正确性之外,还需要保证原系统主流程是通畅的。因此每次上线都要做一个固定的回归测试,一开始是大家都花一个小时左右去手动点那个主流程。后来我看重复工作实在是太繁重了,就做了一个Jmeter版本的接口自动化出来,比如用Jmeter自带的逻辑控制器,将登录接口放在仅一次控制器里,使用正则表达式或Json提取器获取到Token值后,后面的所有业务接口的请求头都带上这个Token值,然后实现后台管理系统里的增、查、改、删的业务闭环场景,因为自动化场景经常被运行,所以一定要做成业务闭环,不然只做新增的话,会堆积大量的测试数据,给服务器造成没必要的压力。

然后我做新增操作一般会应用上循环控制器,同时新增多条数据,查询接口查询出一个列表,然后在做改、删除操作等循环时,还需要用上计数器、定时器(模拟思考时间)等来辅助。

设计好脚本,在本地调通之后,我会把脚本上传到服务器上,然后使用Jenkins工具设置每天定时执行,如有问题就会给我发邮件,这样子就能及时发现问题,也省下了很多的手工回归测试的时间。

JMeter具体实现

建测试计划、线程组这些基础的操作就不多说,需要注意一下的有几点:

1、HTTP信息头管理:

如下图所示,一般接口文档标明必传的请求头包含Content-Type的话,就必须要加上,否则接口请求不了。然后token是令牌令牌,从安全性上考虑,必须要通过登录授权,获得token令牌后,其他接口在请求头传入token值才可以继续访问,因此将它加到请求头里。使用参数引用的方式(在登录接口用正则表达式或Json提取器提取出来)

2、HTTP请求默认值

为了不用之后每一个接口都写一次ip地址,可以全局一次性解决

3、登录接口跟仅一次控制器

一般做接口自动场景,除非是专门测登录接口,否则一般建议放进仅一次控制器里,只需要登录一次,后面的接口不管怎么循环都不会对它影响。而这个登录接口的主要目的是获取系统的授权。

如下图所示,为了安全起见,每次登录得到的令牌都会变,因此不能写死,只能将它每一次一值提取出来,作为全局参数,传到HTTP请求头里去。

这个JSON提取器不是必须要提取的。只是因为下面用的IF控制器,判断当登录成功了才跑后面的接口。所以为了判断登录成功,可以用JSON提取器将code返回值提取出来。

4、IF控制器

如需要对不同的条件做不同的操作,我们可以使用(if)控制器来实现

如下图所示,使用函数助手引用登录接口获取得login_code,并以等于200作为判断条件,点击生成后即可粘贴到IF控制器里。如果它不等于200,则整个控制器里的所有接口都不会跑。

 

5、新增接口

随机函数:

6、查询接口

因为新增是循环新增了多个,那么按名字关键字查询可以查出一个列表,然后将这个列表里的所有行都进行编辑和删除即可完成业务闭环。然后查询不需要循环控制器,仅需要查一次

7、调试取样器:

在查询接口后面加上调试取样器,是为了获取查出来的id和zoneName信息:

修改和删除,可以用循环控制器和ForEach控制器,使用效果一样,方法不同,分别写一个。

8、循环控制器和修改

首先循环次数不是写死的,需要根据查询出来的列表长度来决定

为了每次编辑的记录都是不同的,并且是从头到尾一条一条地改,需要加上一个计数器

修改接口

借助函数助手拼接多参数

9、ForEach控制器和删除

 

猜你喜欢

转载自blog.csdn.net/shuirongwu/article/details/129478961