JMeter应用-循环控制器、计数器的配合使用

Jmeter脚本实现多站点自动创建
本文介绍使用Jmeter写脚本自动创建商户及多个站点的方法。重点是利用循环控制器快速创建名称不重复的站点。具体配置包括在线程组下添加用户变量设置循环次数、添加循环控制器、在其下添加计数器拼接站点名,最后添加HTTP请求并使用计数器变量。

使用场景:今天有了一个构造测试数据的需要,要用Jmeter来写一个脚本,自动创建一个商户,以及在商户下创建多个站点。
重点在与怎样快速创建多个站点,且各个站点名称类似于站点01、站点02,名称不能重复,以上可以用循环控制器来实现。

具体配置方法如下:

步骤一 线程组下添加一个用户变量,用于设置循环的次数

图中的number_station变量,值根据需要自己设定,用来代表创建的站点数量,即HTTP请求循环的次数
在这里插入图片描述
在这里插入图片描述

步骤二 添加循环控制器,设置循环次数,即HTTP请求要执行的次数

在这里插入图片描述
在这里插入图片描述

步骤三 循环控制器下添加计数器,计数器主要用户拼接站点的名字,即站点01中的01是用计数器来实现的

在这里插入图片描述
starting value:循环中的初始值
递增:每次增长的幅度
Maximum value:最大值
数字格式:如果没格式要求,就不用填写。00代表两位格式,即1会用01格式来使用
引用名称:该计数器值赋给一个变量,供下面的HTTP请求中调用

步骤四 循环控制器下,添加HTTP请求,并在请求的入参中,使用计数器中的变量

{“stationId”:null,“operatorId”:“001”,“stationName”:“站点${num_station}”}
在这里插入图片描述

