zoukankan      html  css  js  c++  java
  • Jmeter(十九)逻辑控制器之if控制器

    一、Jmeter逻辑控制器

      可以控制取样器(Sampler)的执行顺序,它由多个逻辑控制语句封装成不同功能的组件组成。只对其子节点的Sampler有效。

      分为两种类型:

        1、控制测试计划执行过程中节点的逻辑执行顺序,如:循环控制器,if控制器等。

        2、对测试计划中的脚本进行分组,方便Jmeter统计执行结果以及进行脚本的运行时控制等,如:吞吐量控制器,事务控制器等。

     二、if控制器

      

     

    Expression (must evaluate to true or false) :表达式(值必须是true或false),也就是说,在右边文本框中输入的条件值必须是true 或 false。

    Interpret Condition as Variable Expression?:默认勾选项,将条件解释为变量表达式(需要使用__jexl3 或者 __groovy 表达式)

    Evaluate for all children?:条件作用于每个子项。

    Use status of last sample:上一个取样器执行成功后才执行if控制器下的子项

    1、文本框上的黄色感叹号,就是提示你,建议采用__jexl3 or __groovy 表达式,以提高性能,也就是默认的方式。

    2、if 控制器 只能作用于其下的子项

    下面通过具体例子来看下if控制器的用法:

    1、新建一个测试计划,定义一个用户变量mode,值为"baidu"

     2、新建两个if控制器,根据mode的值进行不同的请求。默认是勾选Interpret Condition as Variable Expression?,就要使用到__jexl3 或者 __groovy函数。打开函数助手

     把生成的函数字符串拷贝到if控制器中的Expression中就行了。

    3、添加一个监听器“察看结果树”,执行测试计划,察看执行结果

     4、把测试计划中mode的值改为"tenxun",再次执行察看结果。

     

     5、如果要直接使用表达式,不用__jexl3 或者 __groovy函数,那么就要去掉Interpret Condition as Variable Expression?的勾选,如图:

     6、Evaluate for all children的用法

     新建一个测试计划,定义一个用户变量flag,值为"Y"

     在线程组下新加一个if控制器,勾选Evaluate for all children,其下有三个取样器

     在腾讯请求的取样器下添加一个JSR233 PostProcessor的后置处理器,作用就是改变变量flag的值

     执行测试计划,查看结果树

     可以看到第三个请求->阿里请求没有被执行,原因就是执行完第二个请求->腾讯请求后,flag的值变为N了,已经不满足if控制器的条件了。

    如果把if控制器中的Evaluate for all children选项去掉,会怎么样了?

     执行测试计划,查看结果树

     可以看到if控制器下的三个取样器都被执行了。

    Evaluate for all children的作用就是使if控制器的条件作用于每一个子项。

    7、Use status of last sample的用法

    在测试计划下添加2个请求,百度请求和腾讯请求,腾讯请求放在if控制器下,在if控制器中点击Use status of last sample按钮,就会自动生成一个${JMeterThread.last_sample_ok}

     执行测试计划,查看结果树,可以看到两个取样器都被执行了

     修改百度请求(把请求地址写错,比如写成www.baidu1.com),使请求失败,再次执行测试计划,查看结果树

     可以看到百度请求失败后,没有再去执行腾讯请求了。

    Use status of last sample的作用就是只有当上一个请求成功后,才会执行if控制器下的请求。

  • 相关阅读:
    Hdu 1094 A+B for Input-Output Practice (VI)
    Hdu 1091 A+B for Input-Output Practice (III)
    Hdu 1092 A+B for Input-Output Practice (IV)
    Hdu 1087 Super Jumping! Jumping! Jumping!
    scala学习笔记2(类,继承,抽象类)
    scala学习笔记1(表达式)
    把以前写的几个Linux Framebuffer小工具放到github上了,直接去下吧,别找我要了
    一位台湾朋友刚建的一个FTK的论坛,欢迎加入讨论
    Linux高端内存的由来
    read系统调用深度剖析
  • 原文地址:https://www.cnblogs.com/eastonliu/p/13477047.html
Copyright © 2011-2022 走看看