定时器
所有“Timer”测试元素的目的是将代表虚拟用户的 JMeter 线程暂停一段时间。使用计时器的主要目标是模拟虚拟用户的“思考时间”。在负载测试的世界中,“思考时间”代表模拟真实的用户行为,这会导致人们在与 Web 应用程序的交互之间等待
作用域
定时器在其作用域内的每个采样器之前执行。如果定时器中有多个定时器,则所有定时器都将在采样器发生之前处理。另外,定时器执行时间没有被记录,所以如果定时器暂停线程1秒,采样器执行时间为3秒,3秒将被记录为采样器执行时间
1、Constant Timer
Constant Timer用来设置固定延时,放在某个请求下,表示在指定延时时间后,再开始发起请求操作,一般用来模拟思考时间(实际操作中,模拟真实用户在操作过程中的等待时间)使得业务逻辑更接近实际操作情况。
Thread Delay ( in milliseconds ),线程延迟时间(ms),如:在每个采样器的执行之前增加一个5秒的延迟
2、Synchronizing Timer
同步定时器实现LR集合点功能,在性能测试中模拟多用户并发场景,即多个线程在同一时刻并发请求
Synchronizing Timer是在每个sampler(采样器)之前执行的,而不是之后,不管这个定时器的位置放在sampler之后,还是之前.
参数说明:
Number of Simulated Users to Group by:
要按分组的模拟用户数,如3,每3个用户同时启动(集合点集合够N个用户开始并发),如果设置为0,等同于设置为线程租中的线程数量
Timeout in milliseconds:等待时间(ms)
如果设置为0,Timer将会等待线程数达到“Number of Simulated Users to Group by”中设置的值才释放,如果大于0,那么如果炒股“Timeout in milliseconds”中设置的最大等待值后还没有到达指定的线程数,Timer将不再等待,释放已到达的线程。
注:
如果设置Timeout in milliseconds为0,且线程数量无法达到"Number of Simultaneous Users toGroup by"中设置的值,那么Test将无限等待,除非手动终止。
Synchronizing timer 仅作用于同一个JVM中的线程,所以,如果使用并发测试,确保"Number of Simultaneous Users toGroup by"中设置的值不大于它所在线程组包含的用户数。
3、Constant Throughput Timer
恒定吞吐量计时器可以方便地控制给定的取样器发送请求的吞吐量
恒定吞吐量计时器只能暂停JMeter 线程以减慢它们以达到目标吞吐量,因此请确保您有足够的线程以保证每秒所需的请求量
恒定吞吐量计时器可以暂停线程,以便可以实现面向目标的场景。面向目标的场景是一种负载测试类型,其目标不是模拟 X 个并发用户,而是每秒 X 个请求。恒定吞吐量计时器精确地在“分钟”级别上工作,因此请确保您的测试持续足够长(1 分钟或更长时间)并使用合理的加速时间来避免峰值(除非您正在做某种形式的压力测试)
参数说明:
Target throughput(in samples per minute):目标吞吐量,每分钟发送的请求数
Calculate Throughput based on(计算吞吐量策略)
- this thread only:控制每个线程的吞吐量,总的吞吐量为设置的 target Throughput 乘以线程的数量。
- all active threads : 设置的target Throughput 将分配在每个活跃线程上,每个活跃线程在上一次运行结束后等待合理的时间后再次运行。活跃线程指同一时刻同时运行的线程。
- all active threads in current thread group :设置的target Throughput将分配在当前线程组的每一个活跃线程上,当测试计划中只有一个线程组时,该选项和all active threads选项的效果完全相同
- all active threads (shared ):与All active threads 的选项基本相同,唯一的区别是,每个活跃线程都会在所有活跃线程上一次运行结束后等待合理的时间后再次运行。
- all cative threads in current thread group (shared ):与All active threads in current thread group 基本相同,唯一的区别是,每个活跃线程都会在所有活跃线程的上一次运行结束后等待合理的时间后再次运行
4、Uniform Random Timer
5、Poisson Random Timer
6、Precise Throughput Timer
7、Gaussian Random Timer
8、JSR223 Timer
9、BeanShell Timer