全面jmeter逻辑控制器案例详解
逻辑控制器作用:
(1)控制测试计划或者线程组中节点的逻辑执行顺序。
(2)对测试计划或者线程组中的脚本进行分组、方便jmeter统计执行结果以及脚本运行时的控制等。jmeter中逻辑控制器(Logic Controllers)的作用域只对其子节点的sampler有效,作用是控制采样器的执行顺序。
一、简单控制器(Simple Controller)
简单控制器,顾名思义就是功能比较简单,可以理解为一个文件夹,或起到分组作用。在脚本众多的时候,可以定义多个简单控制,分别存放不同的脚本请求。

二、循环控制器(Loop Controller)
作用:指定其子节点运行的次数,可以使用具体的数值,也可以使用变量。
1、Forever选项:勾选上这一项表示一直循环下去
2、如果同时设置了线程组的循环次数和循环控制器的循环次数,那循环控制器的子节点运行的次数为两个数值相乘的结果。


线程组并发数设置2,循环次数2次,循环控制器设置循环3次,则一共执行2×2×3=12次;

三、仅一次控制器:
仅一次控制器,在循环执行中对该控制器下的请求进行执行一次,然后在接下来的循环执行中将会跳过该控制器下的所有请求。
在进行登录的测试中,可以考虑将登录请求放在仅一次控制中,这样登录请求只执行一次。在并发查询时,可能会使用到仅一次控制器,在并发查询时,我们只需要登录请求执行一次即可。Jmeter中的仅一次控制器相当于loadrunner中的init的初始化action。
线程数设置循环3次

楼清接口不在控制器内,会执行3次,而灰浆接口执行1次;

四、随机控制器
线程组循环设置1时,每运行一次会随机地运行1个sampler

线程组循环设置2时,每运行一次会随机地运行2个sampler

五、随机顺序控制器
随机顺序控制器下的sampler添加3个
随机顺序控制器执行一次,会随机打乱执行它下面的所有的sampler一次

线程组循环设置1时,每运行1次会运行3个sampler,顺序打乱随机

线程组循环设置2时,每运行1次会运行3个sampler,循环2次,共计6个sampler,顺序打乱随机

六、交替控制器
循环控制器(设置循环7次)——交替控制器,下面添加3个sampler
循环时顺序迭代交替控制器下的sampler

线程组1循环设置1次,循环控制器设置7次,顺序循环7次sampler 1231231

七、Runtime控制器
Runtime(seconds):设置为N,则其下所有节点的运行时间为N秒。其下所有节点,跑完一轮,耗费时间小于N秒,此时,再从头执行一边,直到执行时间等于N,跳出控制器。


八、如果(If)控制器
if控制器条件满足,执行控制器下的Sampler;不满足、不填写条件,则不执行;
1.Interpret Condition as Variable Expression?:这个选项勾选了之后,条件中,如果写“${a}" == "${b}”(及时变量a和变量b的值相等,也不会执行)。这个地方,就必须要填写一个返回True的表达式,比如${JMeterThread.last_sample_ok},这样的表达式。
2.Evaluate for all children:假如这个控制器下面,有3个HTTP请求。如果需要在执行每个HTTP请求前,进行判断是否满足控制器中的条件,则需要勾选该复选框。
debug Sampler 响应数据 JMeterThread.last_sample_ok=true
条件设置为${JMeterThread.last_sample_ok},这是判断boolean类型,true执行,false不执行。


条件设置为"${JMeterThread.last_sample_ok}"=="AAA",成立执行,不成立不执行


九、While控制器
执行该控制器下所有节点,直到它的条件被判断为false,才会跳出控制器,执行后续sampler;

1、哪些条件会导致While Controller控制器跳出循环退出?
成功的sampler在前面 失败的sampler在后面 执行到fail会跳出循环
条件中的方法或者变量为false Condition ${BooleanValue}
条件不满足了 Condition "${BooleanValue}"=="AAA"
这个控制器下的sampler执行结果失败
2、哪些条件会导致While Controller控制器下sampler一直循环执行?
Condition什么都不写(会一直循环执行 知道执行到有fail跳出循环)
失败的sampler在前面 成功的sampler在后面 这种情况会一直执行死循环
Condition写LAST(会一直循环执行 知道执行到有fail跳出循环)Condition LAST

十、While控制器
Switch Value可以填什么?
1.什么都不填写:此时,执行第一个节点

2.填写数字:填写N,则会执行这个控制器下面的第N+1个Sampler

3.填写字符:会进行sampler名称字符串全匹配 填写 sampler名称全匹配

