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

news2024/7/4 4:20:24

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

“While控制器”是一种高级控制结构,它允许用户基于特定条件来循环执行其下的子采样器或控制器,直至该条件不再满足。本文旨在详细介绍While控制器的功能、配置方法、使用场景以及实践示例,帮助测试工程师高效利用这一强大功能进行复杂的测试设计。

While控制器简介

While控制器是JMeter中的一种循环控制机制,与传统的“循环控制器”不同,它不是基于固定的迭代次数来决定循环的终止,而是根据一个可自定义的布尔表达式来动态决定是否继续执行循环内的操作。这意味着只要设定的条件为真(true),控制器就会持续执行其子元素。

配置与使用

设置条件表达式

在While控制器的属性设置中,需要提供一个条件表达式,该表达式基于JMeter函数、变量或任何返回布尔值的逻辑语句。例如,“${myVar}” != “finished” 表示只要变量 myVar 的值不等于 “finished”,循环就会继续,但是仅仅这样编写到while控制器中的逻辑是不会被判断的,不管是不是正确的都是循环,需要套一层函数,比如:${__jexl3(“${myVar}” != “finished”)},才会被判断。

后置处理器与变量管理

为了控制循环条件,经常需要结合后置处理器来更新循环控制变量的值。例如,使用“正则表达式提取器”从响应中提取数据并存储到变量中,然后在While控制器的条件表达式中引用这个变量。

使用场景

动态循环控制

当需要根据服务器响应动态决定测试流程时,如等待某个异步任务完成或检查数据更新状态,While控制器尤为有用。

负载模拟

模拟持续请求直到达到特定状态或条件,例如,不断查询任务状态直到任务完成。

错误处理与重试机制

可以用来实现错误处理逻辑,如在网络不稳定时重试请求,直到成功或达到最大尝试次数。

实践示例

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

String s = "finished";
vars.put("val",s);
log.info(s);

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

log.info("test");

情况1:While控制器输入字符(如abc)、数字(如0、1)、汉字(如测试)

运行脚本,查看结果

2024-06-25 10:14:44,632 INFO o.a.j.t.JMeterThread: Thread started: 线程组 1-1
2024-06-25 10:14:44,634 INFO o.a.j.u.BeanShellTestElement: finished
2024-06-25 10:14:44,635 INFO o.a.j.u.BeanShellTestElement: test
……

结论:当输入字符是判定为true

情况2:While控制器输入Boolean类,如true时

运行脚本,查看结果

2024-06-25 10:14:44,632 INFO o.a.j.t.JMeterThread: Thread started: 线程组 1-1
2024-06-25 10:14:44,634 INFO o.a.j.u.BeanShellTestElement: finished
2024-06-25 10:14:44,635 INFO o.a.j.u.BeanShellTestElement: test
……

结论:当输入字符是判定为true

情况3:While控制器输入Boolean类,如false时

运行脚本,查看结果

2024-06-25 10:17:34,471 INFO o.a.j.t.JMeterThread: Thread started: 线程组 1-1
2024-06-25 10:17:34,472 INFO o.a.j.u.BeanShellTestElement: finished
2024-06-25 10:17:34,473 INFO o.a.j.t.JMeterThread: Thread is done: 线程组 1-1

结论:当输入字符是判定为false

情况4:While控制器输入表达式是,如样例中表达式为:${__jexl3(“${val}” != “finished”)}

运行脚本,查看结果

2024-06-25 10:34:55,567 INFO o.a.j.t.JMeterThread: Thread started: 线程组 1-1
2024-06-25 10:34:55,569 INFO o.a.j.u.BeanShellTestElement: finished
2024-06-25 10:34:55,569 INFO o.a.j.t.JMeterThread: Thread is done: 线程组 1-1

结论:当输入字符是判定为false

情况5:While控制器输入表达式是,如样例中表达式为:${__jexl3(“${val}” == “finished”)}

运行脚本,查看结果
2024-06-25 10:14:44,632 INFO o.a.j.t.JMeterThread: Thread started: 线程组 1-1
2024-06-25 10:14:44,634 INFO o.a.j.u.BeanShellTestElement: finished
2024-06-25 10:14:44,635 INFO o.a.j.u.BeanShellTestElement: test
……

