jmeter(九)逻辑控制器简介及使用方向

之前的博客中有介绍到jmeter中元件的作用域,其中逻辑控制器(Logic Controllers)的作用域只对其子节点的sampler有效,而逻辑控制器的作用是控制采样器的执行顺序。

jmeter提供了17种逻辑控制器,它们各个功能都不尽相同,大概可以分为2种使用类型:

①.控制测试计划执行过程中节点的逻辑执行顺序,如:Loop Controller(循环控制器)、If Controller(如果if控制器)等;

②.对测试计划中的脚本进行分组,方便JMeter统计执行结果以及进行脚本的运行时控制等,如:Throughput Controller(吞吐量控制器)、Transaction Controller(事务控制器)等

jmeter提供如下17种逻辑控制器:

一、临界区控制器(critical section Controller)

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

名称和注释很简单,就是给控制器添加一个备注,使人明白这个控制器的解释含义的意思

Lock name:锁名称,这里可以填入其子节点下执行的线程的名称,这个线程作为一个全局锁存在

参考博客:http://www.cnblogs.com/kuihua/p/5537083.html

2、遍历循环控制器(ForEach Controller)

作用:用来遍历当前元素的所有可执行场景;在用户自定义变量中读取一系列相关的变量,该控制器下的采样器或控制器都会被执行一次或多次,每次读取不同的变量值,所以它总是和用户自定义变量一起使用

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

Start index for loop(exclusive):循环指数开始(唯一)→ 遍历查询的变量范围,开始的值

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

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

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

参考博客:http://blog.sina.com.cn/s/blog_794d9c8801019dit.html

3、包含控制器(Include Controller)

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

include Test Plan:包含测试计划的文件名,可以点击浏览,从文件夹保存的JMX文件夹目录下选择对应的JMX文件

使用方法:创建一个测试计划,下面可添加取样器/控制器等,然后保存测试计划,为了方便起见, 线程组也可以添加外部JMX文件中用于调试;

如果测试使用Cookie或用户定义的变量,这些应放置在顶层(包括文件),否则无法正常工作;此元素不支持变量/函数在文件名字段中;但是,如果属于包含控制器定义的内容,则使用前缀路径名。

当使用包含控制器中包含相同的JMX文件,则要确保文件名不同,以避免无法读取;如果文件不能被发现,那么控制器会尝试打开文件名相对于JMX启动目录。

4、生命周期/运行周期控制器(Runtime Controller)

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

Runtime(seconds):运行时间,单位为:秒

5、转换控制器(Switch Controller)

作用:通过给该控制器中的value赋值,来指定运行哪个取样器(也可以理解为开关控制器)

Switch value:控制器具体赋值的value值字段

有两种赋值方式:

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

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

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

6、当/判断控制器(While Controller)

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

Condition(function or variable):条件(函数或变量):里面可填入判断依据的条件,参照

使用方法:可能的条件值有:

①.空白:最后一个示例循环失败时退出循环

②.最后一个值:最后一个示例循环失败时退出循环。 如果之前的最后一个示例只是循环失败,不进入循环。

③.否则:退出时(或不输入)循环条件等于字符串“ 假 ”

条件可以是任何变量或函数,最终等于字符串” 假 ”。需要注意的是:条件是评估两次,一次取样前,一次随机取样

7、事务控制器(transaction controller)

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

Generate parent sample:生成父样本(不同的模式选择)

include duration of timer and pre-post processors in generated sample:包含时间的计时器和前后处理器生成的示例(不同的模式选择)

对于Jmeter2.3以上的版本,有两种模式的操作

①.事务采样器是添加到其下采样器后面的

②.事务采样器是作为其下采样器的父采样器

生成的事务采样器的测量的时间包括其下采样器以及其他的一切时间。由于时钟频率问题,这个时间可能略大于单个采样器的时间之和;时钟开始时间介于控制器记录开始时间与第一个采样器开始之间,时钟结束时间亦然。

事务采样器只有在其子采样器都成功的情况下才显示成功。

在父模式下,事务控制器下的各个采样器只有在结果树里才能看到;同时,子采样器的数据也不会在CSV文件中显示,但是在XML文件中可以看到。

8、交替控制器(creatleave controller)

作用: 交替控制,使得该控制器包含的取样器步骤交错执行在每个循环中

