zoukankan      html  css  js  c++  java
  • Jmeter的逻辑控制器

    现在有这样的一个场景:

    1、连续发10个相同的请求
    2、其中前两个做特殊处理
    连续复制10个请求(不是增加线程数),将其中两个做处理
     
    这时候我们就需要用到Jmeter的逻辑控制器,Jmeter的逻辑控制器有很多,我们介绍一些常用的的逻辑控制器。
     
    Logic Controller逻辑控制器
    1、首先必须声明的是: Jmeter中的Controller 和 LoadRunner中的Controller的区别。
    LoadRunner中的Controller场景执行、数据收集
    Jmeter中的Controller 控制脚本的执行顺序
     
    2、回到执行顺序。查看Controller的执行顺序。
     
    提供的各种各样的Controller
     
    Simple Controller简单的Controller
    1、 The Simple Logic Controller lets you organize your Samplers(组织你的采样器) and other Logic Controllers. Unlike other Logic Controllers, this controller provides no functionality beyond that of a storage device.
    就是一个存储设备,需要跟采样器结合,将需要的采样器组合起来
    2、提供一个块的结构和控制。更方便,更清晰。 
    3、嵌套其他的Controller
    4、适用场景——都可以使用,只是将相关联的东西放在一起,脚本看起来简洁清晰,自身没有特点
     
    Loop Controller
    1、 简单的说就是提供一个循环
    两个请求加在里面,两个请求同时循环
    添加变量
    执行
    获得当前的线程号,使用函数帮助里的threadNum
    设置循环三次
    现在在Thread Group中设置线程数,设置成2
    发现 一个线程 执行了6次
    Thread Group中设置线程数设置很多,会使cpu的调度打乱,线程数就会乱
    将Thread Group中的循环次数修改,修改成2
    把two拿出来,执行
     
    Once Only Controller
    The Once Only Logic Controller tells JMeter to process the controller(s) inside it only once per Thread, and pass over any requests under it during further iterations through the test plan.
    不管循环多少次,里面的只执行一次
    设置循环三次
    在套一个循环控制器
    循环控制器里面的循环次数,改为3
    执行
    再把TestGroup里面的循环次数设置为3次
    看下面的例子
    把TestGroup里面的循环次数设置为3次
     
    ForEach Controller(使用与UDV绑定使用)
    The ForEach Controller is used in tandem with User Defined Variables (UDV). It is a variant of a Loop Controller as every sampler or controller that we add is executed one or more times according to the number of times to repeat.
    UDV用户定义变量
     
     
     
    循环次数是根据你的变量名数量定的
    脚本如下
    UDV定义变量
    运行脚本
    最后一个名字,输出的变量名字,剩下两次Debug,最后输出的vname分别是may,ada
     
    这时将UDV里面的值变一下,变一下name的名称
    执行,发现是执行不了的,说明这个必须是按照顺序执行的
     
    再将UDV里面的值变一下
    运行脚本
    发现只执行了两次
     
    这时脚本如下设置
    执行脚本,发现无法执行
     
    这时将UDV的name值变一下
    执行脚本
    可以执行,观察下name的名称,这时就知道输入变量的前缀是要对应的
     
    Transaction Controller
    The Transaction Controller generates an additional sample which measures the overall time taken to perform the nested test elements.
    事务控制器
    Jmeter中如何控制事物,学习之后就明白啦!
     
    one和two两个请求的加载时间总和,脚本如下,并执行
     
    事物控制器界面
    运行脚本
    这种方式是不是比之前的更好看些
     
    添加一个2秒的等待时间
    运行脚本
    等待2秒,运行one
    再等待2秒,运行two
    这时,计算one和two的加载时间,发现并没有加上等待的四秒
     
    如果这时也加上这些时间呢,需要勾选下一项
    运行脚本
    这时候,发现时间变得很大,将思考时间和元件的执行的时间加进去了。
     
    If Controller
    The If Controller allows the user to control whether the test elements below it (its children) are run or not.
     
    不加条件,执行脚本
     
    执行,发现if里面的in-out并没有执行
     
    加一个为true的表达式
    执行脚本
    发现,in-if已经执行了
     
    如果表达式为false的话,in-if也是不会执行的
     
    在TestPlan里面加一个全局变量

    引用变量
    运行脚本
    条件里面可以用变量的
     
    默认是Javascript,是否可以不默认呢
    解析一个条件为变量表达式,什么意思呢,看下面的例子
     
    在TestPlan里面设置一个变量,true大小写都可以
    引用
    执行脚本
    修改变量,不为true,执行,发现in-if不执行
     
    注意:逻辑控制不能随意乱套
     
  • 相关阅读:
    Windows程序设计03:创建窗口类
    Android学习笔记19:ImageView实现图片适屏与裁剪
    设计模式01:统一建模语言UML基础知识
    串口通信与编程01:串口基础知识
    Windows程序设计01:在VS2008上新建Windows应用程序项目
    设计模式02:面向对象设计原则
    Windows程序设计02:永恒的Hello World
    Android学习笔记20:Http协议及Java Web编程
    Android学习笔记18:自定义Seekbar拖动条式样
    从 2.4 到 2.6:Linux 内核可装载模块机制的改变对设备驱动的影响
  • 原文地址:https://www.cnblogs.com/jingjing0705/p/5792869.html
Copyright © 2011-2022 走看看