Jmeter——ForEach Controller&Loop Controller
今天来分享下Jmeter中的2款循环控制器,ForEach Controller和Loop Controller,在使用上还是有所区别。
ForEach Controller
ForEach Controller简介
ForEach Controller可以理解为迭代器(iterator),就是遍历当前符合条件的所有数据,可用于Jmeter脚本中的参数化。
我们直接看图来说,如下所示:

如上所示,就是ForEach Controller的配置界面,界面有如下参数,一一讲解:
Name:控制器名称,可根据用户需要任意填写,也可不填
Comments:用户可根据需要任意填写,也可不填
Input variable prefix:输入变量前缀,数据来源:①用户可以在“用户自定义变量”中定义一组变量,循环控制器可以从中获取到变量对应值,然后作为循环条件;②用户可将提取的参数作为循环条件
Start index for loop(exclusive): 开始循环字段,循环变量下标起点(不包含)
End index for loop(inclusive):循环变量下标终点(包含)
Output variable name:输出变量名称,循环控制器生成的变量名称,引用时填写的参数名称与输出变量名称一致
Add "_"before number?:数字之前加上下划线“_”,变量前缀是否加“_”作为分隔符
ForEach Controller使用
我们直接通过案例来看,ForEach Controller如何使用。如上所述,变量的来源,取自于2种情况,那我们就一一了解下。不过在操作之前,各自要有Jmeter环境哦,环境配置可以参考以前博文。
用户定义变量
用户定义变量是配置元件中的一个元件,可定义参数,便于后续接口直接使用,也是参数化的一种方式。元件添加入口如下所示:

我们来定义一组数据,我就以自己的博客为例了,配置参数后,如下所示:

我们可以看出,变量名称是有规律可循的,都是以wd_number开头。或许有疑问,为什么要这样来设置,继续往下看,马上就能知道其作用了。
参数来源我们配置好后,这就需要在ForEach Controller配置对应数据了,跟上节奏一起来。
我们在之前ForEach Controller简介中了解到,有个参数是Input variable prefix 输入变量前缀,在这里输入的内容就是wd_number。因为我们在用户定义变量的元件中,配置的一组数据都是以此开头的。
Start index for loop(exclusive)和End index for loop(inclusive)可以不配置,非必填数据。如果配置的话,需要注意的是,起始位是不包含的,这个到时候具体看案例截图就清楚。
Output variable name输出变量,这个参数是用于后续参数的引用名称,比如我们平时用到的正则提取器,也是需要定义一个变量的,同一个意思。
Add "\_"before number 这个是看各自定义的变量名称是怎样的,变量间有_,则需要勾选,没有的话,不勾选即可。
配置结果如下所示:

我们再用outwd变量引用到对应接口参数中即可,如下所示:

到现在为止,已经完成了配置步骤,我们直接来运行脚本,看下运行结果,如下所示:

从运行的结果可以看出,我们并没有设置循环次数,可为什么是5次了,是因为我们设置的变量只有5个,并且是依次替换变量请求接口,这不就是普通的参数化嘛,是不是很简单。
刚才的结果,我们没有配置循环的起止位,现在我们配置上起止位,配置如下:

再次运行脚本,看下是什么个结果,如下所示:

从上图运行的结果可以很清楚明了的看出其作用,起始位是不包含的,结束位是包含,配置为1和3,所以运行结果是取2和3的参数来请求接口。
提取参数
提取参数同样以博客为例,每个人的博客都有三个列表,阅读排行榜、最新评论、推荐排行榜,刚好可以用于此demo。
可以看下数据,都是一个a标签,如下所示:

通过用户定义变量的方式,大家肯定有思路,提取参数如何实现了。
我们通过正则,将15条数据提取,并把对应参数配置到ForEach Controller即可。
那我们就先实现正则匹配这一步,正则相关知识自己另外补充,也可以参考我以前的博文,今天就不赘述了。我们观察要提取的数据,都是有规律可循的,添加正则提取器,并配置如下所示:

这里需要注意的是,Match No.,我们在这里配置为-1,因为需要符合条件的所有值:
- 配置为0,表示随机值;
- 配置为正整数,表示取匹配到的第几个数据;
- 配置为-1,表示取匹配到的所有数据。
正则配置好后,可以运行脚本,看下是否正常提取到了数据,调试也是写脚本的一部分工作。
我们再来配置ForEach Controller,如下所示:

再将输出变量引用到对应接口参数中,如下所示:

我们来运行脚本,看下整体效果,如下所示:

如上所示,分别请求了15次接口,使用起来是不是很方便,到此,是不是已经可以上手使用起来了,参数化就是这么简单。
Loop Controller
Loop Controller简介
Loop Controller,功能扩展性不强,只能配置为无限循环和具体循环次数,主要用于测试接口重复调用的情况。
我们通过配置界面来了解下,如下所示:

根据上图,来了解下参数配置:
- Loop Controller:元件名称
- Name:控制器名称
- Comments:注释
- Loop Count:设置运行次数,Infinite 勾选表示为永久运行
Loop Controller使用
Loop Controller使用很简单,我们看了配置界面就很清楚,无非就是配置循环次数,或者一直无限循环。
指定循环次数
我们通过案例来直观的看下效果,我们配置循环次数为2,并运行脚本,运行结果如下所示:

