Jmeter(十二) - 从入门到精通 - JMeter逻辑控制器 - 终篇(详解教程)

宏哥微信粉丝群:https://bbs.csdn.net/topics/618423372 有兴趣的可以扫码加入

1.简介

Jmeter官网对逻辑控制器的解释是:“Logic Controllers determine the order in which Samplers are processed.”。

意思是说,逻辑控制器可以控制采样器(samplers)的执行顺序。由此可知,控制器需要和采样器一起使用,否则控制器就没有什么意义了。放在控制器下面的所有的采样器都会当做一个整体,执行时也会一起被执行。

JMeter逻辑控制器可以对元件的执行逻辑进行控制,除仅一次控制器外,其他可以嵌套别的种类的逻辑控制器。

2.逻辑控制器分类

JMeter中的Logic Controller分为两类:
(1)控制测试计划执行过程中节点的逻辑执行顺序,如:Loop Controller、If Controller等;
(2)对测试计划中的脚本进行分组、方便JMeter统计执行结果以及进行脚本的运行时控制等,如:Throughput Controller、Transaction Controller。

3.预览逻辑控制器 

首先我们来看一下JMeter的逻辑控制器,路径:线程组(用户)->添加->逻辑控制器(Logic Controller);我们可以清楚地看到JMeter5中共有17个逻辑控制器,如下图所示:

如果上图您看得不是很清楚的话,宏哥总结了一个思维导图,关于JMeter5的逻辑控制器类型,如下图所示: 

 通过以上的了解,我们对逻辑控制器有了一个大致的了解和认识。下面宏哥就给小伙伴或则童鞋们分享讲解一些通常在工作中会用到的逻辑控制器。 

4.常用逻辑控制器详解

  这一小节,宏哥就由上而下地详细地讲解一下常用的逻辑控制器。

4.1Runtime Controller

运行控制器用来控制其子元件的执行时长。市场单位是秒。

 1、我们先来看看这个Runtime Controller长得是啥样子,路径:线程组 > 添加 > 逻辑控制器 > 运行控制器,如下图所示:

2、关键参数说明如下:

Name:名称,可以随意设置,甚至为空;

Comments:注释,可随意设置,可以为空;

Runtime:默认为1,去掉1则默认为0,此时不执行其节点下的元件。 与线程组中的调度器的持续时间 效果一致。不填 或 0,不会执行样例

4.1.1Runtime控制器控制其下取样器执行2s

1、创建测试计划,设置 Runtime 控制器的运行时间 为 2,线程组设置默认不变,如下图所示:

Runtime 控制器设置

线程组设置

2、配置好以后,运行JMeter,然后查看结果树,如下图所示:

4.1.2使用线程组中的调度器控制样例运行3s

1、创建测试计划,设置 Runtime 控制器的运行时间 为 2,线程组设置运行时间3,如下图所示:

线程组设置

Runtime 控制器设置

2、配置好以后,运行JMeter,然后查看结果树,如下图所示:

线程组设置3,Runtime控制器设置2,但是运行时间是2s。所以从上边的运行时间得出结论:如果线程组中设置了持续时间,Runtime 控制器也设置了 运行时间,那么会优先于线程组中的设置。

4.2Simple Controller

Simple Controller用来指定了一个执行单元,它不改变元件的执行顺序。在它下边还可以嵌套其他控制器。简单控制器可以编辑只有名称和注释。就像他的名字一样,简单,可以理解为一个文件夹,就是分组用的,没有其他特殊功能,但相比不添加简单控制器,区别在于简单控制器可以被模块控制器所引用。其作用就是分组,比如QQ好友列表,可分为家人、同学、等。一般是请求较多,需要分组时采用。

 1、我们先来看看这个Simple Controller长得是啥样子,路径:线程组 > 添加 > 逻辑控制器 > 简单控制器,如下图所示:

2、关键参数说明如下:

Name:名称,可以随意设置,甚至为空;

Comments:注释,可随意设置,可以为空。

4.2.1简单实例

1、创建测试计划,线程组设置循环10,如下图所示:

2、配置好以后,运行JMeter,然后查看结果树,如下图所示:

4.3Throughput Controller

