JMeter 的17种逻辑控制器,你用过哪个?

news2025/1/12 4:10:13

JMeter提供了17种逻辑控制器,它们各个功能都不尽相同,其作用域只对其子节点的sampler有效,作用是控制采样器的执行顺序。

控制测试计划执行过程中节点的逻辑执行顺序,如:Loop Controller、If Controller等;

对测试计划中的脚本进行分组、方便JMeter统计执行结果以及进行脚本的运行时控制等,如:Throughput Controller、Transaction Controller。

一、JMeter逻辑控制器——共17种

图片

图片

二、JMeter逻辑控制器介绍

01 如果(If)控制器

作用:根据给定表达式的值决定是否执行该节点下的子节点,默认使用javascript的语法进行判断(如下图红框内的文字)。

参数:Interpret Condition as Variable Expression?:选中这一项时表示:判断变量值是否等于字符串true(不区分大小写) Evaluate for all children:如果选中这一项,在每个子结点执行前都会计算表达式。

图片

Jmeter的If控制器支持__jexl3或者是groovy语言,在Jmeter的if控制器中填入表达式时,不能直接编写表达式语言,而是要借用Jmeter的函数生成器,生成指定语言的表达式。

示例一:

使用变量表达式的方式进行判断:

图片

示例二:

选中 Interpret Condition as Variable Expression?,使用变量的方式判断:

图片

图片

02 事务控制器(transaction controller)

作用:生成一个额外的采样器来测量其下测试元素的总体时间;值得注意的是,这个时间包含该控制器范围内的所有处理时间,而不仅仅是采样器的。

事务响应时间是我们衡量业务性能的主要指标,事务控制器可以把其节点下的取样器执行消耗时间累加在一起,便于我们统计。同时我们对每一个取样器的执行时间进行统计。

如果事务控制器下的取样器有多个,那么只有每一个取样器都运行成功了,整个事务控制器定义的事务才算成功,这是充分必要条件。

图片

03 循环控制器

作用:指定其子节点运行的次数,可以使用具体的数值,也可是设置为变量(截图描述更详细)。

如果在线程组中也设置了执行次数,那么循环控制器下的元件的执行次数是:

循环控制器下的元件的执行次数 = 线程组执行次数 * 循环控制器执行次数

图片

04 While控制器

作用:运行其子节点下的取样器/控制器,直到条件为“假”。

图片

05 ForEach 控制器(遍历循环控制器)

作用:ForEach 控制器一般和用户自定义变量一起使用,其在用户自定义变量中读取一系列相关的变量。该控制器下的取样器或控制器都会被执行一次或多次,每次读取不同的变量值。

输入变量前缀:在其中输入需要遍历的用户参数(User Parameter)

Start index for loop(exclusive):循环指数开始(唯一)→ 遍历查询的变量范围,开始的值(这里如果不填写,默认从1开始,如果没有1开始的变量,执行时会报错)

End index for loop(inclusive):循环指数结束(包含)→ 遍历查询的变量范围,结束的值

输出变量名称:将遍历查询到的符合条件的用户参数赋值给输入变量(Vname),然后就可以在控制器下的取样器使用,格式为${输出变量名}

Add“_”before number:输入变量名称中是否使用“”进行间隔

PS:这个控制器一般配合配置元件→正则表达式提取器来一起使用,可对页面上的某些元素进行重复处理。

图片

06 Include控制器

作用:用于引用外部的Jmx文件;从而控制多个测试计划组合。

图片

07 Runtime控制器

作用:用于控制该控制器下的取样器/控制器的运行时间。

图片

08 临界部分控制器

作用:

(1)确保它的子元素(取样器/控制器等)在执行控制器的子程序之前,只执行一个线程作为指定的锁。

(2)确保其子节点下的取样器或控制器将被执行(只有一个线程作为一个锁)。

图片

09 交替控制器

使用方法:假使该控制器下有2个取样器A和B,交替执行A和B2个请求,即每次传递一个子请求到这个测试,按子元件的排列顺序。

图片

10 仅一次控制器

作用:在测试计划执行期间,该控制器下的子结点对每个线程只执行一次,登录场景经常会使用到这个控制器。

注意:将Once Only Controller作为Loop Controller的子节点,Once Only Controller在每次循环的第一次迭代时均会被执行。

图片

11 录制控制器

作用:类似代理服务器的作用,在测试执行期间记录测试样本

图片

12 简单控制器

简单控制器是最基本的控制器,对jmeter测试运行没有任何影响,可用来命名某些操作。

