zoukankan      html  css  js  c++  java
  • 在JMeter压测 控制交易占比

    在JMeter测试计划中如何控制业务比例

    本文来自网络转载,如有侵权请联系博主删除

    原文链接:https://blog.csdn.net/selingchen/article/details/47844375

    性能测试混合场景中,我们需要组合多个业务操作到场景中来。
    比如有一个论坛的业务分布如下:
    开新帖与回复帖子的比例为2:3,
    那么我们在JMeter测试计划中如何控制其比例呢?

    下面我们介绍两种方式:
    1.多线程组方式

    2.逻辑控制器控制

    多线程组方式:

    我们知道JMeter是用线程组来模拟虚拟用户的,JMeter还可以支持一个计划中多个线程组。
    利用这个特性我们可以把开新帖业务放在一个线程组中,回帖业务放在另外一个线程组中。
    为了制造出业务量的比例关系,我们通过控制线程数来达到效果。如下图:

     


    ReplayTopic为回帖线程组,添加90个线程;
    SendTopic为开新帖线程组,添加60个线程,刚好是3:2

    当然,这只能是近似的,如果这两个事务的响应时间不一样,最终完成的业务数比例也会不一样。
    当前线程数是在假定两个业务的响应时间一样的情况下,所以这完全是理想状况。
    可以看出,这种方式控制并不完美。

    下面我们用第2种方式:

    控制器控制

    下图是一个IF控制器,IF控制器可以使用表达式来做为条件,这样我们事以获取迭代次数来决定
    是回帖还是开帖,比如一共3次迭代,第1次与第3次迭代时开新帖,1,2,3次迭代都会进行回帖

     

    接下来我们就要获取迭代次数,JMeter函数助手提供了一个__counter函数,可以用来获取当前的
    迭代次数。

    好,我们思路有了,迭代次数也能获取到,那如何保持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的比例。

     

     
    ————————————————
    版权声明:本文为CSDN博主「Selingchen」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/selingchen/article/details/47844375

  • 相关阅读:
    idea配置tomcat
    idea中配置tomcat乱码问题--记录处理经验
    svn提交报错值 remains tree in conflict
    Vue之MVVM
    python 时间日期处理
    SVN使用指南
    linux查看硬件信息
    软件集成过程标准化的建议
    术语辨析
    科学计数e+转成正常str
  • 原文地址:https://www.cnblogs.com/maxforb/p/11660346.html
Copyright © 2011-2022 走看看