用来控制其下元件的执行次数,并无控制吞吐量的功能,想要控制吞吐量可以使用Constant Throughput Timer,后边会讲解到。吞吐量控制器有两种模式:Total Executions:设置运行次数与Percent Executions:设置运行比例(1~100之间)。

1、我们先来看看这个Throughput Controller长得是啥样子,路径:线程组 > 添加 > 逻辑控制器 > 吞吐量控制器,如下图所示: 

2、关键参数说明如下:

Name:名称,可以随意设置,甚至为空;

Comments:注释,可随意设置,可以为空;

Total Executions:执行百分比(1-100);

percent Executions:执行数量;

Throughput:根据上边选择的方式填写,百分比为0~100;

Per User:线程数,当选Total Executions时,是线程数;当选percent Executions时,是线程数*循环次数。

4.3.1不勾选Per User

1、线程组中设置 线程数量 2,循环次数 10,吞吐量控制器 设置 Total Executions,吞吐量设置为 2,其下添加一个取样器,如下图所示:

2、配置好以后,运行JMeter,然后查看结果树(执行了2次),如下图所示:

3、现在将 吞吐量控制器 设置为百分比的控制方式,吞吐量设置为:50%,如下图所示:

4、配置好以后,点击“保存”运行JMeter,然后查看结果树(执行了10次,计算方式:10=吞吐量50% * 循环次数10 * 线程数 2),如下图所示:

4.3.2勾选Per User

1、线程组中设置 线程数量 2,循环次数 10,吞吐量控制器 设置 Total Executions,吞吐量设置为 2,其下添加一个取样器,勾选Per User,如下图所示:

线程组设置

吞吐量控制器

2、配置好以后,点击“保存”,运行JMeter,然后查看结果树(总共执行了4次,其中吞吐量设置为2,执行2次,线程设置为2,执行2次,总共4次),函数 __threadNum 只是简单地返回当前线程的编号,如下图所示:

3、现在将 吞吐量控制器 设置为百分比的控制方式,吞吐量设置为:50,如下图所示:

4、配置好以后,点击“保存”运行JMeter,然后查看结果树(执行了10次,计算方式:10=吞吐量50% * 循环次数10 * 线程数 2),如下图所示:

综上所述:

勾选Per User:

1.线程数*循环次数>=线程数*吞吐量时,Total Executions模式的执行次数=线程数*吞吐量。

2.线程数*循环次数<线程数*吞吐量时,Total Executions模式的执行次数=当线程数*循环次数。

不勾选Per User:

1.线程数*循环次数<=吞吐量时,Total Executions模式的执行次数=线程数*循环次数。

2.线程数*循环次数>吞吐量时,Total Executions模式的执行次数=吞吐量。

l Percent Executions:设置运行比例(1~100之间),单位为%

不管Per User是否勾选,按Percent Executions模式的执行次数都不受Per User影响,Percent Executions模式的执行次数=线程数*循环次数*吞吐量%。(循环次数=线程组循环次数*循环控制器循环次数)

l Per User:勾选该项的话则按虚拟用户数(线程数)来计算执行次数,不勾选则按所有虚拟用户数来计算执行次数

测试计划
序号线程数循环次数模式ThroughputPer User执行次数
1210Percent50Y10
2210Percent50N10
3210Total7Y14
4210Total7N7
522Total7Y4
622Total7N4

下面说明一下这6个场景:
(1)序号1和2场景,Per User 对总执行次数没有影响。
(2)序号3场景,Per User勾选,每个虚拟用户(线程)执行7次,共执行14次。
(3)序号4场景,Per User不勾选,则所有虚拟用户执行7次。
(4)序号5场景,Per User勾选,每个虚拟用户(线程)执行7次,共执行14次,由于Thread Group计划循环次数是4(2线程*2循环)次,所以最多只能执行4次。
(5)序号6场景,Per User不勾选,所有虚拟用户执行7次,由于Thread Group计划循环次数是4(2线程*2循环)次,所以最多只能执行4次。

4.4Module Controller

模块控制器可以快速的切换脚本,不用来回的新建,方便脚本调试。 

