Jmeter是常用的接口测试工具,可以方便地对各种接口进行测试。有时,我们可能需要在一次测试流程中对某个接口进行若干次请求,以达成一定目的。这时,我们无需在脚本中重复添加类似的请求,可以利用Jmeter内置的loop控制器和while控制器来实现。下面,我就来说说这两种控制器的使用方法和在实际测试中的一些应用场景。
一、loop控制器
loop控制器又称循环控制器,loop控制器就像是编程语言中一个最基本的for循环,通过设置循环执行的次数,来实现对同一接口的若干次请求。
loop控制器的添加
参数说明:
loop控制器的参数十分简单,只有两个可以设置的参数,在输入框中,我们可以填入希望循环执行的次数;如果勾选了Forever(永远),那么该循环会一直进行下去(此时循环次数的设置无效)。
loop控制器的参数
应用场景:
在合成主播相关测试中,希望在启动每一路视频流后发送一定数量的文本进行合成,之后关闭该视频流。测试中涉及三个接口:启动流、发送文本、关闭流。其中发送文本的接口需要被调用多次,于是,可以在发送文本请求的外部添加loop控制器来实现多次调用(截图中为15次)。
loop控制器在合成主播项目测试中的应用
二、while控制器
while控制器类似编程语言中的while循环,在满足“条件”的情况下可以对控制器内部的请求进行调用,适用于无法确定具体循环次数的情况。
while控制器的添加
参数说明:
while控制器的参数只有一个,其中可以填入几种不同类型的“条件”。
- 空白 - 当循环中的请求失败时退出循环
- LAST - 直到最后一个请求请求失败才退出循环
- 其他 - 当条件等于字符串“ false ” 时退出(或不输入)循环,可以是表达式或变量
应用最多的应该是“其他”条件,我们经常需要判断一些变量的状态,来决定循环是否继续运行。
while控制器的参数
应用场景:
在非实时语音识别的测试中,我们需要按照“传音频——查询转写进度”的顺序来进行接口调用,其中查询转写进度需要每隔一定的时间,重复调用查询接口,直到查询到转写完毕或转写失败后结束查询。因为每次传的音频不同,所以每次识别服务需要处理的时间不同,所需要查询的次数也不同,因此适合使用while控制器来控制查询的流程。
在while控制器的参数中,我们可以写入判断变量状态的表达式(此处使用Jmeter的JavaScript函数及相关判断语句来实现判断,可根据需要使用其他函数和语句,如jexl3, groovy等)。
当查询进度不为true(完成标记)以及没有返回有效错误代码(code)时,每隔一定时间(通过Constant Timer实现)进行查询。
while控制器在非实时语音识别测试中的应用
最后,来总结一下~本期介绍了Jmeter中两个常用的循环型控制器,在需要条件循环来进行测试的场景下非常有用,能够大大简化测试脚本的编写,全程菜单化设计,无需写循环代码即可实现,提高了测试的整体效率,希望能给大家带来一些帮助。