<think>首先,用户的问题是:“我想在JMeter使用While循环控制器的方法 请问JMeter 如何配置和使用 While 循环控制器”。这是一个关于JMeter的While控制器的配置和使用方法的问题。 根据系统级指令: - 所有行内数学表达式必须使用$...$格式,但在这个问题中,可能没有数学表达式,所以不需要。 - 独立公式必须使用$$...$$格式,但这里可能没有公式。 - LaTeX语法正确:确保任何数学表达式正确。 - 使用中文回答。 - 生成相关问题:在回答结束后,生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识,例如:[^1] 用户可见层: - 回答结构清晰,帮助用户逐步解决问题。 - 保证回答真实可靠。 参考站内引用: - 引用[1]: 关于JMeter逻辑控制器之While控制器的背景、目的、介绍、示例等。 - 引用[2]: 关于Jmeter基础---while控制器举例说明,条件为False时跳出循环等。 这些引用是提供的,我需要自然地融入回答中,并在相关段落末尾添加引用标识。 我的回答结构: 1. **介绍While控制器**:简要解释什么是While控制器及其作用。 2. **配置步骤**:详细说明如何在JMeter中配置While控制器。 3. **使用示例**:提供一个简单的示例来演示如何使用。 4. **常见场景**:讨论While控制器的应用场景。 5. **注意事项**:提到一些使用时的注意事项。 6. **生成相关问题**:在最后,生成相关问题。 确保回答基于真实可靠的JMeter知识。While控制器在JMeter中用于基于条件重复执行子元素,直到条件为false。 关键点: - While控制器需要一个条件表达式。 - 条件可以是变量、属性或函数。 - 当条件为true时,循环执行;为false时,跳出循环。 参考引用: - 从引用[1]:背景、目的、介绍、示例。 - 从引用[2]:条件为False时跳出循环,条件为空时行为等。 自然地添加引用,例如: - 在解释条件行为时,添加[^1]或[^2]。 最终,生成相关问题。 回答用中文。</think>### JMeter 中 While 循环控制器的配置和使用方法 在 JMeter 中,While 控制器是一种逻辑控制器,用于基于指定条件重复执行其子元素(如 HTTP 请求或采样器)。当条件为真(true)时,循环会持续执行;当条件变为假(false)时,循环终止。这非常适用于需要动态控制循环次数的场景,例如轮询 API 响应或处理可变数据。下面我将逐步解释如何配置和使用 While 控制器,确保方法清晰、可靠(基于 JMeter 官方文档和最佳实践)。 #### 1. **While 控制器的基本概念** - **作用**:While 控制器允许您根据条件表达式(如变量或函数)重复执行子元素,直到条件为 false。这比固定次数的循环更灵活。 - **适用场景**:常用于轮询操作(例如,等待 API 响应成功)、处理动态列表(如从 CSV 读取数据直到结束),或模拟用户行为(如重试失败请求)[^1]。 - **关键点**:条件表达式可以是 JMeter 变量、属性、函数或布尔值。如果条件为空,JMeter 会默认使用最后一个子元素的执行结果作为条件(失败为 false,成功为 true)[^2]。 #### 2. **配置 While 控制器的步骤** 配置 While 控制器需要添加控制器并设置条件。以下是详细步骤(以 JMeter 5.4.1 版本为例): **步骤 1: 添加 While 控制器到测试计划** - 打开 JMeter- 右键点击您的测试计划或线程组 → 选择 “添加” → “逻辑控制器” → “While 控制器”。 - 在控制器面板中,您会看到一个 “Condition” 输入框,用于设置条件表达式。 **步骤 2: 设置条件表达式** - 在 “Condition” 输入框中,输入您的条件: - **条件类型**: - **变量或属性**:例如,`${myVar}`,其中 `myVar` 是一个 JMeter 变量。当变量值为 "true" 时循环继续;为 "false" 时停止。 - **函数**:例如,`${__jexl3(${response} != "success")}`,使用 JMeter 函数检查响应是否不等于 "success"。 - **空条件**:如果不填,JMeter 会基于最后一个子元素的执行结果自动判断(失败为 false,跳出循环)[^2]。 - **常见条件示例**: - 使用计数器变量:`${counter} < 5`,循环直到计数器达到 5。 - 检查响应:`${__jexl3("${response}" == "pending")}`,轮询直到响应不是 "pending"。 **步骤 3: 添加子元素到 While 控制器** - 右键点击 While 控制器 → 添加子元素,如 HTTP 请求、采样器或提取器。 - 确保子元素能动态更新条件变量。例如: - 添加一个 HTTP 请求来获取 API 响应。 - 使用正则表达式提取器或 JSON 提取器,从响应中提取变量(如 `response`),用于更新条件。 **步骤 4: 设置变量更新机制** - 在循环内部,添加一个 JSR223 后置处理器或 BeanShell 采样器来修改变量值。 - 例如,使用脚本递增计数器:在 JSR223 中写 `vars.put("counter", (vars.get("counter") as int) + 1)`。 - 如果条件依赖于外部数据(如 CSV 文件),添加 CSV 数据文件设置器来读取数据。 **步骤 5: 测试和调试** - 添加监听器(如查看结果树)来监控循环执行。 - 运行测试计划,检查日志确保循环在条件为 false 时正确终止。 #### 3. **使用示例:轮询 API 直到响应成功** 以下是一个简单示例,模拟轮询 API 直到响应状态为 "success"。假设您有一个 API 端点返回 JSON 响应 `{"status": "pending"}` 或 `{"status": "success"}`。 **配置步骤**: 1. **添加 While 控制器**: - 条件设置为:`${__jexl3("${apiStatus}" != "success")}`(使用函数表达式检查变量)。 2. **添加子元素**: - HTTP 请求:调用 API 端点。 - JSON 提取器:从响应中提取 `status` 到变量 `apiStatus`。 3. **添加初始化**: - 在 While 控制器前,添加一个 JSR223 采样器设置初始变量:`vars.put("apiStatus", "pending")`。 4. **添加超时保护**(可选): - 在 While 控制器内,添加计数器或定时器来防止无限循环(例如,最大重试次数为 10)。 **预期行为**:循环会重复执行 HTTP 请求,直到 `apiStatus` 变为 "success"。如果 API 响应失败,循环会继续;成功时跳出[^1]。 #### 4. **常见应用场景和注意事项** - **应用场景**: - **API 轮询**:等待异步任务完成(如订单处理)。 - **数据驱动测试**:从 CSV 文件读取行直到结束。 - **错误重试**:重试失败请求直到成功或达到最大次数。 - **注意事项**: - **避免无限循环**:始终设置超时机制(如计数器变量),否则测试可能卡死。 - **性能影响**:循环次数过多会拖慢测试,建议在负载测试中谨慎使用- **条件设置**:如果条件为 "LAST",While 控制器会基于前一个子元素的失败状态决定是否进入循环(例如,前一个失败则不执行)[^2]。 - **调试技巧**:使用 JMeter 日志(`jmeter.log`)或调试采样器来跟踪变量变化。 #### 5. **总结** While 控制器是 JMeter 中强大的逻辑工具,通过条件驱动循环,能处理动态测试需求。配置的关键是正确设置条件表达式和变量更新机制。如果您在实际测试中遇到问题,可以分享更多细节,我会进一步帮助优化。 ### 相关问题 1. 如何在 While 控制器中防止无限循环? 2. While 控制器和 ForEach 控制器有什么区别? 3. JMeter 中如何调试循环控制器的性能问题? 4. While 控制器在分布式测试中有什么限制?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值