可以理解为引用、调用的意思,执行内容为Module To Run种所选的内容,引用范围为当前测试计划内的测试片段、逻辑控制器<模块控制器除外>
被引用的逻辑控制器、测试片段可以为禁用状态,被引用后仍然会被执行。
可以将模块控制器与包括控制器一起学习比较,模块控制器是从内部文件中引用,引用上相对比较灵活,可以只引用部分测试片段或模块内容,包括控制器是从外部文件引用,只能引用整个测试片段的内容。
注意:被应用的模块位置不可随意变更,变更后会执行时出现提示引用失败
找到目标元素:快速查找与跳转的作用,点击后会立即跳转到所选的逻辑控制器的内容详情

1、我们先来看看这个Module Controller长得是啥样子,路径:线程组 > 添加 > 逻辑控制器 >  模块控制器,如下图所示: 

2、关键参数说明如下:

Name:名称,可以随意设置,甚至为空;

Comments:注释,可随意设置,可以为空;

Forever:勾选上这一项表示一直循环下去。

4.4.1实例

1、创建测试计划,添加两个测试片段,并且在每个测试片段下添加一个取样器,然后,添加线程组,再添加模块控制器,最后添加查看结果树,如下图所示:

2、配置模块控制器,选择第一个测试片段,如下图所示:

3、配置好以后,点击“保存”运行JMeter,然后查看结果树(执行了第1个测试片段的取样器),如下图所示:

4、配置模块控制器,选择第二个测试片段,如下图所示: 

5、配置好以后,点击“保存”运行JMeter,然后查看结果树(执行了第2个测试片段的取样器),如下图所示:

4.5Switch Controller

Switch Controller:开关控制器,通过其下样例顺序数值或名称 控制执行某一个样例。

 1、我们先来看看这个if Controller长得是啥样子,路径:线程组 > 添加 > 逻辑控制器 > 如果 (if) 控制器,如下图所示:

2、关键参数说明如下:

Name:名称,可以随意设置,甚至为空;

Comments:注释,可随意设置,可以为空;

Switch Value:指定请求的索引或者名称,索引从0开始,如果没有赋值,或者索引超过请求个数的话就执行第0个请求。可以是数字,也可以是字符,为字符时匹配取样器名称,如果匹配不上就会默认并找取样器名称为default的取样器,如果没有则不运行。

4.5.1数值

数值:表示将执行其下第 数值+1个取样器,例如:填1,将执行第2个取样器;填0或者不填,将执行第1个取样器;数值超出其下取样器数目时,执行第1个取样器。

1、创建一个测试计划,设置线程组和Switch控制器,如下图所示:

线程组

Switch控制器

2、配置好以后,点击“保存”运行JMeter,然后查看结果树(执行了第3<数值+1>个取样器),如下图所示:

3、修改Switch控制器的数值为0或者不填,如下图所示:

4、配置好以后,点击“保存”运行JMeter,然后查看结果树(执行了第1<数值为0或者不填,执行第1个取样器>个取样器),如下图所示:

4.5.2字符

1、创建一个测试计划,设置线程组和Switch控制器(直接使用取样器名字),如下图所示:

线程组

Switch控制器

2、配置好以后,点击“保存”运行JMeter,然后查看结果树(执行了使用名字的取样器),如下图所示:

5.小结

好了,今天关于逻辑控制器的上篇就讲解到这里,这一篇主要介绍了 Runtime Controller 、 Simple Controller 、Throughput ControllerModule Controller 和  Switch Controller

  每天学习一点,今后必成大神-

往期推荐(由于跳转参数丢失了,所有建议选中要访问的右键,在新标签页中打开链接即可访问)或者微信搜索: 北京宏哥  公众号提前解锁更多干货。

Appium自动化系列,耗时80天打造的从搭建环境到实际应用精品教程测试

Python接口自动化测试教程,熬夜87天整理出这一份上万字的超全学习指南

Python+Selenium自动化系列,通宵700天从无到有搭建一个自动化测试框架

Java+Selenium自动化系列,仿照Python趁热打铁呕心沥血317天搭建价值好几K的自动化测试框架

Jmeter工具从基础->进阶->高级,费时2年多整理出这一份全网超详细的入门到精通教程

Fiddler工具从基础->进阶->高级,费时100多天吐血整理出这一份全网超详细的入门到精通教程

Pycharm工具基础使用教程

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

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

相关文章

vue-manage-system 版本更新,让开发更加简单

