默认情况下,在每个采样器之前没有任何延时,这样不能很好的模拟现实生活中人们访问网页,因为现实生活中人们点击一个请求后,会有一定的时间,然后再点击下一个请求,JMeter提供了定时器来模拟这种行为。
定时器在采样器之前运行,并且在作用域内的每个采样器之前均运行一次,如果想要定时器只在某一个采样器之前运行,则把该定时器放在采样器的子节点即可。
1.Constant Timer(固定定时器)
如果想要采样器在运行之前都暂停相同的时间,则可以使用该定时器。
说明:Thread Delay:暂停时间,单位为毫秒。
2.Gaussian Random Timer(高斯随机定时器)
如果每个采样器执行之前暂停的时间符合高斯分布,则可以使用高斯随机定时器模拟这种情况,总的暂停时间为高斯分布值(-1到1)乘以Deviation+Constant Delay Offset时间,所以最终的时间为Constant Delay Offset-Deviation至Constant Delay Offset+Deviation。
说明:在实际的测试过程中,可以根据需要选择该定时器进行操作。
3.Synchinzing Timer
该定时器可以实现当设置的用户数同时到达时,同时对服务器进行请求,实现了loadrunner中集合点。
说明:Number of Simulated Users to Group by:当设置的用户数到达时同时对服务器进行并发。Timeout in milliseconds:如果设置的时间内没有达到上一个设置的用户数,则无论如何都进行并发操作。
4.Uniform Random Timer(统一随机定时器)
该定时器在每个请求之前暂停随机的时间,每个时间间隔都有相同发生的概率,总的暂停时间为0至Random Delay设置的值中的随机数加上Constant Delay Offset的值。
5.Constant Throughtput Timer
该定时器可以让JMeter以设置的吞吐量(TPS,这里是每分钟的请求数)对服务器进行请求。
Target thoughtput:设置的吞吐量,每分钟请求数。Calculate Throughtput:计算的范围。
this thread only:每一个线程都按照设置的吞吐量进行发送请求,如下:线程组中设置循环次数为2,定时器中设置目标云吞吐量为30/分钟,即没两秒一次,可以看到,每个线程,都是按照没两秒一次进行请求。
all active threads:设置的目标吞吐量在所有线程组下的所有线程下划分,每个线程组根据他上次延迟时间计算本次延迟时间,在这种情况下,其他线程组需要有相同设置的定时器,如下,线程组循环次数为1,两个定时器,每个定时器的目标吞吐量为60,即每个线程按照每分钟30(60/2),每两秒一次进行请求:
all active threads(threads):和上一个类似,只是根据任意线程上次运行时间延迟当前线程,如下:线程组循环次数均为1,定时器的目标吞吐量为60,两个线程每个线程每分钟30次请求,没两秒一次,每一次请求根据任一线程上一次的延时时间延时当前线程。
all active threads in current thread group:每一个线程运行时间根据当前线程组下的线程数进行划分,每一次延迟时间根据这个线程上次延迟时间进行延迟,如下:线程组循环次数为2,定时器设置目标吞吐量为60,每个线程每分钟30次,每两秒1次。
all active threads in current thread group(shared):和上一个类似,只是每个线程的延迟时间是根据任意线程的上一次延迟时间计算延迟时间。