我们从上图可知,循环次数为2,每个接口调用了2次。比如有些业务,后端接口有做重复调用校验的,就可以通过这种方式来验证了。
无限循环
配置为无限循环的话,顾名思义,那肯定是一直会运行脚本,除非手动停止,脚本才会停止运行。
好了,今天的2种循环控制器就介绍到这里,综上所述,如果用于参数化的话,大家肯定会使用ForEach Controller。2种控制器,各有功能,各取所需,希望对有需要的博友有所帮助。
Jmeter——ForEach Controller&Loop Controller的更多相关文章
- 【JMeter_07】JMeter逻辑控制器__循环控制器<Loop Controller>
循环控制器<Loop Controller> 业务逻辑: 根据所填写的循环次数,对当前节点下的取样器进行响应次数的循环请求,这里可以填写变量.整数.小数.字母.负数.各种符号等: 当填写整 ...
- Jmeter系列(26)- 常用逻辑控制器(5) | 循环控制器Loop Controller
循环控制器(Loop Controller) 字面意思,循环该控制器下的请求 设定固定循环次数,或者一直循环 同线程组的循环是父子关系,大家可以试下,如果线程组设置了一直循环,而循环控制器设置了2次, ...
- Jmeter之逻辑控制器(Logic Controller)
Jmeter之逻辑控制器(Logic Controller) 前言: 1. Jmeter官网对逻辑控制器的解释是:“Logic Controllers determine the order in w ...
- Jmeter之逻辑控制器(Logic Controller)【转】
Jmeter之逻辑控制器(Logic Controller) 前言: 1. Jmeter官网对逻辑控制器的解释是:“Logic Controllers determine the order in w ...
- (四)Jmeter之逻辑控制器(Logic Controller)
Jmeter之逻辑控制器(Logic Controller) 前言: 1. Jmeter官网对逻辑控制器的解释是:“Logic Controllers determine the order in w ...
- Jmeter学习之While Controller
参考 https://www.cnblogs.com/richered/p/8404641.html https://blog.csdn.net/rwang99/article/details/511 ...
- Jmeter 逻辑控制器 之 Include Controller
一.认识 Include Controller Include Controller :译为包含控制器,用来添加 Test Fragment(测试片段).具体是什么意思呢,我们先来了解下 Test F ...
- Jmeter 逻辑控制器 之 Switch Controller
一.认识 Switch Controller Switch Controller:开关控制器,通过其下样例顺序数值或名称 控制执行某一个样例 二.通过样例顺序数值控制执行样例 三.通过样例名称控制 ...
- 测试开发jmeter forEach控制器
测试开发jmeter forEach控制器 forEach控制器的使用场景:主要是对大量数据轮询就行接口请求 forEach控制器的使用前提:将数据进行参数化 测试开发jmeter forEach控制 ...
随机推荐
- 一种基于均值不等式的Listwise损失函数
一种基于均值不等式的Listwise损失函数 1 前言 1.1 Learning to Rank 简介 Learning to Rank (LTR) , 也被叫做排序学习, 是搜索中的重要技术, 其目 ...
- Pots(POJ - 3414)【BFS 寻找最短路+路径输出】
Pots(POJ - 3414) 题目链接 算法 BFS 1.这道题问的是给你两个体积分别为A和B的容器,你对它们有三种操作,一种是装满其中一个瓶子,另一种是把其中一个瓶子的水都倒掉,还有一种就是把其 ...
- 剑指Offer(三):从尾到头打印链表
一.前言 刷题平台:牛客网 二.题目 输入一个链表,返回一个反序的链表. 1.思路 通常,这种情况下,我们不希望修改原链表的结构.返回一个反序的链表,这就是经典的"后进先出",我们 ...
- 【比赛记录】8.21 div2
A 选择一个点\(B(x,0)\)使得\(|dis(A,B)-x|=k.\) 题目实际上就是找到一个最接近\(n\)的数,使得它可以分成两个数\(a,b,\)使\(a-b=k.\) 我们考虑先分成一个 ...
- Hive理论基础
数仓特征:面向主题,集成,非易失的,时变.数据仓库是在数据库已经大量存在的情况下,为了进一步挖掘数据资源.为了决策需要而产生的,不是所谓的"大型数据库". 数据库与数据仓库的区 ...
- 小白安装使用Redis
Redis属于NoSql中的键值数据库,非常适合海量数据读写. 之前用过mongo但是没有用过redis,今天来学习安装redis. 先去官网下载redis安装包 redis官网 redis是c语言编 ...
- Docker笔记6:Docker 常见命令及镜像管理
目 录 一.Docker 常用命令 docker version 命令 docker info 命令 二.Docker 镜像管理 搜索镜像:docker search 镜像名 获取镜像:docker ...
- 提取swagger内容到csv表格,excel可打开
swagger生成的页面api接口统计,有几种方法 直接在前端用js提取出来,较麻烦(不推荐,不同版本的页面生成的标签有可能不一样,因此可能提取不出来) //apilet a = document.g ...
- LCA树上倍增求法
1.LCA LCA就是最近公共祖先(Least common ancestor),x,y的LCA记为z=LCA(x,y),满足z是x,y的公共祖先中深度最大的那一个(即离他们最近的那一个)qwq 2. ...
- 【C++入门学习笔记】函数和对象!你需要这一篇文章入门C++!
一.本篇要学习的内容和知识结构概览 二.知识点逐条分析 1. 混合型语言 C++源文件的文件扩展名为.cpp, 也就是c plus plus的简写, 在该文件里有且只能有一个名为main的主函数, ...