平时测试中经常会遇到需要测试混合场景的压测需求,那么混合场景如何去实现精准控制业务比例呢,网上有许多方法,其中一个比例控制最准确,干货如下:
- 线程组结构如下:
- 添加逻辑控制器(说明 本人使用的 jmeter版本为5.0)
第一个逻辑里面的条件 填写 ${__jexl3(${__counter(true,)}%10!=0,)}
第二个逻辑里面的条件填写 ${__jexl3(${__counter(true,)}%10==0,)}
- 执行原理分析
线程组里的每个线程,会生成一个类似java里的iterator的迭代器,第一次迭代iterator值为1
如上所设置的条件,为1时满足第一个逻辑,此时执行逻辑1里的sampler,第二次迭代iterator值为2,同样满足逻辑1
类推...
第十次迭代iterator值为10,满足逻辑2,执行逻辑2里的sampler
以上实现精准控制9:1 的比例
- 题外 3:1:1如何实现(以图为准,展示不了如图效果,我姿势不对???)?
${__jexl3(${__counter(true,)}%5==0,)}
${__jexl3(${__counter(true,)}%5==1,)}
${__jexl3(${__counter(true,)}%5>1,)}
- 其他
表达式支持:
== 是否等于,如${__jexl3(${VAR}==1,)},判断${VAR}变量是否等于1
!= 不等于,如${__jexl3(${VAR}!=1,)},判断${VAR}变量是否不等于1
! 非,如${__jexl3(!(${VAR}!=1),)}对${VAR}!=1的结果取反
&&或|| 且与或,如 ${__jexl3(${VAR}==1 && ${name} != "heima",)}
> 或者>== 大于等于,如${__jexl3(${count}>=10,)}
多条件实例:
${__jexl3(${__counter(false,)}%10000>9887 && ${__counter(false,)}%10000<=9999,)}
注意:多条件实例时,不要勾选 evaluate for all children,可能会导致不精准