1、什么是逻辑控制器

JMeter官网对逻辑控制器的解释是:“Logic Controllers determine the order in which Samplers are processed.”

意思是说,逻辑控制器可以控制采样器(Samplers)的执行顺序。

由此可知,控制器需要和采样器一起使用,否则控制器就没有什么意义了。放在控制器下面的所有采样器,都会当做一个整体,执行时也会一起被执行。

JMeter提供了多种逻辑控制器,它们各个功能都不相同,大概可以分为两种使用类型:

  • 控制测试计划执行过程中,节点的逻辑执行顺序,如:ForEach Controller(ForEach控制器),Loop Controller(循环控制器)、If Controller(如果if控制器)等;
  • 对测试计划中的脚本进行分组,方便JMeter统计执行结果,以及进行脚本的运行时控制等,如:Throughput Controller(吞吐量控制器)、Transaction Controller(事务控制器)等。

2、ForEach控制器介绍

ForEach控制器一般和用户自定义变量一起使用,从用户自定义变量中读取一系列相关的变量。

ForEach控制器遍历读取不同的变量值,来控制其下的采样器或控制器执行一次或多次。

说明:

  1. 从上文中看到了一组数据,就说明这样的数据,通常为一个数组。
  2. 可以使用ForEach控制器遍历循环,说明这组数据有一定的规范和顺序标识。
  3. 看到用户自定义变量,就说明也可以用到参数化,从数据文件中读取数据。同理也可以从之前的请求接口中提取到需要的数据,进行遍历循环。

添加ForEach控制器组件操作:选中“线程组”右键 —> 添加 —> 逻辑控制器 —> ForEach控制器

界面如下图所示:

ForEach控制器组件界面说明:

  • 名称ForEach控制器组件的自定义名称,见名知意最好。
  • 注释:即添加一些备注信息,对该ForEach控制器组件的简短说明,以便后期回顾时查看。
  • 输入变量前缀:输入需要遍历的这一组数据的前缀,例如:appid_1appid_2,则appid就是前缀。

    提示:包括用户自定义变量,或者是参数化文件中的数据都要这样命名才能遍历。
  • 开始循环字段(不包含):循环的起始位置,如填0,实际是从第一个开始。默认为空也可。(亲测可以)
  • 结束循环字段(含):循环结束的位置,如填4,实际第4个不会被使用,只会到第3个。默认为空也可以,程序会循环执行到最后一个变量,再停止。(亲测可以)
  • Add "_" before number ?: 是否在上面输入的变量后增长下划线“_”。例如不勾选此项,变量为appid1, appid2...以此类推。勾选此项后,变量名变为appid_1, appid_2...以此类推。

    默认为勾选,默认的最好不要动,按照上面的变量名整理数据就好。在日常工作中,看准备数据的情况,来决定是否取消勾选。

3、ForEach控制器的使用

我们以一个学院系统为例,完成以下步骤:

  1. 先查询出所有学院的列表。
  2. 把列表中的学院ID都提取出来,也就是得到我们需要一组数据。
  3. 然后使用ForEach控制器,循环遍历这些数据。
  4. 从而根据每个学院ID,单独查看学院的信息。

(1)测试计划内包含的元件

添加元件操作步骤

  1. 创建测试计划。
  2. 创建线程组:选中“测试计划”右键 —> 添加 —> 线程(用户) —> 线程组
  3. 在线程组中,添加取样器”HTTP请求“组件:选中“线程组”右键 —> 添加 —> 取样器 —> HTTP请求
  4. 在取样器中,添加后置处理器“JSON提取器”组件:选中“取样器”右键 —> 添加 —> 后置处理器 —> JSON提取器
  5. 在线程组中,添加逻辑控制器“ForEach控制器”组件:选中“线程组”右键 —> 添加 —> 逻辑控制器 —> ForEach控制器
  6. 在逻辑控制器中,添加取样器“HTTP请求”组件:选中“逻辑控制器”右键 —> 添加 —> 取样器 —> HTTP请求
  7. 在线程组中,添加监听器“察看结果树”组件:选中“线程组”右键 —> 添加 —> 监听器 —> 察看结果树

