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

  • 相关阅读:
    discuz论坛X3升级时 文件下载出现问题,请查看您的服务器网络以及data目录是否有写权限
    discuz管理中心无法登陆
    在Windows 7下面IIS7的安装和 配置ASP的正确方法
    window.open
    linux下的vmware虚拟机如何回收虚拟磁盘空间
    CentOS7 安装lamp 3分钟脚本
    pyhon 编译C++安装需要 c99 模式
    条件判断
    python字符串杂项
    RIPv1&v2
  • 原文地址:https://www.cnblogs.com/insane-Mr-Li/p/11843477.html
Copyright © 2011-2022 走看看