十一、遍历循环控制器-ForEach 控制器
作用:ForEach控制器一般和用户自定义变量一起使用,其在用户自定义变量中读取一系列相关的变量。该控制器下的采样器或控制器都会被执行一次或多次,每次读取不同的变量值(多个变量执行多次)
示例:1、创建不同权限的用户,账号用随机变量创建,类型0和1用自定义变量
输入变量前缀:在其中输入需要遍历的用户参数(User Parameter)
Start index for loop(exclusive):循环指数开始(唯一)→ 遍历查询的变量范围,开始的值(这里如果不填写,默认从1开始,如果没有1开始的变量,执行时会报错)
End index for loop(inclusive):循环指数结束(包含)→ 遍历查询的变量范围,结束的值
输出变量名称:将遍历查询到的符合条件的用户参数赋值给输入变量(Vname),然后就可以在控制器下的取样器使用,格式为${输出变量名}
Add”_”before number:输入变量名称中是否使用“_”进行间隔
PS:这个控制器一般配合配置元件→ 正则表达式提取器来一起使用,可对页面上的某些元素进行重复处理。



十二、事务控制器
作用:事务控制器会生产一个额外的采样器,用来统计该控制器子结点的所有时间。
应用场景: 完成一个完整的页面请求或一组请求或一组测试场景(多线程时是顺序执行的)

参数:
Generate parent sample:勾选后,所有的结果将在父结点中展示(选中这个参数结果展示如下图红框,否则显示为下图蓝框)
Include duration of timer and pre-post processors in generated sample:选中这一项会统计定时器(timer)的时间,否则只统计采样器(sample)的时间
1、事务下有多个取样器,其中一个取样器请求失败,这个事务就失败了


十三、 吞吐量控制器
1、介绍
吞吐量控制器(Throughput Controller)用来控制其下元件的执行次数,并无控制吞吐量的功能。
作用:控制其下的子节点的执行次数与负载比例分配;
吞吐量控制器字段介绍:
Total Executions:执行数量
percent Executions:执行百分比(1-100)
Per User:线程数,当选Total Executions时,是线程数;当选percent Executions时,是线程数*循环次数
2、添加吞吐量控制器(线程组-逻辑控制器-吞吐量控制器)

3、场景实战
场景一:选Total Executions,设置吞吐量数量
线程组-线程数4,循环次数2;灰浆吞吐量控制器设置-选Total Executions,吞吐量5;楼清吞吐量控制器设置-选Total Executions,吞吐量9
分析:整个线程组会执行4×2=8个,灰浆执行5个,楼清设置9是超过最大值8,所以会执行最大值8;



查看结果,灰浆5个,楼清8个

场景二:选percent Executions,设置比例
线程组-线程数5,循环次数2;灰浆吞吐量控制器设置-选percent Executions,吞吐量30;楼清吞吐量控制器设置-选percent Executions,吞吐量70
分析:总线程组会执行5×2=10个,灰浆占比30%,执行3个;楼清占比70%,执行7个



查看结果:灰浆执行3个,楼清执行7个

场景三:选Total Executions,吞吐量不填,勾选Per User,执行数=线程数
1、线程组-线程数5,循环次数2;灰浆吞吐量控制器设置-选percent Executions,吞吐量30;楼清吞吐量控制器设置-选Total Executions,吞吐量不填,勾选Per User
分析:则灰浆执行3个,楼清执行线程数5个


场景四:选percent Executions,吞吐量不填,勾选Per User,执行数=线程数 *循环次数
线程组-线程数5,循环次数2;灰浆吞吐量控制器设置-选percent Executions,吞吐量30;楼清吞吐量控制器设置-选percent Executions,吞吐量不填,勾选Per User
分析:则灰浆执行3个,楼清执行线程数10个


