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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

浅谈红队攻防之道-DLL注入上线cs

等我熬过这一段狼狈,一个人尝尽孤独的滋味,我会笑着与这个世界和解 0x1 DLL注入概念 DLL注入(DLL Injection)是一种计算机编程技术,它可以强行使另一个进程加载一个动态链接库(DLL)以在其地址空间内运行指定代码。常见用途是改变原先程序的…

C++Primer Plus 第十四章代码重用:14.4.4 数组模板示例和非类型参数2

14.4.4 数组模板示例和非类型参数 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右…

SpringBoot整合Solr进行搜索(简单)

SpringBoot整合Solr进行搜索 创建SpringBoot项目pom中加入Solr依赖配置 Solr创建实体编写一个简单的ID查询打印结果 参考文章 创建SpringBoot项目 这里基于aliyun提供的快速构建一个项目。我们这主要是整合Solr。 pom中加入Solr依赖 maven下载地址 pom中加入以下内容&#x…

线程版服务器实现(pthread_server)

用到的所有方法所需要的参数可以在wrap.c文件中查询&#xff0c;wrap中找不到的直接通过man手册查询 1.首先介绍一下我自己写的包裹文件&#xff0c;里面有各种在可能要用到的方法 wrap.c: #include <stdlib.h> #include <stdio.h> #include <unistd.h> #…

软考《信息系统运行管理员》-1.4 常见的信息系统

1.4 常见的信息系统 常见的信息系统综述 财务系统 财务信息系统会计信息系统 办公自动化系统业务处理系统生产管理系统ERP系统客户关系管理系统人力资源系统 会计信息系统 主要任务是保证记账的正确性。 订单处理子系统库存子系统会计应收/应支系统总账子系统 财务信息系…

effective java (1)(考虑使用!)静态工厂方法代替构造方法

只是目前阶段 对本书第一章内容的浅显认知&#xff0c;说实话 这一章 我看了4遍左右&#xff0c;每一遍感觉都不一样 他的创建模式 有时候像设计模式&#xff0c;但作者已经在原文中描述&#xff0c;它并不等价于 设计模式 我们正常 创建一个年级类 是长这样的 我们不写成标准…

机械拆装-基于Unity-总体设计

前言 在工业设计和制造领域&#xff0c;零部件的拆装技术是一个重要的应用场景&#xff0c;比如我们在工程训练课程中经历的摩托车发动机拆装课程&#xff0c;是机械类学生的必修课程。虚拟拆装系统模拟和仿真了模型的拆装过程&#xff0c;虽然SolidWorks等机械设计软件能够解决…

Splashtop 的屏幕录制功能如何提高 IT 合规性

在当今的数字时代&#xff0c;随着远程办公的普及以及监管要求和网络安全威胁的加剧&#xff0c;IT 副总裁、首席信息官&#xff08;CIO&#xff09;等 IT 管理人员面临着一系列独特挑战。 各组织在远程支持运营中要全力维护合规性、提高安全性并坚持问责制&#xff0c;技术解…

瓦罗兰特新赛季更新资讯 瓦罗兰特新赛季免费加速器

瓦罗兰特新赛季来喽&#xff0c;这是一款由拳头开发的免费第一人称射击游戏&#xff0c;游戏凭借其独特的玩法和丰富的英雄选择吸引了大量玩家。 我们可以在游戏中选择自己喜欢的角色出场与敌人进行对战&#xff0c;而且每一个角色都有自己独特的道具以及技能&#xff0c;使用好…

实体零售连锁企业如何通过物流接口实现数智化转型升级?

在电子商务浪潮的持续冲击下&#xff0c;传统的实体零售行业面临着巨大的挑战。为了在线上线下融合的新零售时代保持竞争力&#xff0c;众多实体零售企业积极寻求数字化转型的突破。 某中国零售连锁百强企业近年来致力于打造自有品牌的线上销售体系&#xff0c;自2021年8月起接…

高效管理客户的秘诀:企业如何建立稳固的客户关系

