JMeter(十一)-定时器下

3. 常用定时器讲解

3.5JSR223 Timer

JSR定时器,在jemter最新的版本中,新增了这个定时器,可以这么理解,这个定时器相当于BeanShell定时器的“父集”,它可以使用java、JavaScript、beanshell等多种语言去实现你希望完成的事情。

3.5.1新建:线程组 > 添加 > 定时器 > JSR233定时器,如下图所示:

3.5.2实例

1、新建测试计划,线程组下添加2个取样器 访问csdn首页、访问百度,

2、然后再添加JSR223 定时器,编写脚本设置延迟时间2s,如下图所示:

3、配置好以后,运行JMeter,查看表格结果(取样器访问csdn首页和访问csdn首页间隔2s),如下图所示:

3.6Synchronizing Timer

同步定时器,用来模拟多用户并发,或者说更严格的并发场景,比如秒杀活动,就要用这个玩意了。

作用:也是用来设置集合点,阻塞线程,同步虚拟用户,直到指定的线程数量到达后,恰好在同一时刻执行任务,再一起释放,可以瞬间产生很大的压力。

一般情况,并发用户数多少,同步定时器就写多少。(多少并发就要等多少个人到齐一起释放)

3.6.1新建:线程组 > 添加 > 定时器 > 同步定时器,如下图所示:

3.6.2关键参数说明如下:

模拟用户组的数量:集合点个数 (执行的线程数),如果设置为0,等于设置为线程租中的线程数量。

超时时间:指定线程数多少秒没集合到算超时(以毫秒为单位)。如果设置为0,该定时器将会等待线程数达到了"用户组数量"中设置的值才释放,不够的话就死等。如果大于0,那么如果超过“超时时间”中设置的最大等待时间后还没达到"用户组数量"中设置的值,Timer将不再等待,释放已到达的线程。默认为0

(1)上面两个参数如果都设置了值,则在实际中是哪个条件先达到,定时器先执行哪个,如第一个参数释放线程数量先达到,则不会管超时时间的值,timer会释放;如果第二个参数超时时间先达到,则不会再等线程数量,按照目前超时的时间点集合的线程数,timer释放。

(2)同步定时器(Synchronizing Timer)的超时时间设置要求: 超时时间 > 请求集合数量 * 1000 / (线程数 / 线程加载时间)

线程组用户数100,添加同步定时器

线程数(100)

定时器等待线程数(视情况而定)

超时设置(默认为0,单位毫秒)

设置效果(脚本运行达到的效果)

100

100

0

用户等待达到100个用户,同时并发请求

100

90

100

1、刚好超时100ms,且等到90个用户并发请求;

2、等到90个用户,未超时,继续等到结束,再并发,这时用户数将大于90;

3、等到小于90和用户,又超过了设置100ms,那么以等到的用户并发请求,可能小于90;

100

110

0

用户无法达到110个用户,线程将一直等待,不会停止;

100

100

100

1、刚好超时100ms,等到100个用户并发请求;

2、超时100ms后,定时器以等到的最大用户数并发请求;

3、如果超时100ms,用户数没有到达100,将以等到的用户数并发请求,这是用户数可能小于100;

100

0

0

定时器设置的用户数等效于线程的用户数,超时默认设置为0,用户同时并发请求

3.6.3实例

  • 若某个请求需要并发测试,则可在该请求下添加同步定时器。

1、新建测试计划,线程组(设置线程数10,循环3;总线程为30)下添加2个取样器 访问csdn首页(已禁用)、访问百度

2、然后再添加同步定时器,设置模拟用户组数量:9,超时时间:10000,如下图所示:

3、配置好以后,运行JMeter,查看表格结果(几乎是在同一时间,9个用户同时并发访问百度,到第四轮只有三个线程,所以等待线程集合,当达到最大超时时间10s时,就是释放集合的线程,直到达到30线程),如下图所示:

  • 若某几个请求需要同时进行并发,则可在请求的同一级添加同步定时器。

1、新建测试计划(设置线程数10),线程组下添加2个取样器 访问csdn首页、访问百度

2、然后再添加同步定时器,设置模拟用户组数量:10,超时时间:5000

3、配置好以后,运行JMeter,查看表格结果,如下图所示:

  • 若某几个线程需要同步并发,则可在测试计划下(线程组同一级)添加同步定时器(适用于多业务混合并发测试)。

1、新建测试计划,添加同步定时器,设置模拟用户组数量:10,超时时间:5000