结论:当输入字符是判定为true

注意事项

● 防止无限循环:务必确保条件表达式最终能够变为假,避免测试脚本陷入无限循环。
● 性能考量:频繁的循环检查可能对测试资源造成压力,合理设置循环条件和超时机制。
● 变量作用域:注意变量的作用域,确保While控制器能够访问到所需变量。

结论

While控制器为JMeter提供了强大的循环控制能力,使得测试脚本能够更加灵活地适应各种动态测试需求。通过合理设计条件表达式和管理相关变量,测试工程师可以创建出高度自适应和高效的测试计划。

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

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

相关文章

龙芯CPU架构上使用向日葵远程工具

原文链接:龙芯CPU架构上使用向日葵远程工具 Hello,大家好啊!今天给大家带来一篇在龙芯CPU上使用向日葵远程控制软件的文章。向日葵是一款强大的远程控制软件,能够帮助用户轻松地实现远程桌面访问和控制。本文将详细介绍如何在龙芯…

DevExpress WPF中文教程:Grid - 如何排序、分组、过滤数据(设计时)?

DevExpress WPF拥有120个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件…

【学习】科大睿智解读ITSS认证中咨询机构的作用

企业拥有ITSS认证这不仅将为企业开拓商机,提升竞争力,还能促使企业改进内部运维流程,提高服务质量,为客户提供更优质的IT运维支持。在ITSS认证中,咨询机构扮演着重要的角色,其主要作用包括以下几个方面&…

Apache APISIX遇到504超时的解决办法

说明: Apache APISIX版本:v3.9.0Apache APISIX Dashboard版本:v3.0.1 当使用Apache APISIX开源网关,通过接口上传或下载大文件等时,出现如下“504 Gateway Time-out”错误信息,它表示网关或代理服务器未能…

通达信擒牛亮剑出击抄底主升浪指标公式源码

通达信擒牛亮剑出击抄底主升浪指标公式源码&#xff1a; ABC1:(CLOSE-REF(CLOSE,1))/REF(CLOSE,1)*100; ABC2:IF(CLOSE>OPEN,CLOSE,OPEN); ABC3:IF(CLOSE>OPEN,OPEN,CLOSE); ABC4:LLV(ABC2,4); ABC5:HHV(ABC3,4); ABC6:ABC2>ABC4 AND ABC3<ABC4 AND ABC2>ABC5 …

emqx4.4.3关于如何取消匿名登录,添加认证用户这件事

emqx4.4.3如何取消匿名登录&#xff0c;添加认证用户 emqx版本&#xff1a;4.4.3 背景&#xff1a;使用docker搭建完emqx后&#xff0c;使用 MQTTX 连接总是超时&#xff1a; 检查Java项目 是否有接口&#xff1a;https://XXXX:80/mqtt/auth? 若有&#xff0c;则具体逻辑查询…

上海亚商投顾:沪指5连阴 工业母机概念逆势走强

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 三大指数今日继续调整&#xff0c;沪指午后一度跌近1%&#xff0c;随后探底回升跌幅收窄&#xff0c;创业板指…

多维度mysql性能优化手段实践

数据库优化维度有四个:硬件升级、系统配置、表结构设计、SQL语句及索引。 优化选择: 优化成本:硬件升级>系统配置>表结构设计>SQL语句及索引。 优化效果:硬件升级<系统配置<表结构设计<SQL语句及索引。 系统配置优化 保证从内存中读取数据 MySQL会在内…

鼠标与键盘交互设计

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在海龟绘图中&#xff0c;也支持与鼠标或键盘的交互操作。它提供了监听键盘按键事件、鼠标事件以及定时器等方法&#xff0c;下面分别进行介绍。 1键…

【python013】pyinstaller打包PDF提取脚本为exe工具

1.在日常工作和学习中&#xff0c;遇到类似问题处理场景&#xff0c;如pdf文件核心内容截取&#xff0c;这里将文件打包成exe可执行文件&#xff0c;实现功能简便使用。 2.欢迎点赞、关注、批评、指正&#xff0c;互三走起来&#xff0c;小手动起来&#xff01; 3.欢迎点赞、关…