全面jmeter逻辑控制器案例详解的更多相关文章
- Jmeter常用功能详解
嘻嘻,忙碌的一周,马上就到周四了~明天就是周五了,可以去嗨了! 这几天正式成立了一个微信订阅号,旨在免费帮助需要入门软件测试的小白! 各位走过路过的亲,欢迎订阅哦:扫描二维码即可订阅
- jmeter 基础功能详解
jmeter 基础功能详解 thread group:包含一组线程,每个线程独立地执行测试计划. sampler:采样器,有多种不同的sample实现,用来发起各种请求,如http请求,jdbc请求, ...
- spring的IOC,DI及案例详解
一:spring的基本特征 Spring是一个非常活跃的开源框架:它是一个基于Core来架构多层JavaEE系统的框架,它的主要目的是简化企业开发.Spring以一种非侵入式的方式来管理你的代码,Sp ...
- 深入浅出 spring-data-elasticsearch - 基本案例详解(三
『 风云说:能分享自己职位的知识的领导是个好领导. 』运行环境:JDK 7 或 8,Maven 3.0+技术栈:SpringBoot 1.5+, Spring Data Elasticsearch ...
- Jmeter 测试计划元素详解
Jmeter 测试计划元素详解 by:授客 QQ:1033553122 由于篇幅问题,采用链接分享的形式,烦请复制以下网址,黏贴到浏览器中打开,下载 http://pan.baidu.com/s/1n ...
- 用一个开发案例详解Oracle临时表
用一个开发案例详解Oracle临时表 2016-11-14 bisal ITPUB  一.开发需求 最近有一个开发需求,大致需要先使用主表,或主表和几张子表关联查询出ID(主键)及一些主表字段 ...
- jmeter --响应断言详解
jmeter --响应断言详解 响应断言 :对服务器的响应进行断言校验 (1)应用范围: main sample and sub sample, main sample only , sub-samp ...
- http500:服务器内部错误案例详解(服务器代码语法错误或者逻辑错误)
http500:服务器内部错误案例详解(服务器代码语法错误或者逻辑错误) 一.总结 服务器内部错误可能是服务器中代码运行的时候的语法错误或者逻辑错误 二.http500:服务器内部错误案例详解 只是一 ...
- spss进行判别分析步骤_spss判别分析结果解释_spss判别分析案例详解
spss进行判别分析步骤_spss判别分析结果解释_spss判别分析案例详解 1.Discriminant Analysis判别分析主对话框 如图 1-1 所示 图 1-1 Discriminant ...
- str_replace函数的使用规则和案例详解
str_replace函数的使用规则和案例详解 str_replace函数的简单调用: <?php $str = '苹果很好吃.'; //请将变量$str中的苹果替换成香蕉 $strg = st ...
随机推荐
- 定时调度插件------FluentScheduler
定时调度插件------FluentScheduler 源码地址 官网文档地址 使用说明 dll引用 文章使用的版本为5.5.1版本 使用GuGet搜索FluentScheduler即可找到 如果框架 ...
- 吾剑未尝不利,国内Azure平替,科大讯飞人工智能免费AI语音合成(TTS)服务Python3.10接入
微软Azure平台的语音合成(TTS)技术确实神乎其技,这一点在之前的一篇:含辞未吐,声若幽兰,史上最强免费人工智能AI语音合成TTS服务微软Azure(Python3.10接入),已经做过详细介绍, ...
- Django框架之drf:8、断点调试,权限、认证、频率组件源码分析,基于APIView编写分页,异常处理
Django框架之drf 一.断点调式使用 指,在我们编写代码的时候,程序运行出现报错是无可避免的,当程序 出现报错时,我们需要找到出现报错的代码进行修改,如果时简短的代码很容易就可以找到报错位置 ...
- mysql19-锁
1.什么是锁 锁是计算机协调多个进程或线程并发访问某一资源的机制.在数据库中,除传统的计算资源(如CPU.RAM.I/O等)的争用以外,数据也是一种供许多用户共享的资源.如何保证数据并发访问的一致性. ...
- 不像JVM的JVM
1.面向对象 面向对象的思想:将功能封装到对象中,通过对象去实现 面向对象的目的:将复杂的事情简单化,将以前过程中的执行者变成了指挥者且符合现在人们的思考习惯 面向对象的三大特征: 封装:将对象的实现 ...
- Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation
1.出现问题 查询数据时报如题错误 2.解决方案 建表时需指定字符集,例如: -- ---------------------------- -- Table structure for testTa ...
- 【CodeSmith】The System.Data.SQLite library is not installed on this computer,不能使用SQLite解决办法
1.出现问题原因 1)System.Data.SQLite 尚未安装在您的计算机上 2)System.Data.SQLite 尚未正确配置 2.下载并安装System.Data.Sqlite [注意] ...
- 网页怎样引入本地硬盘上的JS文档
网页通过<script>标记可以引入在线的js文档,只有把网页保存在本地硬盘才能使用相对路径引入本地js文档,普通浏览器难以实现在线页面上引入本地js文档.怎么解决这个问题呢? 首先准备好 ...
- 题解 [SCOI2005]王室联邦
之前树分块也只是听说,今天亲手学了一下(?)( 首先你会发现这个 \(B\) 和 \(3B\) 的约束就很迷(我也不知道为什么搞这种奇怪的约束(悲)),学了才知道... 所以这题的分块方法好像叫&qu ...
- cpu功耗排行_常见NAS CPU处理器性能排行榜(简单天梯图)
转载csdn: (35条消息) cpu功耗排行_常见NAS CPU处理器性能排行榜(简单天梯图)_weixin_39618173的博客-CSDN博客