2、然后再添加两个线程组,一个线程组下添加2个取样器 访问csdn首页、访问百度,另一个线程组下添加1个取样器 访问百度2

3、配置好以后,运行JMeter,查看表格结果,如下图所示:

3.7泊松随机定时器

Poisson Random Timer,这个定时器在每个线程请求之前按随机的时间停顿,总的延迟就是泊松分布值和偏移值之和。这个定时器在每个线程请求之前按随机的时间停顿,总的延迟就是泊松分布值和偏移值之和。

3.7.1新建:线程组 > 添加 > 定时器 > 泊松随机定时器

3.7.2关键参数说明如下:

Lambda(in milliseconds):兰布达值;

Constant Delay Offset(in milliseconds):暂停的毫秒数减去随机延迟的毫秒数。

3.7.3实例

1、新建测试计划,线程组下添加2个取样器 访问csdn首页、访问百度

2、然后再添加泊松定时器,设置暂停时间会分布在1000到3000毫秒之间,如下图所示:

3、配置好以后,运行JMeter,查看表格结果(取样器访问csdn首页和访问csdn首页间隔在100到400毫秒之间),如下图所示:

3.8高斯定时器

Gaussian Random Timer,高斯定时器,生成一个呈高斯分布的时间间隔。

如需要每个线程的延迟时间是符合标准正态分布的随机时间停顿,那么使用这个定时器,总延迟 = 高斯分布值(平均0.0和标准偏差1.0)* 指定的偏差值+固定延迟偏移(计算参考:Math.abs((this.random.nextGaussian() * 偏差值) + 固定延迟偏移))。

另一种解释方法,在高斯随机定时器中, 随机时间在固定延迟偏移附近,概率符合高斯曲线分布。

总延迟时间 = 高斯分布值(平均0.0和标准差1.0)* 指定的偏差值 + 固定延迟偏移

3.8.1新建:线程组 > 添加 > 定时器 > 高斯随机定时器,如下图所示:

3.8.2关键参数说明如下:

偏差

固定延迟偏移

3.8.3实例

1、新建测试计划,线程组下添加2个取样器 访问csdn首页、访问百度

2、然后再添加高斯随机定时器,设置高斯随机定时器的偏差为1000ms,固定延迟偏移为3000,如下图所示:

3、配置好以后,运行JMeter,查看表格结果,如下图所示:

3.9BeanShell Timer(重要-常用)

Bean Shell定时器,顾名思义是:互相交替,其节点下的取样器交替执行。根据被控制器触发执行次数,去依次执行控制器下的子节点。被触发执行可以由线程组的线程数、循环次数、逻辑控制器触发。

3.9.1新建:线程组 > 添加 > 定时器 > Bean Shell定时器,如下图所示:

3.9.2关键参数说明如下:

重置解释器:每次迭代是否重置解释器,默认为false;在长时间运行的脚本中建议设置为true。

参数:BeanShell脚本的入参。入参可以是单个变量;也可以是数组,若是字符串数组,两个元素之间用空格隔开;也可以是常量。

文件名:BeanShell脚本可以从脚本文件中读取。

Script:在Script区直接写BeanShell脚本。

3.9.3实例

1、新建测试计划,线程组下添加2个取样器 访问csdn首页、访问百度

2、然后再添加Bean Shell定时器,脚本代码设置延迟时间2s,如下图所示:

3、配置好以后,运行JMeter,查看结果树(取样器访问csdn首页和访问csdn首页间隔2s),如下图所示:

4.定时器的作用域

  1. 定时器是在每个sampler(采样器)之前执行的,而不是之后(无论定时器位置在sampler之前还是下面);
  2. 当执行一个sampler之前时,所有当前作用域内的定时器都会被执行;
  3. 如果希望定时器仅应用于其中一个sampler,则把定时器作为子节点加入;
  4. 如果希望在sampler执行完之后再等待,则可以使用Test Action;

5.小结

5.1安装插件管理

1、安装前查看选项,没有看到插件管理,如下图所示:

2、想安装一个jmeter的插件,到官网(JMeter Plugins :: JMeter-Plugins.org)上去下载插件安装包,但是页面一直都是搜索状态,如下图所示:

4、将下载的文件拷贝的你的JMeter根目录下的 lib/ext 目录

5、 重启jmeter,在选项中可以看到插件管理工具已经安装成功

6、勾选要下载的插件,点击Apply changes and restart JMeter按钮就完成了

  • 23
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值