这是Jmeter里最简单的一个控制器,它可以让我们组织归整我们的采样器和其它逻辑控制器(即:分组功能),提供一个块的结构和控制,不具有任何的逻辑控制和运行时的功能。

图片

13 随机控制器

作用:类似交替控制器,但该控制器随机选取某一个取样器请求并执行。

图片

14 随机顺序控制器

作用:随机执行其下的所有子结点,与Random Controller不同的是,这个控制器会先将需要随机的内容均执行一遍,但次序不定。

图片

15 吞吐量控制器

作用:控制其下的子节点的执行次数与负载比例分配,别被名字迷惑了,跟吞吐量没任何关系。jmeter自带的翻译这里是错误的,因为它并不能控制吞吐量(吞吐量的概念请访问百度);其实质作用是允许用户控制执行的频率;也有两种方式:百分比执行和总执行。

总执行(Total Executions):使控制器停止执行一定数量的测试计划。

百分比执行(Percent Executions):使控制器按一定比例执行迭代的测试计划。

流量(Throughput):对应上面的执行数量或者比例。

每个用户(Per User):每个用户。

如果勾选此项,将导致控制器计算是否应该执行在每个用户(每个线程)的基础上;如果不加以控制,那么将计算全球所有用户。

图片

16 转换控制器(Switch Controller)

作用:Switch控制器通过给该控制器中的Value赋值,来指定运行哪个采样器。有两种赋值方式:

第一种是数值,Switch控制器下的子节点从0开始计数,通过指定子节点所在的数值来确定执行哪个元素。

第二种是直接指定子元素的名称,比如采样器的Name来进行匹配。当指定的名称不存在时,不执行任何元素。

当Value为空时,默认执行第1个子节点元素。

图片

17 模块控制器(Module Controller)

作用:测试控制器子节点下的某一个模块,而不是整个测试计划。

模块控制器,用于跳转到选定的控制器位置并执行对应的控制器

应用场景:业务逻辑的跳转

配制说明

Module to Run: 选择需要跳转到的目标控制器

图片


资源分享

下方这份完整的软件测试视频学习教程已经上传CSDN官方认证的二维码,朋友们如果需要可以自行免费领取 【保证100%免费】

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

2022世界物联网博览会|中国电信5G+AIoT创新科技齐上阵,亮点纷呈看不够

2022年无锡世界物联网博览会 正式拉开序幕 本次中国电信展台 以“智联万物 点亮未来”为主题 于无锡太湖国际博览中心B1-01展台 万里鹏翼,振翅而飞 为数智未来插上硬核翅膀! 本次展会中国电信展台围绕“云改数转”、“网信安全”、“红色通信”、“…

SpringBoot+Vue实现前后端分离的校园外卖配送系统

文末获取源码 开发语言:Java 使用框架:spring boot 前端技术:JavaScript、Vue.js 、css3 开发工具:IDEA/MyEclipse/Eclipse、Visual Studio Code 数据库:MySQL 5.7/8.0 数据库管理工具:phpstudy/Navicat JD…

networkx学习(一) 图论

1.创建一个简单网络(图) # 导入库 import networkx as nx import matplotlib.pyplot as plt# 创建一个空图 G nx.Graph() # 向该图中添加节点和连边 G.add_nodes_from([1,2,3,4]) G.add_edges_from([(1,2),(1,3),(2,3),(2,4)])# 可视化图 nx.draw(G, n…

《Linux运维实战:MongoDB数据库逻辑备份恢复(方案四)》

一、备份与恢复方案 Percona Server for MongoDB Percona Server for MongoDB是一个免费的、增强的、完全兼容的、源代码可用的、带有企业级功能的MongoDB Community Edition的替代品。它不需要对MongoDB应用程序或代码进行更改。 参考官方:Percona Backup for Mon…

【漏洞复现】Docker runC 容器逃逸漏洞(CVE-2019-5736)

文章目录声明一、漏洞描述二、漏洞原理三、漏洞分析四、POC分析五、利用方式六、影响版本七、环境搭建八、漏洞复现九、修复建议声明 本篇文章仅用于技术研究和漏洞复现,切勿将文中涉及攻击手法用于非授权下渗透攻击行为,操作有风险,出现任何…

初识mysql

文章目录为什么要学习数据库什么是数据库数据库的分类MySQL简介连接数据库为什么要学习数据库 ①岗位需求 ②现在的世界,大数据时代,得数据者得天下 ③被迫需求:存数据 ④数据库是所有软件体系中最核心的存在 什么是数据库 数据库&…

