Jmeter逻辑控制器

阅读: 评论:0

Jmeter逻辑控制器

Jmeter逻辑控制器

 

标签(空格分隔): Jmeter


Loop Controller 循环控制器

指定其子节点运行的次数,可以使用具体的数值,也可以使用变量 

  • Foever选项:勾选表示一直循环,不勾选需要指定循环次数

If Controller if控制器

if控制用来控制器子节点是否运行。 默认情况下,条件仅在初始条目时计算一次,但您可以选择对控制器中包含的每个可运行元素进行评估。

如果使用javascript作为判断条件,将会降低性能

  • Condition (default JavaScript): 默认情况下 输入的条件会被解释为返回trueflase的avaScript代码,但是这个条件可以被覆盖。
  • Interpret Condition as Variable Expression?:将条件语句解释为表达式
    • 勾选:讲条件语句解释为表的式,条件是语句使用__jex3转移,不是必须
    • 不勾选:将条件语句解释为javaScript(默认勾选)
  • Evaluate for all children :
    • 勾选:如果选中这一项,在每个子结点执行前都会计算表达式。
    • 不勾选:尽在初始的时候计算该表达式。

实例1:条件语句被解释为javaScript  实例2:条件语句为表达式  

实例3:只在初始化判断if条件

 

实例4:每个子节点运行前都进行判断 

While Controller 无限循环控制器

无限循环执行子节点,直到判断条件为False 

  • Condition
  • blank(空):无限循环,直到子节点中的的样本出现失败
  • LAST:当循环执行前有样本执行失败不进入循环
  • Otherwise:当判断条件为False的时候停止循环

实例1 无限循环,样本出现失败终止执行  

** 实例2 循环前样本执行失败**  循环执行前样本没有失败,正确进入循环  循环执行前样本有失败,不进入循环 

ForEach Controller ForEach 控制器

循环控制器,循环控制器控制循环,和编码中的for循环类似

  • Input variable prefix(非必须) :输入变量前缀,循环控制器可以从中获取到变量对应的值,然后作为循环控制器的循环条件,还可以输出变量作物取样器参数
  • Start index for loop(非必须):循环变量的开始下标
  • End index for loop(非必须):循环变量的结束下标
  • Output variable(非必须):输出的变量,循环控制器生成的的变量名称
  • Use Separator(非必须):是否使用分隔符,变量前缀是否加“_“作为分隔符

实例1

  • 请求jmeter.apache/demos网页,通过正则提取器获得例子名称 
  • for循环中使用正则中提取的变量。进行变量输出 
  • 执行结果 

Once Only Controller 仅一次控制器

仅一次控制器,也就是改控制器下的子原件只运行一次,即使把仅一次控制器放在循环控制器下面,也只是运行一次。线程组循环仅一次控制器也是只执行一次。类似于locust on_start 

** 实例1 循环控制器内执行仅一次控制器**

 

实例2 循环线程内执行仅一次控制器  

Interleave Controller 交替控制器

交替执行子节点内的元件。  

  • ignore sub-controller blocks(非必须):忽略子控制器,即子控制器失效,由交替控制器接管。每次只执行子控制器内的一个请求。
  • Interleave across threads(非必须):跨线程进行替换,如果勾选,交替控制器会操作所有线程。

实例1 交替执行请求

  • 交替执行控制器下包含请求1,请求2,请求3  

实例2 忽略交替控制器下的子控制器逻辑

  • 交替执行控制器下包含请求1,请求2,请求3,仅一次控制器
  • 仅一次控制器下包含请求4  不勾 ignore sub-controller blocks  忽略子控制逻辑 勾选 ignore sub-controller blocks  执行结果  这里有点看不懂了,只执行了7次,个人理解应该是1-2-3-4 1-2-3-4的执行 在仅一次控制器下面添加了请求5。不勾选ignore sub-controller blocks 执行结果  勾选ignore sub-controller blocks执行结果  感觉这里有bug 添加一个循环控制器,添加子元件请求6 不勾选ignore sub-controller blocks 执行结果  勾选ignore sub-controller blocks 执行结果。循环控制器的执行结果和预期一致

实例3 跨线程进行替换的效果

  • 线程数量4
  • 循环次数1
  • 元件和以上实例一直 不勾选 Interleave across threads 执行效果  勾选 Interleave across threads 执行效果 

Random Controller 随机控制器

和交替控制器类似,但是随机控制是随机选取子节点的原件进行执行 

  • ignore sub-controller blocks(非必须):忽略子控制器,即子控制器失效,由交替控制器接管。每次只执行子控制器内的一个请求。

实例1 ignore sub-controller blocks的作用

  • 随机控制器下有请求1,2,3,循环控制器,循环执行3次
  • 循环控制器下包含请求4