vue-manage-system 近期进行了一次版本升级&#xff0c;主要是支持了更多功能、升级依赖版本和优化样式&#xff0c;并且上线了官方文档网站&#xff0c;大部分功能都有文档或者使用示例&#xff0c;更加适合新手上手开发&#xff0c;只需要根据实际业务简单修改&#xff0c;就…

AMEYA360:MOS管失效的六大原因

功率器件在近几年的市场方面发展的非常火爆&#xff0c;尤其是 MOS 管&#xff0c;他主要应用在电源适配器&#xff0c;电池管理系统以及逆变器和电机控制系统中。 而随着计算器主板&#xff0c;AI 显卡&#xff0c;服务器等行业的爆发&#xff0c;低压功率 MOS 管将再次迎来爆…

查找算法之斐波那契查找

目录 前言一、查找算法预备知识二、斐波那契查找三、总结3.1 查找性能3.2 适用场景 前言 查找算法是一种用于在数据集合中查找特定元素的算法。在计算机科学中&#xff0c;查找算法通常被用于在数组、链表、树等数据结构中查找目标元素的位置或者判断目标元素是否存在。 查找算…

大珩PPT助手一键颜色设置

大珩PPT助手最新推出的一键设置文字颜色和背景色功能&#xff0c;为用户在创建演示文稿时带来了更便捷、高效的体验。这一功能使用户能够轻松调整演示文稿中文字的颜色和幻灯片的背景色&#xff0c;以满足不同场合和主题的需要。 以下是该功能的几个关键特点和优势&#xff1a…

sebaKMT赛巴测漏仪 听漏仪维修HL5000 HL7000

赛巴听漏仪&#xff0c;作为一款应用于供水系统漏损检测的专业设备&#xff0c;在业内有着很广泛的应用。然而&#xff0c;任何仪器在使用过程中都难免会遇到一些问题&#xff0c;赛巴听漏仪也不例外。针对这些问题&#xff0c;专业的维修服务显得尤为重要。 首先&#xff0c;赛…

微服架构基础设施环境平台搭建 -(六)Kubesphere 部署Redis服务 设置访问Redis密码

微服架构基础设施环境平台搭建 -&#xff08;六&#xff09;Kubesphere 部署Redis服务 & 设置访问Redis密码 微服架构基础设施环境平台搭建 系列文章 微服架构基础设施环境平台搭建 -&#xff08;一&#xff09;基础环境准备 微服架构基础设施环境平台搭建 -&#xff08;二…

FreeSWITCH sofia senddtmf

先看这段代码&#xff1a; 应用调用 senddtmf&#xff0c;这段代码会检查 dtmf-type 这个通道变量的值 如果为 DTMF_2833&#xff0c;那么调用核心的 queue_rfc2833 函数如果为 DTMF_INFO&#xff0c;如果为 w 或者 W 就延时相应的时间&#xff0c;或者是其它字符&#xff0c;…

程客有话说05 | 吕时有:在GIS行业深耕13年,做梦做出来了数学竞赛题,这是让我最开心的事

《程客有话说》是我们最新推出的一个访谈栏目&#xff0c;邀请了一些国内外有趣的程序员来分享他们的经验、观点与成长故事&#xff0c;我们尝试建立一个程序员交流与学习的平台&#xff0c;也欢迎大家推荐朋友或自己来参加我们的节目&#xff0c;一起加油。 本期我们邀请的程…

揭秘爬虫技术:助你打开网络数据的大门

在当今信息爆炸的时代&#xff0c;网络上蕴藏着各种宝贵的数据资源&#xff0c;而要想获取这些宝藏&#xff0c;爬虫技术无疑是最为有效的利器之一。今天我将向大家深入探讨爬虫技术的奥秘&#xff0c;并带领大家一起走进这个数据世界的大门。 文章目录 什么是爬虫技术&#xf…

轻松上手,无缝对接:详述如何接入企讯通空号检测接口API

企讯通空号检测接口API作为一款高效、精准的手机号码状态检测工具&#xff0c;能够帮助企业及开发者快速识别手机号码的有效性&#xff0c;优化通讯资源&#xff0c;提升营销效果。本篇文章将带领您一步步了解如何轻松、无缝地对接企讯通空号检测接口API&#xff0c;让您的业务…

用于自动化机器陀螺仪传感器:XV7081BB

