浅谈逻辑控制器之ForEach控制器

news2024/12/23 13:43:59

浅谈逻辑控制器之ForEach控制器

ForEach控制器是一个非常实用的功能,它允许用户遍历某个变量的所有值,并为每个值执行控制器内的子采样器或逻辑。这对于处理从先前请求(如CSV Data Set Config、JSON Extractor、Regular Expression Extractor等)中提取的多个变量值特别有用。

简介

组件名称:ForEach Controller
功能:遍历指定的变量集合中的所有值,并为每个值独立执行一次控制器内的操作。

使用场景

  1. 数据驱动测试:当需要使用从响应中提取的一系列值来驱动后续请求时,例如遍历从一个列表中获取的所有用户ID进行登录测试。
  2. 结果处理:处理CSV文件或数据库查询返回的多行数据,对每一行数据执行相同的测试步骤。
  3. 参数化测试:动态地将一组变量值应用于同一测试场景的不同迭代中。

配置说明

在JMeter中添加ForEach控制器很简单,以下是配置步骤和关键参数解释:

  1. 右键点击测试计划、线程组或任何其他控制器,选择“添加” > “逻辑控制器” > “ForEach控制器”。
  2. 配置ForEach控制器:
    ○ 名称(Name):控制器的名称,用于标识。
    ○ 输入变量前缀(Input Variables Prefix):输入变量前缀。这是你希望遍历的变量的名称前缀。例如,如果你使用正则表达式提取器设置了变量名为userId_1、userId_2等。
    ○ 开始循环字段(不包含):循环的起始索引,通常情况下保持默认值0即可。
    ○ 结束循环字段(含):循环的结束索引(包含)。留空表示遍历所有匹配的变量值。
    ○ 输出变量名称(Output Variable Name):输出变量名。这是ForEach控制器为每次循环分配的新变量名,用于在控制器内部访问当前遍历到的值。
    ○ 数字之前加上下划线“”

示例说明

我们编写如下脚本
在这里插入图片描述
线程组:设置默认
BeanShell 取样器1:编写如下代码

String s1 = "test1";
String s2 = "test2";
String s3 = "test3";
String s4 = "test4";
String s5 = "test5";
String s6 = "test6";
vars.put("val1",s1);
vars.put("val2",s2);
vars.put("val3",s3);
vars.put("val_4",s4);
vars.put("val_5",s5);
vars.put("val_6",s6);
log.info(s1);
log.info(s2);
log.info(s3);
log.info(s4);
log.info(s5);
log.info(s6);

BeanShell 取样器2:编写如下代码

log.info("New val:${newVal}");

forEach控制器参数如下:
● 输入变量前缀:val
● 输出变量名称:newVal

情况1:开始循环字段和结束循环字段都为空,不勾选数字之前加上下划线"_"

运行脚本,查看结果

2024-06-25 12:04:03,414 INFO o.a.j.e.StandardJMeterEngine: All thread groups have been started
2024-06-25 12:04:03,416 INFO o.a.j.u.BeanShellTestElement: test1
2024-06-25 12:04:03,416 INFO o.a.j.u.BeanShellTestElement: test2
2024-06-25 12:04:03,417 INFO o.a.j.u.BeanShellTestElement: test3
2024-06-25 12:04:03,419 INFO o.a.j.u.BeanShellTestElement: test4
2024-06-25 12:04:03,419 INFO o.a.j.u.BeanShellTestElement: test5
2024-06-25 12:04:03,420 INFO o.a.j.u.BeanShellTestElement: test6
2024-06-25 12:04:03,420 INFO o.a.j.u.BeanShellTestElement: New val:test1
2024-06-25 12:04:03,421 INFO o.a.j.u.BeanShellTestElement: New val:test2
2024-06-25 12:04:03,421 INFO o.a.j.u.BeanShellTestElement: New val:test3
2024-06-25 12:04:03,422 INFO o.a.j.t.JMeterThread: Thread is done: 线程组 1-1