忽略子控制器模块(Ignore sub-contorller blocks):如果勾选此项,交错控制器将sub-controllers像单一请求元素一样,一次只允许一个请求/控制器

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

9、仅一次控制器(once only controller)

作用:在多线程循环的时候,将使其子节点下的取样器请求只运行一次

10、流量控制器(throughput controller)

作用:jmeter自带的翻译这里是错误的,因为它并不能控制吞吐量(吞吐量的概念请自行百度);其实质作用是允许用户控制执行的频率

总共有两种执行模式:百分比执行和总执行

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

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

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

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

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

11、如果控制器(If Controller)

作用:允许用户控制该控制器下面的取样器/控制器是否执行测试

条件(默认JavaScript)(Condition(default javascript):使用JavaScript的函数或变量进行评估判断条件为真或假

条件解释为变量表达式(interpret condition as variable expression):如果勾选该项,那么变量表达式会进行求值,并与“ture”或“false”进行比较,而无需使用JavaScript

对所有子条件评估(evaluate for all children):如果勾选该项,则变量表达式可以返回任何值,而不用与“ture”或“false”进行比较

默认情况下,该控制器可以对包含在其下面的所有可运行的元素进行评估,但只能评估一次

12、录制控制器(Recording Controller)

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

清除所有记录的样本(Clear all the recorded samples):点击可以清除所有已经记录的测试样本

一般情况下,在测试执行时候,它没有效果,但是在执行HTTPS测试脚本时,会记录下所有测试样本

13、循环控制器(Loop Controller)

作用:该控制器下的取样器请求可以循环运行

循环次数(Loop Count):在输入框中输入需要循环的次数,控制器下的请求即可循环运行

永远(forever):如果勾选该项,那么控制器下的请求可一直运行

14、模块控制器(Module Controller)

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

寻找目标元素(Find target element):寻找测试计划中需要特定测试的元素,模块;也可理解为该控制器可以控制已经封装好的模块元素


一个测试计划由一个控制器和所有的测试元素(取样器等)组成,测试计划可以位于任何线程组或工作台;如果计划位于线程组,则可以禁用其他控制器,防止正在运行的测试计划被影响(除了模块控制器)

模块控制器的优势在于:当存在多个线程组时,该控制器可以轻松切换,只需要选择对应的取样器,方便快捷,替代了创建很多测试计划的繁琐操作


任何一个模块所用的控制器名字必须唯一,因为其名字被用来找到目标控制器时重新加载;出于这个原因,最好保证控制器名字不同,否则执行测试时候可能发生意外


模块控制器与远程测试不应使用或非gui测试与工作台部件,因为工作台测试元素并没有测试计划的一部分 jmx 文件。 任何这样的测试就会失败

15、简单控制器(Simple Controller)

作用:用来组合取样器和其他逻辑控制器

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

16、随机控制器(Random Controller)

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

忽略子控制器模块(Ignore sub-controller blocks):如果勾选此项,交错控制器将sub-controllers像单一请求元素一样,一次只允许一个请求/控制器

17、随机顺序控制器(Random Order Controller)

作用:类似于简单控制器,将执行每个每个子节点下的取样器请求一次,但是执行是随机的

关于逻辑控制器,就介绍到这里,有查询了很多资料,参考了其他博客作者的内容,可以说结果很不理想,大部分都是直接将jmeter官网文档用翻译词典翻译出来就贴上去了,错别字,解释语句不通,偶尔看见一篇,也是寥寥几笔,

关于这些控制器的具体使用方法,我自己也尝试的使用了一下,还是不难的,可能随笔中介绍会有点误差,希望看到的人指正出来,谢谢

时间: 2024-08-03 15:46:15

jmeter(九)逻辑控制器简介及使用方向的相关文章

Jmeter之逻辑控制器(Logic Controller)【转】

Jmeter之逻辑控制器(Logic Controller) 前言: 1. Jmeter官网对逻辑控制器的解释是:"Logic Controllers determine the order in which Samplers are processed.".意思是说,逻辑控制器可以控制采样器(samplers)的执行顺序.由此可知,控制器需要和采样器一起使用,否则控制器就没有什么意义了.放在控制器下面的所有的采样器都会当做一个整体,执行时也会一起被执行. 2.JMeter中的Logi

Jmeter之逻辑控制器(Logic Controller)

Jmeter之逻辑控制器(Logic Controller) 前言: 1. Jmeter官网对逻辑控制器的解释是:“Logic Controllers determine the order in which Samplers are processed.”.意思是说,逻辑控制器可以控制采样器(samplers)的执行顺序.由此可知,控制器需要和采样器一起使用,否则控制器就没有什么意义了.放在控制器下面的所有的采样器都会当做一个整体,执行时也会一起被执行. 2.JMeter中的Logic Con

jmeter测试原件简介(逻辑控制器)

这篇是在网上找的,写的实在是比我写的具体得多,也没什么好补充的,拿来记录一下,方便以后查询,感激原作者!! JMeter中的Logic Controller分为两类:一类用来控制Test Plan执行过程中节点的逻辑执行顺序,如:Loop Controller.If Controller等:另一类则与节点逻辑执行顺序无关,用于对Test Plan中的脚本进行分组.方便JMeter统计执行结果以及进行脚本的运行时控制等,如:Throughput Controller.Transaction Con

Jmeter(5)逻辑控制器(Logic Controller)

前言: 1. Jmeter官网对逻辑控制器的解释是:“Logic Controllers determine the order in which Samplers are processed.”.意思是说,逻辑控制器可以控制采样器(samplers)的执行顺序.由此可知,控制器需要和采样器一起使用,否则控制器就没有什么意义了.放在控制器下面的所有的采样器都会当做一个整体,执行时也会一起被执行. 2.JMeter中的Logic Controller分为两类: a) 控制测试计划执行过程中节点的逻