不勾选 ignore sub-controller blocks 执行结果  勾选 ignore sub-controller blocks 执行结果 

Random Order Controller 随机顺序控制器

和随机控制器类似,但是会执行所有子节点,但是顺序随机

实例1

  • 一个线程,循环10次
  • 随机顺序控制器在下包含请求1,2,3

Throughput Controller 吞吐量控制器

控制其下的子节点的执行次数与负载比例分配,包含一下两种分配方式

  • Percent executions : 设置运行比例
  • Total executions : 设置运行次数
  • Per user :勾选基于线程执行,勾选基于全局执行

实例1 设置执行次数

  • 两个吞吐量控制器,每个吞吐量控制器包含一个请求,执行次数为3,5  

  • 实例2 执行比例

  • 两个吞吐量控制器,每个吞吐量控制器包含一个请求,比例6:4

Runtime Controller 运行时控制器

用来控制子元件的执行时长。 ![image_1csdt18e98fe1nbq1lhe7p0mlc47.png-10kB]

  • Runtime (seconds) 期望运行的时长,0为不执行

Switch Controller 开关控制器

Switch控制器通过给该控制器中的Value赋值,来指定运行哪个采样器。

  • Switch Value 赋值方式
  • 序号赋值 Switch控制器下的子节点从0开始计数,通过指定子节点所在的位置来确定执行哪个元素
  • 指定子元素的名称,比如采样器的Name来进行匹配。当指定的名称不存在时,不执行任何元素。

 

 

Module Controller 控制器

用于跳转到选定的控制器位置并执行对应的控制器,主要用来业务逻辑的跳转 

  • Module to Run: 需要运行的模块,在下拉列表中选出需要运行的模块。 下拉列表列出了测试计划及工作台包含的控制器。

实例1 在 Module控制器中 Model To Run 选中 Random Order Controller(该控制器在测试计划汇总处于禁用状态)执行侧计划。

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

Include Controller 导入控制器

用来导入外部的的测试片段。导入的外部测试片段的是不包含线程组的,如果导入的是一个完整的测试计划该测试无法被执行。

  • Filename 要导入的测试计划。

实例1

  • 新建一个测试片段 新建文件-右击测试计划-点击测试片段(Test Fragment),测试片段下添加循环控制器循环10次,循环控制器下添加http请求,请求百度,保存导入使用  
  • 将新建的测试片段导入到导入控制器中,执行  执行结果  导入一个包含线程组的元件看看效果,在测试片段的jmx中新建一个线程组 保存后返回到导入控制器的测试计划中执行,看看结果  线程组没有被执行。通常情况下我们可以在测试片段中引入测试计划进行调试

Transaction Controller 事务控制器

事务控制器生成一个额外的样本,用于测量执行嵌套测试元素所花费的总时间,事务控制器可以把其节点下的取样器执行消耗时间累加在一起,便于我们统计。如果事务控制器下的有多个取样器,那么只有每一个取样器都运行成功了,整个事务控制器的事务才能算是成功。

  • Generate Parent Sample 选择是否生成一个父取样结果。不勾选的情况下生成独立样本,勾选的化生成的样本作为其他样本父项。
  • Include duration of timer and pre-post processors in generated sample 是否包含定时器设定的延迟时间,选择后测试结果统计的响应时间将包含样本请求前后的的延迟时间。

实例1,Generate Parent Sample

  • 样本内容
    • 事务控制器下添加请求1 请求2
    • 线程循环次数10
    • 添加汇总报告

 不勾选 Generate Parent Sample 查看执行结果 同时生成了 Transaction Controller(事务),请求1,请求2的结果

勾选 Generate Parent Sample 查看执行结果 只生成 Transaction Controller(事务)结果

实例2 Include duration of timer and pre-post processors in generated

  • 样本内容
    • 事务控制器下添加请求1 请求2,固定延时器,延时时间为2s.
    • 线程循环次数10
    • 添加汇总报告

不勾选 Include duration of timer and pre-post processors in generated 查看执行结果 勾选 Include duration of timer and pre-post processors in generated 查看执行结果 对比两个结果 发现勾选后事务的响应时间为`2s+请求1的相应时间+2s+请求2的相应时间。一般情况下我们不勾选

Simple Controller 简单控制器

简单控制器用来指定了一个执行单元(封装的作用?)他不改变元件的执行顺序,在他下面可以嵌套其他控制器。简单控制器只有两个可变属性名称注释。因为不存在什么逻辑的东西,就不举例了。

Critical Section Controller 临界区控制器

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

-Lock Name 锁的名称,唯一值。

Recording Controller 录制控制器

使用代理服务器是使用 具体看如下链接 

转载于:.html

本文发布于:2024-02-08 20:09:54,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170739445568735.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:控制器   逻辑   Jmeter
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23