情况2:开始循环字段和结束循环字段都为空,勾选数字之前加上下划线"_"

运行脚本,查看结果

2024-06-25 12:04:39,283 INFO o.a.j.t.JMeterThread: Thread started: 线程组 1-1
2024-06-25 12:04:39,283 INFO o.a.j.u.BeanShellTestElement: test1
2024-06-25 12:04:39,283 INFO o.a.j.u.BeanShellTestElement: test2
2024-06-25 12:04:39,283 INFO o.a.j.u.BeanShellTestElement: test3
2024-06-25 12:04:39,283 INFO o.a.j.u.BeanShellTestElement: test4
2024-06-25 12:04:39,283 INFO o.a.j.u.BeanShellTestElement: test5
2024-06-25 12:04:39,283 INFO o.a.j.u.BeanShellTestElement: test6
2024-06-25 12:04:39,283 INFO o.a.j.t.JMeterThread: Thread is done: 线程组 1-1

变量未进行识别

情况3:开始循环字段和结束循环字段分别为0和3,不勾选数字之前加上下划线"_"

运行脚本,查看结果

2024-06-25 12:05:48,968 INFO o.a.j.t.JMeterThread: Thread started: 线程组 1-1
2024-06-25 12:05:48,970 INFO o.a.j.u.BeanShellTestElement: test1
2024-06-25 12:05:48,974 INFO o.a.j.u.BeanShellTestElement: test2
2024-06-25 12:05:48,974 INFO o.a.j.u.BeanShellTestElement: test3
2024-06-25 12:05:48,975 INFO o.a.j.u.BeanShellTestElement: test4
2024-06-25 12:05:48,975 INFO o.a.j.u.BeanShellTestElement: test5
2024-06-25 12:05:48,975 INFO o.a.j.u.BeanShellTestElement: test6
2024-06-25 12:05:48,977 INFO o.a.j.u.BeanShellTestElement: New val:test1
2024-06-25 12:05:48,977 INFO o.a.j.u.BeanShellTestElement: New val:test2
2024-06-25 12:05:48,977 INFO o.a.j.u.BeanShellTestElement: New val:test3
2024-06-25 12:05:48,977 INFO o.a.j.t.JMeterThread: Thread is done: 线程组 1-1

情况4:开始循环字段和结束循环字段分别为3和6,勾选数字之前加上下划线"_"

运行脚本,查看结果

2024-06-25 12:06:25,076 INFO o.a.j.t.JMeterThread: Thread started: 线程组 1-1
2024-06-25 12:06:25,076 INFO o.a.j.u.BeanShellTestElement: test1
2024-06-25 12:06:25,076 INFO o.a.j.u.BeanShellTestElement: test2
2024-06-25 12:06:25,076 INFO o.a.j.u.BeanShellTestElement: test3
2024-06-25 12:06:25,076 INFO o.a.j.u.BeanShellTestElement: test4
2024-06-25 12:06:25,076 INFO o.a.j.u.BeanShellTestElement: test5
2024-06-25 12:06:25,076 INFO o.a.j.u.BeanShellTestElement: test6
2024-06-25 12:06:25,076 INFO o.a.j.u.BeanShellTestElement: New val:test4
2024-06-25 12:06:25,076 INFO o.a.j.u.BeanShellTestElement: New val:test5
2024-06-25 12:06:25,076 INFO o.a.j.u.BeanShellTestElement: New val:test6
2024-06-25 12:06:25,076 INFO o.a.j.t.JMeterThread: Thread is done: 线程组 1-1

注意事项

● 确保在ForEach控制器之前正确设置了变量提取器,并且已经成功提取到了期望的变量值。
● 如果你的变量命名不遵循一致的前缀规则,ForEach控制器可能无法正确识别并遍历它们。
● 考虑到性能,如果遍历的变量数量非常大,可能会对测试执行时间和资源消耗产生影响。
通过合理利用ForEach控制器,可以极大地增强JMeter测试脚本的灵活性和效率,特别是在处理动态数据和复杂场景时。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1860470.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

