zoukankan      html  css  js  c++  java
  • Jmeter测试中如何控制业务比例

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

    具体有两种方式:

    1.多线程组方式;

    2.逻辑控制器控制;

    第一种:

    jmeter一个测试计划可以添加多个线程组,我们把不同的业务放在不同的线程组中,通过控制线程数来控制业务占比。线程组A触发线程数90,

    线程组B触发线程数60;

     这样就可以粗略的控制业务占比近似3:2。但是如果两个事务响应时间不一样,最终完成的业务数也会有所差异。假设当前线程数的响应时间是完全一致的,才会有3:2的业务占比,当然这个是理想状态。

    第二种方式:

    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,完全不需要写那么复杂的数学表达式~~~

    人生的旅途,前途很远,也很暗。然而不要怕,不怕的人的面前才有路。
  • 相关阅读:
    【HDU3721】枚举+最长路
    满足要求的最长上升子序列(nlogn)
    Flask入门 表单Flask-wtf form原生 Bootstrap渲染(七)
    Flask入门之模板导入与块宏(六)
    Flask入门模板过滤器与测试器(五)
    Flask入门模板Jinja2语法与函数(四)
    Flask入门flask-script 蓝本 钩子函数(三)
    Flask入门request session cookie(二)
    Flask入门 flask结构 url_for 重定向(一)
    Django问卷调查项目思路流程
  • 原文地址:https://www.cnblogs.com/ymany/p/9767312.html
Copyright © 2011-2022 走看看