zoukankan      html  css  js  c++  java
  • Jmeter-线程组执行顺序控制

    线程组按顺序来执行,大概思路,

    1.需要控制线程组内的操作在满足某一条件才执行,那么就需要使用if或者while;

    2.要使用if或者while都需要一个变量,而这个变量要在两个或多个线程组内使用,那么if使用变量就需要是全局变量,while使用的变量就需要是局部变量;

    (PS:在测试计划中有个选项“独立运行每个线程组”的选项勾选上,在线程组中设置延迟启动秒数也可达到效果,有个缺点每次都要修改线程组的启动、结束时间、不可控) 

    那么第一顺序执行线程组的配件,最少需要有2个BeanShell Sampler和一个If Controller;

    第二顺序以及之后顺序的线程组的配件,最少需要2个BeanShell Sampler、一个If Controller和一个While Controller;

    第一顺序执行线程组---------------------

    首先使用BeanShell Sampler给全局变量赋予初始值${__setProperty(newswitch,1,)};;

    然后使用If Controller作为操作的父类,条件为"${__P(newswitch,)}"=="1";

    最后使用BeanShell Sampler(父类线程组)给全局变量赋值${__setProperty(newswitch,2,)};,下一个顺序执行线程组的If  Controller条件;

    第二或N顺序执行线程组---------------------

    1.使用BeanShell Sampler(父类线程组),定义一个局部变量vars.put("whileswitch","1");

    2.使用While Controller作为If Controller的父类,条件为${__javaScript("${__P(whileswitch,)}"!="0")} ;

    3.使用If Controller作为操作的父类,条件为"${__P(newswitch,)}"=="2";(值根据第几个顺序而变化,第二个是2,第三个是3。。。)

    4.在If Controller下建立子类BeanShell Sampler给局部变量赋值vars.put("whileswitch","0");,结束While Controller;给全局变量赋值${__setProperty(newswitch,3,)};,下一个顺序执行线程组的If  Controller条件,如果没有下一个顺序执行线程组给全局变量赋予初始值${__setProperty(newswitch,1,)};。

     PS:这个方法有个缺点,结束最后一个线程有点慢

  • 相关阅读:
    二分查找(Binary Search)的几种变种形式
    深入理解jvm虚拟机读书笔记-垃圾收集器与内存分配策略(二)
    深入理解jvm虚拟机读书笔记-垃圾收集器与内存分配策略(一)
    Java8函数式编程
    Spring DBUnit 插入数据的时候如何处理自增ID
    IDEA Debug 技巧总结
    声明
    Mybatis最详细笔记
    关于jdbc概述
    SpringAOP(动态代理)
  • 原文地址:https://www.cnblogs.com/yanzhe/p/7736083.html
Copyright © 2011-2022 走看看