银幕光影交织,红酒香醇流淌,一场电影与红酒的绝美浪漫邂逅

在光影交错的世界里,红酒与电影总能在不经意间碰撞出浪漫的火花。当银幕上的角色轻启瓶盖,那迷人的酒香便如诗如画般弥漫开来,与影片的情节交织在一起,构成了一幅幅动人的画面。今天,就让我们一起走进这个充满酒香的银…

9.XSS之过滤

XSS之过滤 通过输入代码发现被过滤掉了 <script>";"666查看页面元素代码&#xff0c;被后台代码过滤了 尝试一下大小写混合使用&#xff0c;攻击代码如下&#xff1a; <sCRipT>alert(你打篮球像oldqu)</sCrIPt>如下图所示&#xff0c;大小写混…

1986-2017年 全国农村固定观察点数据

全国农村固定观察点调查体系是中国一个重要的农村社会经济调查项目&#xff0c;它通过长期跟踪调查固定不变的村庄和农户&#xff0c;收集连续性数据&#xff0c;以获取农村基层的动态信息。这些数据不仅全面反映了农户及其家庭成员在生产、消费、就业、生活等方面的情况&#…

05-java基础——循环习题

循环的选择&#xff1a;知道循环的次数或者知道循环的范围就使用for循环&#xff0c;其次再使用while循环 猜数字 程序自动生成一个1-100之间的随机数&#xff0c;在代码中使用键盘录入去猜出这个数字是多少&#xff1f; 要求&#xff1a;使用循环猜&#xff0c;一直猜中为止…

动态规划数字三角形模型——AcWing 1015. 摘花生

动态规划数字三角形模型 定义 动态规划数字三角形模型是在一个三角形的数阵中&#xff0c;通过一定规则找到从顶部到底部的最优路径或最优值。 运用情况 通常用于解决具有递推关系、需要在不同路径中做出选择以达到最优结果的问题。比如计算最短路径、最大和等 注意事项 …

OCR的有效数据增强

背景 我面临着需要尽可能准确识别手写金额的挑战。难点在于保持误判率低于0.01%。由于数据集中样本数量固定&#xff0c;因此数据增强是合乎逻辑的选择。快速搜索未发现针对光学字符识别&#xff08;OCR&#xff09;的现成方法。因此&#xff0c;我挽起袖子&#xff0c;亲自创建…

数据挖掘案例-商品零售购物篮分析

数据挖掘案例-商品零售购物篮分析 1. 背景与挖掘目标 现代商品种类繁多&#xff0c;顾客往往会由于需要购买的商品众多而变得疲于选择&#xff0c;且顾客并不会因为商品选择丰富而选择购买更多的商品。 例如&#xff0c;货架上有可口可乐和百事可乐&#xff0c;若顾客需要选…

「全新升级,性能更强大——ONLYOFFICE 桌面编辑器 8.1 深度评测」

文章目录 一、背景二、界面设计与用户体验三、主要新功能亮点3.1 高效协作处理3.2 共同编辑&#xff0c;毫无压力3.3 批注与提及3.4 追踪更改3.5 比较与合并3.6 管理版本历史 四、性能表现4.1 集成 AI 工具4.2 插件强化 五、用户反馈与使用案例 一、背景 Ascensio System SIA -…

服务器数据恢复—raid故障导致部分分区无法识别/不可用的数据恢复案例

服务器数据恢复环境&#xff1a; 一台某品牌DL380服务器中3块SAS硬盘组建了一组raid。 服务器故障&#xff1a; RAID中多块磁盘出现故障离线导致RAID瘫痪&#xff0c;其中一块硬盘状态指示灯显示红色。服务器上运行的数据库在D分区&#xff0c;备份文件存放在E分区。由于RAID瘫…

Git之checkout/reset --hard/clean -f区别(四十二)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

生命在于学习——Python人工智能原理(4.4)

