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

(1)控制测试计划或者线程组中节点的逻辑执行顺序。

(2)对测试计划或者线程组中的脚本进行分组、方便jmeter统计执行结果以及脚本运行时的控制等。
jmeter中逻辑控制器(Logic Controllers)的作用域只对其子节点的sampler有效,作用是控制采样器的执行顺序。

测试计划—线程组—逻辑控制器

一、简单控制器(Simple Controller):

从下图看出监听器生效于控制器内的所有采样器,有多个简单控制器时,采样器按顺序执行

二、循环控制器(Loop Controller):

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

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

  2、如果同时设置了线程组的循环次数和循环控制器的循环次数,那循环控制器的子节点运行的次数为两个数值相乘的结果。

循环控制器1设置循环3次,循环控制器2设置循环2次,线程组1循环次数1时:

HTTP请求3未处于循环控制器下,故只执行1次

循环控制器1设置循环3次,循环控制器2设置循环2次,线程组1循环次数2时:

先循环控制器2 2次,再循环控制器1 3次,再线程1循环2次

三、仅一次控制器:

仅一次控制器,在循环执行中对该控制器下的请求进行执行一次,然后在接下来的循环执行中将会跳过该控制器下的所有请求。

在进行登录的测试中,可以考虑将登录请求放在仅一次控制中,这样登录请求只执行一次。在并发查询时,可能会使用到仅一次控制器,在并发查询时,我们只需要登录请求执行一次即可。Jmeter中的仅一次控制器相当于loadrunner中的init的初始化action。

线程循环设置5

HTTP请求2不在控制器内

四:随机控制器

随机控制器下的sampler添加3个

线程组循环设置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

线程组1循环设置2次,循环控制器设置7次,顺序循环7次sampler ,再循环线程的2轮

七、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、事务下有多个取样器,其中一个取样器请求失败,这个事务就失败了

十三、吞吐量控制器throughput controller

待续————————————————————————————————

史上最全jmeter逻辑控制器案例详解相关推荐

  1. 史上最全的IP地址详解,速来get

    史上最全的IP地址详解 白在了解虚拟机网络之前,我们首先得了解ip地址是什么? 1.简单局域网的构成 局域网:一般称为内网 简单局域网的构成:交换机.网线.PC(其他IT终端) 交换机:用来组建内网的 ...

  2. centos7中ps显示的内容_值得收藏,史上最全Linux ps命令详解

    原标题:值得收藏,史上最全Linux ps命令详解 一.程序员的疑惑 大概在十多年前,我当时还是一个产品经理.由于一些工作的原因,需要向运维工程师学习一些linux常用命令. 当使用linux ps这 ...

  3. 史上最全JavaScript数组对象详解(二)

    JavaScript数组对象详解(二) 上一篇博客我们讲到了JavaScript数组对象的创建,访问和属性,接下来一篇博客主要讲一下JavaScript数组对象的方法及使用.说到数组的方法,主要分为两 ...

  4. 史上最全YYModel的使用详解

    原文链接:http://www.jianshu.com/p/25e678fa43d3 demo链接:https://github.com/walkertop/YYModel---Demo 插件链接:h ...

  5. 广成子:值得收藏-史上最全Linux ps命令详解

    From 闻茂泉(广成)AliDataOps 一.程序员的疑惑   大概在十多年前,我当时还是一个产品经理.由于一些工作的原因,需要向运维工程师学习一些linux常用命令.当使用linux ps这个十 ...

  6. 史上最全交叉熵损失函数详解

    在我们自学神经网络神经网络的损失函数的时候会发现有一个思路就是交叉熵损失函数,交叉熵的概念源于信息论,一般用来求目标与预测值之间的差距.比如说我们在人脑中有一个模型,在神经网络中还有一个模型,我们需要 ...

  7. 史上最全提现模块案例分解

    史上最全提现模块案例分解 ----绑定银行卡: 1.绑定别人的银行卡 2.绑定已绑定的银行卡 3.绑定支持的银行卡 4.绑定不支持的银行卡 5.绑定信用卡 6.绑定过期的银行卡 7.绑定外地的银行卡 ...

  8. 「万字图文」史上最姨母级Java继承详解

    原创公众号:「bigsai」 除公众号以外拒绝任意擅自转载 文章收录在bigsai公众号和回车课堂 课程导学 在Java课堂中,所有老师不得不提到面向对象(Object Oriented),而在谈到面 ...

  9. 史上最详细的maven仓库详解

    写在前面: 我是「沸羊羊_」,昵称来自于姓名的缩写 fyy ,之前呕心沥血经营的博客因手残意外注销,现经营此账号. 本人是个小菜,正向着全栈工程师的方向努力着,文章可能并不高产,也很基础,但每写一篇都 ...

最新文章

  1. [语义]情感分析方向近况·0908
  2. matlab txt写入excel,怎么把matlab的GUI文本编辑器中的数据存入EXCEl
  3. 玩转OpenVswitch 简介
  4. APAX-5017PG 项目开发全程记录 - 筹备篇
  5. ARM7/9 的中断与 RTOS 系统(转)
  6. 1020:打印ASCII码
  7. 华为云DevCloud重金悬赏,开发者大赛等你来战!
  8. 2019年最值得关注的5个人工智能趋势!
  9. 算法导论读书笔记(7)
  10. Python的第三方库requests
  11. java中Assert使用
  12. 苹果修复 Gatekeeper 绕过漏洞
  13. 前端教程:HTML5有哪些新特性?
  14. 计算机考研408复习路线,不再让你头大啦
  15. 演讲稿【物性的神奇】
  16. 青云mysql_青云分布式数据库RadonDB 深度兼容MySQL
  17. 四川2021高考体考成绩查询,2021年四川体育专业考试成绩查询网址:https://www.sceea.cn/...
  18. python爬虫携程酒店_携程酒店爬取分享
  19. 做梦都想复习的网络编程
  20. zigbee现存网络下更换协调器

热门文章

  1. 函数的结束条件和返回值 — return
  2. android socket 框架c#,C#与Android Socket通信
  3. vue取通过key取value_如何通过获取map中的key来获得与key对应的value值,进行运算...
  4. winform项目_winform项目——仿QQ即时通讯程序01:原理及项目分析
  5. JavaWeb中监听器Listener+过滤器filter+拦截器interceptor区别
  6. 设计模式---适配器设计模式
  7. a标签跳转后返回原页面 layui_layui页面操作,点击一个添加页面,跳转有确定,然后点击确定后将选择的几个数据返回前一个页面获取值,然后ajax请求后台...
  8. python中rgb_python - 图像的RGB矩阵
  9. java中删除最大的数,【Java练习】删除字符串中字符个数最少的字符
  10. 2018.9.10.Matlab实验二:Matlab基本运算