zoukankan      html  css  js  c++  java
  • Jmeter多业务混合场景如何设置各业务所占并发比例

    在进行多业务混合场景测试中,需要分配每个场景占比。

    具体有两种方式:

    1.多线程组方式;

    2.逻辑控制器控制;

    第一种:

    jmeter一个测试计划可以添加多个线程组,我们把不同的业务放在不同的线程组中,通过控制线程数来控制业务占比。比如实际业务中需要线程组A、线程组B和线程组C的比例为:3:2:1,那么我们可以设置线程组A的线程数为90,线程组B的线程数为60,线程组C的线程数为30,这样就可以粗略的达到要求的比例。但是如果三个事务的响应时间不一样,最终完成的业务数也会有所差异。假设当前线程数的响应时间是完全一致的,才会有3:2:1的业务占比,当然这个是理想状态。

    例如测试需求如下:对业务A、业务B、业务C、业务D、业务E,5个业务按并发比例要求进行100个用户并发的压力测试;

     

    JMeter是可以实现上述需求的,测试方案如下:

    1.创建一个测试计划;

    2.在该计划下添加5个线程组,分别是对业务A、业务B、业务C、业务D、业务E;

    3.分别设置线程组业务A、业务B、业务C、业务D、业务E的线程数为:40、10、20、25、5(总并发量为100,按并发比例设置并发用户数)

     

     第二种方式:

    jmeter的函数对话框中${__counter(True,)}函数获取当前迭代的次数。迭代次数也能获取到,那如何保持3:2的比例呢?这就是一个数学问题了。不卖观子,直接上代码:${__counter(true,)}%2==1||${__counter(true,)}%3==0上面_counter(true,)是获取当前迭代次数,%是取余,也就是是除2余1与3,整除时执行开新帖。以9次迭代为例:回帖9次,1,3,5,6,7,9次迭代时都会开新帖,回帖刚好是6次。9:6=3:2基本上达到了3:2的比例。

     

    方案二:采用jmeter本身自带的计算器,不失为一个好的方法。但是针对一些复杂的场景,这个计算式有点难写,

      比如:3:2这个比例,我看到网上的实现都是${__counter(true,)}%2==1||${__counter(true,)}%3==0,

      这种计算方式就比较复杂了,那有没有简单一点实现方式呢?

      其实是有的。

       当参数为true时,每个用户有自己的计数器,比如10个线程组,100个loop,这是计数器的值为1-100.

       当选择false,全局计算器,10个线程组,100个loop,计数器值为1-10000

     比如下面场景:

     

    那么表达式应该怎么写呢?

     上面有3的倍数,5的倍数,那么取其最小公倍数15,按照15分割。

    均使用If控制器,表达式分别为:

    a:  ${__counter(false,)}%15 <=5

    b:  ${__counter(false,)}%15 >5

    c:   ${__counter(false,)}%15==1

    d:   ${__counter(false,)}%15>1&& ${__counter(false,)}%15<=5

    总结规律:

    按照最小的公倍数分割,每个控制器取他们应占的份数。

    上面的3:2的实现手段,就更容易了,一个占2/5,一个占3/5

  • 相关阅读:
    小结
    day17——其他内置函数
    day16——函数式编程和内置函数
    Python中的函数
    Python字符串的两种方式——百分号方式,format的方式
    第一章 初识Mysql
    day13 Python数据基本类型
    day14 集合与函数
    第七章 线性回归预测模型
    json-lib(ezmorph)、gson、flexJson、fastjson、jackson对比,实现java转json,json转java
  • 原文地址:https://www.cnblogs.com/insane-Mr-Li/p/11843477.html
Copyright © 2011-2022 走看看