JMeter安装和简介

1.Apache jmeter 是一个100%的纯java桌面应用,用于压力测试和性能测量.它最初被设计用于Web应用测试但后来扩展到其他测试领域,可以用于对静态的和动态的资源(文件,Servlet,Perl脚本,java 对象,数据库和查询,FTP服务器等等)的性能进行测试.它可以用于对服务器,网络或对象模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能.你可以使用它做性能的图形分析或在大并发负载测试你的服务器/脚本/对象. 2.测试环境搭建 官网:http://jmeter.apa

Jmeter之逻辑控制器

Jmeter逻辑控制器 学习更新中 线程组->添加->逻辑控制器->XX控制器 1.仅一次控制器 使用场景:线程数为1,登录1次,循环浏览N次. 如果,登录账号参数化,线程数为M时,登录M个不同的账号,每个账号浏览N次. 2.循环控制器 使用场景:循环控制器下的请求回循环 一个线程数的循环数 = 线程组的循环次数 x 循环控制器的循环次数 原文地址:https://www.cnblogs.com/bf-blackfish/p/10758157.html

jmeter的逻辑控制器

简介:本文章介绍foreach控制器,if控制器,交替控制器,循环控制器 一.foreach控制器 1.按照下面的顺序放置元件 2.选择foreach控制器,start index 等于0,表示从第一个参数开始循环,end index 相当于循环4次 勾选Add"_"before number,表示查找变量中"_"前缀为user的变量开始循环 3.定义变量的名称,名称为上面设置的变量前缀名+"_"+数字

jmeter之模块简介

1.Threads(线程组),简单来说就是控制一个线程组控制器,用来控制线程的一些操作. 2.逻辑控制器,官方解释就是用来控制采样器的执行顺序. 3.配置元件,这个栏目的工具是我最喜欢的工具,因为他可以让人偷懒,可以大大的提高工作效率:另一种说法可以说是一个公共部分,只要添加了一个之后下面的所有地方都可以使用. 例如:http信息头管理器,你只要添加了这个,那么你下面所有的http请求都可以使用. 4.定时器,顾名思义就是一个控制时间的工具,具体用的比较少,暂不做介绍. 5.前置处理器,后置处理

Jmeter之逻辑控制器(1)

1. ForEach controller 主要用于读取用户自定义变量值(右键添加-配置元件-用户自定义变量),用户自定义变量Name命名格式:变量名+下划线+数字. 右键添加-逻辑控制器-ForEach Controller 取值范围:上图表示1≤count<3,取第一个到第二个变量. 输出变量名称:将每一次得到的用户自定义变量count存储到参数reslut中. 即使线程为1,循环次数为1,也会取完取值范围内的变量. 2. If Controller 根据给定表达式的值决定是否执行该节点下的