深入理解Jmeter常用定时器

bug

前言

jmeter并发测试每个请求之间是没有延时的,但实际工作有时候需要增加固定时间来测试,那么可以Jmeter定器组件,完成工作。其实这些知识百度一查就出来,为什么还要写,主要方便自己复习,要找的时候就从自己文章中找出,而且这些自己通过自己调试后,直接可以拿出来用。


jmeter定时器分类:

Constant Timer 固定定时器

Uniform Random Timer 均匀随机定时器

Constant Throughput Timer 固定吞吐量定时器

Gaussian Random Timer 高斯随机定时器

JSR223 Timer JSR223定时器

Poisson Random Timer 泊松随机定时器

Synchronizing Timer 同步定时器

BeanShell Timer BeanShell脚本编写定时器

Precise Throughput Timer 精准吞吐量定时器

定时器

1、Constant Timer 固定定时器(重要常用):

固定定时器

作用:通过ThreadDelay设定每个线程请求之前的等待时间(单位为毫秒)。注意:固定定时是有作用域的,放到线程组下其作用域是所有请求都会延迟固定器设置的时间,如果放到请求内,作用域是单个请求延迟时间(常用)。


2、Uniform Random Timer 均匀随机定时器

Uniform Random Time定时器

作用:它产生的延迟时间是个随机值,而各随机值出现的概率均等。总的延迟时间等于一个随机延迟时间加上一个固定延迟时间,用户可以设置随机延迟时间和固定延迟时间。

总延迟时间=指定范围内的随机时间+固定延迟时间。


3、Constant Throughput Timer 固定吞吐量定时器

作用:  按指定的吞吐量执行,以每分钟为单位。计算吞吐量依据是最后一次线程的执行时延。

Target throughput(in samples per minute):目标吞吐量。注意这里是每分钟发送的请求数,可以选择作用的线程:当前线程、当前线程组、所有线程组等,具体含义如下:

this thread only: 设置每个线程的吞吐量。总的吞吐量=线程数*该值。

all active threads in current thread group:吞吐量被分摊到当前线程组所有的活动线程上。每个线程将根据上次运行时间延迟。

all active threads:吞吐量被分配到所有线程组的所有活动线程的总吞吐量。每个线程将根据上次运行时间延迟。在这种情况下,每个线程组需要一个具有相同设置的固定吞吐量定时器。(不常用)

all active threads in current thread group (shared):同上,但是每个线程是根据组中的线程的上一次运行时间来延迟。相当于线程组组内排队。(不常用)

all active threads (shared):同上,但每个线程是根据线程的上次运行时间来延迟。相当于让所有线程组整体排队。(不常用)


4、Gaussian Random Timer 高斯随机定时器

Gaussian Random Timer 高斯随机定时器  

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


5、JSR223 Timer JSR223定时器

JSR223 Timer JSR223定时器

作用:JSR223计时器可以使用JSR223脚本语言生成延迟;

参考帮助文档:

https://jmeter.apache.org/usermanual/component_reference.html#JSR223_Timer


6、Poisson Random Timer 泊松随机定时器

Poisson Random Timer 泊松随机定时器

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

上面表示暂停时间会分布在100到400毫秒之间:

(1)Lambda(in milliseconds):兰布达值

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


7、Synchronizing Timer 同步定时器(重要-常用)

Synchronizing Timer 同步定时器

作用:用来设置集合点,其作用是:阻塞线程,直到指定的线程数量到达后,再一起释放,可以瞬间产生很大的压力

(1)Number of Simulated Users to Group by:模拟用户的数量,即指定同时释放的线程数数量,若设置为0,等于设置为线程组中的线程数量;

(2)Timeout in milliseconds:超时时间,即超时多少毫秒后同时释放指定的线程数;如果设置为0,该定时器将会等待线程数达到了设置的线程数才释放,若没有达到设置的线程数会一直死等。如果大于0,那么如果超过Timeout inmilliseconds中设置的最大等待时间后还没达到设置的线程数,Timer将不再等待,释放已到达的线程。默认为0

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


8、BeanShell Timer BeanShell脚本编写定时器(重要-常用)

简单示例:

BeanShell Timer BeanShell

参数说明:

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

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

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

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

增加一个Java Request请求,并且增加时间验证是否按照自己设定的定时运行脚本:

Java Request ${__time(yyyy-MM-dd HH:mm:ss:SSS,)}

增加结果查看树:结果显示按之前设置的每个1秒钟运行


9、Precise Throughput Timer 精准吞吐量定时器

Precise Throughput Timer 精准吞吐量定时器

Target Throught:目标吞吐量

Throught Period:表示在多长时间内发送Target Throught指定的请求数(以秒为单位)

Test Druation:指定测试运行时间(以秒为单位)

Number of threads in the bath:用来设置集合点,等到指定个数的请求后并发执行其它参数默认即可。


你可能感兴趣的:(深入理解Jmeter常用定时器)