最终测试计划中的元件如下:

点击运行按钮,会提示你先保存该脚本,脚本保存完成后会直接自动运行该脚本。

(2)获取学院列表请求内容

标准的Get请求,填写请求的基本要素即可。

如下图所示:

返回的数据为JSON格式的数据,如下图:

(3)JSON提取器内容

JSON提取器需要做的就是把每个学院的ID提取出来,存放到线程变量中,然后提供给后边的请求使用。

编辑内容如下:

我们把变量的名字定义为depid,这样提取出来的变量名就会变为depid_1depid_2,以此类推。

然后使用 JSON PATH 表达式来,提取我们需要的数据。

最后填写-1,表示保存所有提取到的值,0表示随机保存一个提取到的值。

如下图所示:

当然我们也可以使用正则表达式提取器组件来提取我们需要的数据,结果是一样的。

如下图所示:

最后我们可以使用Debug Sampler组件,来查看我们提取的值,是否保存在线程变量中了。

如下图所示:

(4)ForEach控制器内容

ForEach控制器中所编写的内容:

  1. 输入变量前缀:就是我们上图中,存在线程变量中数据名称的统一前缀,为depid
  2. 在哪个变量开始遍历循环:0表示从第一个变量开始,因为不包含开头,也就是从depid_1变量开始。也可以默认不填写(亲测可以,但最好还是写上)。
  3. 在哪个变量停止遍历循环:一共有6个变量,因为包含结尾,所以填写6。也可以默认不填写(亲测可以,但最好还是写上)。
  4. 输出变量名称:也就是在其他的请求中,可引用这个变量的名字,我就定义为dep_id

如下图所示:

(5)查看学院请求内容

也是一个标准的Get请求,只需要填写请求的基本信息即可。

然后我们再需要引入数据的地方,进行参数化变量的引用。

因为该请求在ForEach控制器的控制下,所以ForEach控制器每次遍历循环得到的学院ID,都传送到请求里的dep_id变量中,这样就能查看对应的学院信息了。

如下图所示:

(5)查看结果

运行脚本,查看结果,如下图所示:

从上图中我们可以看到,通过每个学院的ID,单独查看了自己学院的信息。

这样我们就完成了,介绍ForEach控制器是如何使用的。

提示:关于其他的控制器,我们以后用到,在详解的进行说明。