视频文件太大怎么压缩?十大视频压缩软件可解决您的问题

您是否已经受够了无法上传视频文件&#xff0c;因为它们太大了&#xff1f;如果您正在积极寻找免费下载的视频压缩软件&#xff0c;下面概述了目前在线提供的 10 个功能更强大的软件。 我们建议您在决定下载之前先通读一下这个简短的介绍。我们不希望您随意点击一个选项&#…

STM32定时器篇——通用定时器的使用(定时中断,PWM输出)

一、通用定时器的类型以及应用功能&#xff1a; 通用定时器有&#xff1a;TIM2、TIM3、TIM4、TIM5&#xff0c;其总线挂载于APB1上&#xff0c;且有基本定时器的所有功能&#xff08;定时中断、主模式触发ADC&#xff09;&#xff0c;并额外具有内外时钟源选择&#xff0c;输入…

学习笔记——动态路由——RIP(Rip 基本配置)

五、Rip 基本配置 主类网络(有类&#xff0c;major-net)&#xff1a; 使用自然掩码的网段 例如&#xff1a; 12.1.1.0/24--->12.0.0.0 192.168.1.0/24--->192.168.1.0 172.16.1.0/24--->172.16.0.0 基本配置&#xff1a; 济南总局&#xff1a; IP:192.168.1.1 /…

如何提高pcdn技术的传输效率?

提高PCDN技术的传输效率是一个复杂且多层面的任务&#xff0c;涉及多个关键策略和方法的结合。以下是一些具体的建议和措施&#xff0c;有助于提升PCDN技术的传输效率&#xff1a; 一&#xff0e;优化缓存策略&#xff1a; 精准定位热点内容&#xff0c;优先将这部分内容缓存…

Python-批量日期数据格式化处理

背景 用于批量格式化数据&#xff0c;背景就是领导给我我一张下面这样的表格&#xff0c;其中启用日期是五花八门的格式&#xff0c;大概有几万行&#xff0c;需要把启用日期一列统一格式化为“YYYY-MM-DD”的格式&#xff0c;显然&#xff0c;针对这种格式不统一的数据&#…

GPT-4搞不定的图推理,港科大7B模型搞定

大模型执行图推理任务&#xff0c;我们是希望大模型仅仅给出结果&#xff0c;还是在给出准确答案的同时&#xff0c;输出详细的推理过程&#xff1f; 先来看GPT-4的表现&#xff1a; 给出了一个非常简短且错误的答案&#xff08;判断该图中没有环&#xff09;&#xff0c;这可…

【扩散模型(二)】IP-Adapter 从条件分支的视角,快速理解相关的可控生成研究

系列文章目录 【扩散模型&#xff08;一&#xff09;】中介绍了 Stable Diffusion 可以被理解为重建分支&#xff08;reconstruction branch&#xff09;和条件分支&#xff08;condition branch&#xff09;本文将从该视角快速理解 IP-Adapter 以及相关可控生成研究。 文章目…

linux下OpenSSL升级到1.1以上版本

要将CentOS 7上的OpenSSL升级到1.1以上版本&#xff0c;您需要遵循以下步骤。请注意&#xff0c;这些步骤可能需要一些系统管理经验&#xff0c;因为您将从源代码编译和安装OpenSSL。 1. 更新系统软件包 首先&#xff0c;确保您的系统软件包是最新的。使用以下命令更新所有软…

智慧校园-毕业管理系统总体概述

在当今教育信息化的浪潮中&#xff0c;智慧校园毕业管理系统脱颖而出&#xff0c;它作为一项综合性的数字平台&#xff0c;全面覆盖了从毕业资格审查到学位授予的每一个关键步骤&#xff0c;旨在通过智能化手段&#xff0c;为高校的毕业管理工作带来革命性的变革。毕业管理系统…

下一代广域网技术2:SRv6

2.SRv6 SR架构设计之初&#xff0c;就为SR数据平面设计了两种实现方式&#xff1a;一种是SR-MPLS&#xff0c;其重用了MPLS数据平面&#xff0c;可以在现有IP/MPLS网络上增量部署&#xff1b;另一种是SRv6&#xff0c;使用IPv6数据平面&#xff0c;基于IPv6路由扩展头进行扩展…