三、Python的数据类型 3.2 Python的组合数据类型 特点&#xff1a;表示多个元素的组合&#xff0c;可以包含不同类型的元素&#xff0c;甚至是其他的组合数据类型。 在内存中通常需要额外的空间来存储元素间的关系。 组合数据类型能够将多个同类型或不同类型的数据组织起来&a…

Centos+Jenkins+Maven+Git 将生成的JAR部署到远程服务器上

1、登录 没有安装的参考下面的安装步骤先安装: Jenkins安装手册 输入账号、密码登录系统。 2、新建任务 2.1 创建页面 1,“输入一个任务名称”; 2,任务类型点击“构建一个maven项目”; 3,点击“确定”,此时,构建任务创建完成。 2.2 General 1、描述:输入要部署…

热电发电机越来越受到研发关注

热电发电机 (TEG) 利用热量&#xff08;或更准确地说&#xff0c;温差&#xff09;和众所周知的塞贝克效应来发电。它们的应用范围从收集可用热能&#xff0c;尤其是在工业和其他情况下“浪费”的热能&#xff0c;到在放射性同位素热发电机 (RTG) 中使用航天器的放射性电源作为…

day45--RocketMQ(三)

1. 高级功能 1.1 消息存储 分布式队列因为有高可靠性的要求&#xff0c;所以数据要进行持久化存储。 消息生成者发送消息MQ收到消息&#xff0c;将消息进行持久化&#xff0c;在存储中新增一条记录返回ACK给生产者MQ push 消息给对应的消费者&#xff0c;然后等待消费者返回A…

离镜头5cm也能拍清?Pura 70 超聚光微距如何做到“贴脸拍摄”?

虽然微距摄影在手机上已经算不得什么新鲜的功能&#xff0c;但要把微距摄影拍出高质量的效果&#xff0c;还是具有挑战性的。 众所周知&#xff0c;在微距摄影领域&#xff0c;镜头离被拍摄物品越近&#xff0c;照片的解析力和细节就越突出。但对于器件来讲&#xff0c;对焦距离…

年入百万不是梦?小米汽车员工晒收入,揭秘行业高薪背后的真相!

近日&#xff0c;社交媒体上出现了一位小米汽车员工的“凡尔赛”发言&#xff0c;其晒出的收入水平引发了网友们的热议。 这份令人艳羡的薪资条&#xff0c;也让“小米汽车待遇”迅速登上了热搜榜。究竟是什么样的魔力&#xff0c;让这家造车新势力能够开出如此优渥的条件&…

linux与windows环境下qt程序打包教程

一、演示环境 qt5.14.2 二、Linux 2.1 关联依赖文件 2.1.1 下载打包工具 在Windows环境下可以使用 Qt Creator自带的官方工具进行打包&#xff0c;而Linux环境下没有官方工具&#xff0c;需要借助第三方工具才能打包。如&#xff1a;linuxdeployqt、CQtDeployer、AppImage…

薄冰英语语法学习--名词1-不规则的

昨天学了&#xff0c;规则的&#xff0c;就是加es&#xff0c;或者变y为i加es&#xff0c;以及加s,还有变f和fe为v加es 今天学不规则。不规则就是完全没有规则&#xff0c;和s和es没有关系。就写死了告诉你&#xff0c;这个词的复数就是这样写。要硬背的。 首先来自古代英语的…

【数据结构与算法】最短路径,Floyd算法,Dijkstra算法 详解

Floyd算法 for (int k 0; k < n; k) {for (int i 0; i < n; i) {for (int j 0; j < n; j) {if (d[i][k] ! INF && d[k][j] ! INF) {d[i][j] min(d[i][j], d[i][k] d[k][j]);}}} }Dijkstra算法&#xff08;基于最小堆&#xff09; void dijkstra(int st…

篮球联盟管理系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;球员管理&#xff0c;用户管理&#xff0c;球队管理&#xff0c;论坛管理&#xff0c;篮球资讯管理&#xff0c;基础数据管理 前台账户功能包括&#xff1a;系统首页&#xff0…