『动善时』JMeter基础 — 40、JMeter中ForEach控制器详解的更多相关文章

  1. 『与善仁』Appium基础 — 12、Appium的安装详解

    目录 (一)Appium server安装 方式一:(桌面方式:推荐) 1.Appium Desktop下载 2.Appium Desktop安装 3.Appium Desktop使用 方式二:(No ...

  2. 『动善时』JMeter基础 — 31、JMeter中BeanShell断言详解

    目录 1.BeanShell简介 2.Beanshell的内置变量和方法 3.BeanShell断言界面详解 4.BeanShell断言的使用 (1)测试计划内包含的元件 (2)登陆接口请求界面内容 ...

  3. 『动善时』JMeter基础 — 32、JMeter察看结果树组件详解

    目录 1.察看结果树介绍 2.察看结果树界面详解 3.察看结果树的其他功能 (1)将数据写入文件中 (2)Search功能 (3)Scroll automatically选项 4.总结 1.察看结果树 ...

  4. 『动善时』JMeter基础 — 6、使用JMeter发送一个最基础的请求

    目录 步骤1:创建一个测试计划 步骤2:创建线程组 步骤3:创建取样器 步骤4:创建监听器 步骤5:完善信息 步骤6:保存测试计划 步骤7:查看结果 总结:JMeter测试计划要素 当我们第一次打开J ...

  5. 『动善时』JMeter基础 — 20、JMeter配置元件【HTTP Cookie管理器】详细介绍

    目录 1.HTTP Cookie管理器介绍 2.HTTP Cookie管理器界面详解 3.JMeter中对Cookie的管理 (1)Cookie的存储 (2)Cookie的管理策略 4.补充:Cook ...

  6. 『动善时』JMeter基础 — 44、JMeter对数据库的更新操作

    目录 1.执行一条insert语句 2.insert语句实现参数化 3.一次执行多条insert语句 4.使用Beanshell生成加密数据示例 (1)测试计划内包含的元件 (2)JDBC连接配置组件 ...

  7. 『动善时』JMeter基础 — 7、jmeter.properties文件常用配置

    目录 1.默认语言设置 2.配置默认编码格式 3.GUI图标放大比例设置 4.功能区工具栏图标大小设置 5.视图区目录树图标大小设置 6.内容区编辑字体设置 7.添加JMeter元素快捷键设置 8.捕 ...

  8. 『动善时』JMeter基础 — 12、JMeter取样器详解:sampler

    目录 1.取样器介绍 2.JMeter自带的取样器 3."HTTP请求"为例介绍一下取样器 (1)HTTP Request: (2)Web服务器: (3)HTTP请求: (4)同请 ...

  9. 『动善时』JMeter基础 — 17、JMeter配置元件【HTTP请求默认值】

    目录 1.HTTP请求默认值介绍 2.HTTP请求默认值界面 3.HTTP请求默认值的使用 (1)用于演示的项目说明 (2)测试计划内包含的元件 (3)说明HTTP请求默认值用法 4.总结 5.拓展知 ...

随机推荐

  1. hdu2722 简单最短路,处理好输入就行

    题意:       从左上角走到右下角,有的最短时间,每段路径的长度都是2520,每段上都有自己的限制速度,方向. 思路:      直接写就行了,就是个最短路,权值是2520/限制,输入的时候细心点 ...

  2. 小技巧!CSS 提取图片主题色功能探索

    本文将介绍一种利用 CSS 获取图片主题色的小技巧.一起看看~ 背景 起因是微信技术群里有个同学发问,有什么方法能够获取图片的主色呢?有一张图片,获取他的主色调: 利用获取到的这个颜色值,来实现类似这 ...

  3. 基于Gitlab的CICD流程

    本片文章主要初步介绍什么是CICD流程,并且把整个流程进行拆分理解整个流程的跑通过程. 1.CICD概述 什么是CICD呢? 简单的说CICD就是持续集成自动构建自动测试自动部署. 从概念上就可以看出 ...

  4. .NET Core 服务诊断工具

    前言: 前一篇文中介绍了.NET Core-全局性能诊断工具 的使用方法,那么接下来自己实现一个简单.NET Core的诊断工具. 该工具主要包括:.NET Core 程序进程信息查看.性能计数器结果 ...

  5. VS·调试过程中某个操作导致调试突然退出之解决方案

    阅文时长 | 0.11分钟 字数统计 | 232字符 主要内容 | 1.引言&背景 2.声明与参考资料 『VS·调试过程中某个操作导致调试突然退出之解决方案』 编写人 | SCscHero 编 ...

  6. 【Mysql】数据库索引,百万数据测试索引效果

    Mysql官方对索引的定义是:索引(index)是帮助Mysql高效获取数据的数据结构.进而,我们可以知道索引的本质是数据结构. 一.索引的分类 主键索引:也就是我们常见的 PRIMARY KEY,只 ...

  7. 用python输出未来时间,递增

    输入当前时间,之前与之后的365天时间日期 按格式化输出 #!/usr/bin/evn python # -*- coding: UTF-8 -*- # import time import date ...

  8. Windows10 添加 新的输入法

    Windows10系统 控制面板 区域 语言首选项 设置 添加 陈桥输入法

  9. Linux下Shell实现服务器IP监测

    实验室有一个服务器放在机房,装的是Ubuntu Server,IP为自动分配,因此一旦IP有变化就无法远程操作,必须去机房记录新的IP.学了几天Shell之后想,是不是可以定时检测其IP的变化,一旦有 ...

  10. K8S的资源管理

    K8S的资源管理 管理K8S资源的三种基本方法: 陈述式资源管理方法-使用cli工具进行管理. 声明式资源管理方式-主要依耐资源配置清单. GUI式资源管理方法-主要依耐图形界面. 陈述式资源管理方法 ...