java设计模式(2):UML图

统一建模语言(Unified Modeling Language,UML)是用来设计软件的可视化建模语言。它的特点是简单、统一、图形化、能表达软件设计中的动态与静态信息。 UML 从目标系统的不同角度出发,定义了用例图、类图、对象图、状态图、活动图…

kerberos环境下Flink on Yarn集群部署 基于flink1.15.3 hadoop 3.0CDH6.3.2

1.1 概要介绍 Flink on Yarn的HA高可用模式,首先依赖于Yarn自身的高可用机制(ResourceManager高可用),并通过Yarn对JobManager进行管理,当JobManager失效时,Yarn将重新启动JobManager。其次Flink Job在恢复…

微服务框架 SpringCloud微服务架构 29 ES 集群 29.2 搭建集群

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 SpringCloud微服务架构 文章目录微服务框架SpringCloud微服务架构29 ES 集群29.2 搭建集群29.2.1 搭建ES 集群29 ES 集群 29.2 搭建集群 2…

kubernets 实践

文章目录kubernets 部署v1.25.5flink on k8sflink version 1.14.6kubernets 部署 v1.25.5 这里我选择的是kubeadm方式部署 虚拟机数量:4 centos发行版本:CentOS Linux release 7.9.2009 (Core) 内核版本:Linux hadoop101 5.4.225-1.el7.el…

简单又好用的5款小工具软件

人类与99%的动物之间最大差别在于是否会运用工具,借助好的工具,能提升几倍的工作效率。 1.软件卸载删除——UninstallTools UninstallTool 是一个小巧、安全、快速、强大的软件卸载删除工具,它支持在使用软件本身的卸载程序卸载完毕后&…

CMake中set_target_properties/get_target_property的使用

CMake中的set_target_properties命令用于为targets设置属性(targets can have properties that affect how they are built),其格式如下: set_target_properties(target1 target2 ...PROPERTIES prop1 value1prop2 value2 ...) 该命令的语法是列出要更改…

浅析安科瑞无线测温装置在香港科技大学配电系统中的设计应用

摘要: 随着变电站自动化技术的推广和应用,无人值班的变电站越来越多,变电站的高压开关柜采用全密封结构,在长期运行过程中,开关的触点和母线连接等部位因老化或接触电阻过大而发热,由于这些发热部位的温度…

四种基于MQ的分布式事务解决方案

在微服务的时代,分布式事务是绕不开的话题,尽管在大多数场景下,我们并不需要使用分布式事务,但是 不需要使用 不代表 可以不会使用,万一哪天真需要用到了呢?分布式事务是一个比较大的话题,今天我…

1426827-79-3,endo-BCN-NHS ester,endo-BCN-NHS 活性酯

endo-BCN-NHS ester试剂反应原理: BCN基团与叠氮化物标记的生物分子反应,NHS酯可用于标记蛋白质的伯胺(-NH2)、胺修饰的寡核苷酸和其他含胺分子,西安凯新生物科技有限公司下面为大家整理分享。​endo-BCN-NHS ester物理…

Python学习基础笔记三十二——正则表达式

官方定义:正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特殊字符、及这些特定字符的组合,组成一个“规则字符串”,这个规则字符串用来表达对字符串的一种过滤逻辑。 1、在Linux运维中,vi、grep、awk…

fiddler使用的作用与常见应用场景

Fiddler工具的工作原理 1.本地应用与服务器之间所有的Request 和Response都将经过Fiddler,由Fiddler进行转发,此时Fiddler以代理服务器的方式存在。 2.由于所有的网络数据都会经过Fiddler,因此Fiddler能够截获这些数据,实现网络…

美团四面 Java 岗,终获 offer,我是这么回答面试官的

前言 经历了 10 月的疫情挣扎与 11 月失业的煎熬,终于来到了春末的 12 月,内心的压力也稍稍的松懈了一些,终于可以放心找个工作了,可是随着的等待面试的机会的越来越少,这份焦虑反而越来越大,也偶尔会想&a…

稳定性建设之JavaScript代码不能被阻断

稳定性建设之JavaScript代码不能被阻断 背景 js代码可能会因为某些原因,导致出错,进而整个后续代码有可能都被阻断。直接影响线上的稳定性 最常见的js被阻断的情况 console.log(111) // 预期 a {} // 结果 a undefined a.a 1 console.log(222) // …

Pycharm的简单介绍以及api的使用

一、什么是Pycharm? Pycharm是一种python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、脚本控制。此外,该IDE提供了一些高级功…