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

具体有两种方式:

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

最新文章

  1. C++设计模式——简单工厂模式
  2. 经典的Java基础面试题集锦
  3. h1/title,b/strong,i/em 的区别
  4. Scrum 项目 6.0 sprint演示
  5. java使用httpcomponents发送get请求
  6. html随笔
  7. MYSQL日常操作命令再熟悉
  8. Android通过JNI调用驱动程序(完全解析实例)
  9. change buffer
  10. mysql ++中文乱码问题
  11. Jmeter BeanShell 时间格式化处理
  12. 快速开发基于 HTML5 网络拓扑图应用--入门篇(一)
  13. 性能测试-Jmeter3.1 使用技巧
  14. 安装SQL Server 2008时,安装程序配置检查RebootRequiredCheck时失败
  15. 移植QT库的问题:QT_INSTALL/include/QtCore/qatomic_arm.h:131: Error: no such instruction: `swpb %al,
  16. 8、路由 router
  17. C# unicode 转中文
  18. What is the reason for - java.security.spec.InvalidKeySpecException: Unknown KeySpec type: java.security.spec.ECPublicKeySpec
  19. ejb servlet demo
  20. ArrayList底层实现

热门文章

  1. shell编程之99乘法表
  2. E. Little Pony and Expected Maximum(组合期望)
  3. 移动平台前端开发总结(ios,Android)
  4. R笔记整理(持续更新中)
  5. 12.基于vue-router的案例
  6. postgres —— 分组集与部分聚集
  7. test201909027 老Z
  8. UVa10828 Back to Kernighan-Ritchie——概率转移&amp;&amp;高斯消元法
  9. python - 手机号正则匹配
  10. 使用docker搭建etcd