如今的竞争&#xff0c;从商业模式、产品、服务到销售环节&#xff0c;竞争已经不再是单一层面的&#xff0c;而是全方位的&#xff0c;企业需要打造全价值链竞争优势。在这个过程中&#xff0c;客户管理的作用是无可替代的&#xff0c;成为企业成功的关键因素之一。如何高效地…

Excel表格转换Word文档的3个简单方法分享!

在日常办公中&#xff0c;我们经常需要将Excel表格中的数据转换为Word文档以便于编辑、排版或分享。然而&#xff0c;很多人可能并不清楚如何实现这一转换过程&#xff0c;或者只能采取复制粘贴的笨拙方式&#xff0c;导致格式错乱、效率低下。本文将详细介绍两种高效、便捷的E…

企业应该如果安全上网,软件防查盗版,企业防盗版

随着信息化的发展&#xff0c;企业日常办公越来越依赖互联网。终端以及普通PC终端在访问互联网过程中&#xff0c;会遇到各种各样不容忽视的风险&#xff0c;例如员工主动故意的数据泄漏&#xff0c;后台应用程序偷偷向外部发信息&#xff0c;木马间谍软件的外联&#xff0c;以…

精密机器中的交叉导轨负荷与容许负荷的差异!

交叉导轨的设计和制造过程中&#xff0c;负荷及容许负荷是至关重要的参数&#xff0c;只有准确计算出交叉导轨的载荷&#xff0c;才能保证交叉导轨的稳定性和使用寿命。 负荷和容许载荷是两个不同的参数&#xff0c;那这两者的有什么差异呢&#xff1f; 交叉导轨的负荷是指其承…

【Linux 命令行参数解析函数getopt()】原理及直白理解

最近写代码恰好碰见getopt()这个函数&#xff0c;去网上找了很久&#xff0c;说实话&#xff0c;其他人写的有点看不懂&#xff0c;所以将我认为可以便于理解的地方描述一下&#xff1a; int getopt(int argc, char * const argv[], const char *optstring);首先理解这个函数的…

军用光电耦合器产品的市场潜力与应用前景

光电耦合器作为现代军事技术中的关键组件&#xff0c;其在军用领域的市场空间和应用前景备受关注。本文将深入分析光电耦合器产品在军事领域中的市场潜力&#xff0c;探讨其技术特点、应用场景及未来发展趋势。 光电耦合器技术特点与工作原理 光电耦合器是一种能够将电信号与光…

HDC Cloud 2024 | CodeArts加速软件智能化开发,携手HarmonyOS重塑企业应用创新体验

2024年6月21~23日&#xff0c;华为开发者大会HDC 2024在东莞溪流背坡村隆重举行。期间华为云主办了以“CodeArts加速软件智能化开发&#xff0c;携手HarmonyOS重塑企业应用创新体验”为主题的分论坛。论坛汇聚了各行各业的专家学者、技术领袖和开发者&#xff0c;共同探讨Harmo…

解决Transformer根本缺陷,所有大模型都能获得巨大改进

即使最强大的 LLM 也难以通过 token 索引来关注句子等概念&#xff0c;现在有办法了。 最近两天&#xff0c;马斯克和 LeCun 的口水战妥妥成为大家的看点。这两位 AI 圈的名人你来我往&#xff0c;在推特&#xff08;现为 X&#xff09;上相互拆对方台。 LeCun 在宣传自家最新论…

VERYCLOUD睿鸿股份确认参展2024年ChinaJoy BTOB商务洽谈馆,期待与你相聚

作为在全球数字娱乐领域兼具知名度与影响力的年度盛会&#xff0c;2024年第二十一届ChinaJoy将于7月26日至7月29日在上海新国际博览中心盛大召开&#xff0c;本届展会主题为&#xff1a;初心“游”在&#xff0c;精彩无限&#xff01;&#xff08;Stay True, Game On.&#xff…

阿一网络安全培训中心专门为你准备了一份WScan使用教程

下载地址&#xff1a;https://github.com/chushuai/wscan/releases 版本的选择 Windows就选windows_amd64 Linux就选linux_amd64 mac就选darwin_amd64 下载好后&#xff0c;运行一次exe会生成一个config.yaml文件 把该文件中plugins下面的所有插件的enabled设置为True。&…