介绍一款用于自动化机器的数字输出型陀螺仪传感器XV7081BB。这款新推出的陀螺仪XV7081BB到底有什么魅力呢?我们可以用常用款用于智能割草机的XV7011BB作对比:XV7081BB提供16位或24位分辨率的角速率输出速率范围为400s。而XV7011BB采用16位角速度输出&#xff0c;检测范围为100…

直线导轨有哪些润滑方式?

直线导轨在工业领域中是非常关键的存在&#xff0c;在日常使用中必须定期做好润滑功能&#xff0c;如果以无润滑状态使用&#xff0c;滚动系统就会更快地磨损&#xff0c;摩擦系数高&#xff0c;磨损就越严重&#xff0c;导轨和滑块因而寿命会缩短。那么&#xff0c;直线导轨有…

OpenHarmony实战开发-如何实现tabContent内容可以在tabBar上显示并且tabBar可以响应滑动事件的功能。

介绍 本示例实现了tabContent内容可以在tabBar上显示并且tabBar可以响应滑动事件的功能。 效果图预览 使用说明 1.点击播放按钮进行视频播放&#xff0c;按住进度条按钮和进度条下方区域可以拖动进度条&#xff0c;更改视频播放进度。 实现思路 原生的Tabs组件&#xff0c…

数据结构(学习笔记)王道

一、绪论 1.1 数据结构的基本概念 数据&#xff1a;是信息的载体&#xff0c;是描述客观事物属性的数、字符以及所有输入到计算机中并被计算机程序识别和处理的符号的集合。&#xff08;计算机程序加工的原料&#xff09;数据元素&#xff1a;数据的基本单位&#xff0c;由若干…

信阳市不动产登记业务技能大练兵竞赛活动方案

为做好第一届“信阳市不动产登记业务技能大练兵活动”相关工作&#xff0c;确保比赛公平、公正、公开&#xff0c;现将规则公布如下&#xff1a; 本次比赛设团体奖和个人奖&#xff0c;团体奖以“团体笔试总分现场知识竞答总分视答题分”之和确定分数高低及名次&#xff1b;个人…

同旺科技 USB TO SPI / I2C适配器读写24LC256--字节写

所需设备&#xff1a; 1、USB 转 SPI I2C 适配器&#xff1b;内附链接 2、24LC256芯片 适应于同旺科技 USB TO SPI / I2C适配器升级版、专业版&#xff1b; 00地址写入一个字节数据AA&#xff0c;并读回验证&#xff1b; 单字节写时序&#xff1a; 读字节时序&#xff1a; …

详解Mixtral-8x7B背后的MoE!

高端的模型往往只需最朴素的发布方式。 这个来自欧洲的大模型团队在12月8日以一条磁力链接的方式发布了Mixtral-8x7B,这是一种具有开放权重的**「高质量稀疏专家混合模型」**(SMoE)。 该模型在大多数基准测试中都优于Llama2-70B,相比之下推理速度快了6倍,同时在大多数标准基…

[Windows] Bypass分流抢票 v1.16.25 五一黄金周自动抢票软件(2024.02.08更新)

五一黄金周要来了&#xff0c;火车票难买到&#xff0c;即便官网候选订票也要看运气&#xff0c;推荐使用这个靠谱的自动抢票软件&#xff0c; 该工具是目前市面上最好用口碑最好的电脑抢票软件&#xff0c;从13年到现在&#xff0c;作者依旧在更新&#xff0c;可以自动识别123…

海外社媒营销:创新内容与互动形式,提升用户参与和品牌认知

在当今数字化时代&#xff0c;海外社交媒体已成为企业推广品牌、吸引用户关注和建立品牌认知的重要渠道之一。然而&#xff0c;随着竞争的加剧和用户对内容的日益苛刻要求&#xff0c;企业需要不断创新&#xff0c;提供独特而吸引人的内容形式&#xff0c;以吸引海外用户的关注…

Rust Tracing 入门

Tracing 是一个强大的工具&#xff0c;开发人员可以使用它来了解代码的行为、识别性能瓶颈和调试问题。 Rust 是一种以其性能和安全保证而闻名的语言&#xff0c;在它的世界中&#xff0c;跟踪在确保应用程序平稳高效运行方面发挥着至关重要的作用。 在本文中探讨Tracing 的概…