JMETER(五) - Timer(定时器)

所有“Timer”测试元素的目的是将代表虚拟用户的 JMeter 线程暂停一段时间。使用计时器的主要目标是模拟虚拟用户的“思考时间”。在负载测试的世界中,“思考时间”代表模拟真实的用户行为,这会导致人们在与 Web 应用程序的交互之间等待

作用域
定时器在其作用域内的每个采样器之前执行。如果定时器中有多个定时器,则所有定时器都将在采样器发生之前处理。另外,定时器执行时间没有被记录,所以如果定时器暂停线程1秒,采样器执行时间为3秒,3秒将被记录为采样器执行时间

Constant Timer


常量定时器 用于在请求之间暂停每个线程相同的“思考时间”

Constant Timer用来设置固定延时,放在某个请求下,表示在指定延时时间后,再开始发起请求操作,一般用来模拟思考时间(实际操作中,模拟真实用户在操作过程中的等待时间)使得业务逻辑更接近实际操作情况。

示例


  • 添加一个HTTP请求
  • HTTP请求下添加一个Constant Timer
  • 添加查看结果树,测试运行结果

运行结果树查看结果

**注: 还可以在 Thread Delay 输入函数或变量。

Uniform Random Timer


此计时器将没给线程请求暂停随机一段时间,使用每个时间间隔具有相同的发生概率,总延迟 是随机值和偏移值的总和。

参数

  • Random Delay Maximum (in milliseconds): 随机延迟最大值,最大随机毫秒数 暂停。
  • Constant Delay Offset (in milliseconds): 恒定延迟偏移,此外要暂停的毫秒数 到随机延迟。

Synchronizing Timer

同步定时器实现LR集合点功能,在性能测试中模拟多用户并发场景,即多个线程在同一时刻并发请求

Synchronizing Timer是在每个sampler(采样器)之前执行的,而不是之后,不管这个定时器的位置放在sampler之后,还是之前.

参数

  • Number of Simulated Users to Group by: 要分组的并发用户数,一次释放的线程数。如3,每3个用户同时启动(集合点集合够N个用户开始并发),如果设置为0,等同于设置为线程租中的线程数量

  • Timeout in milliseconds: 超时(以毫秒为单位),如果设置为 0,计时器将等待线程数达到“要分组的同时用户数”中的值。如果大于 0,则计时器将以最大“超时(毫秒为单位)”等待线程数。如果在超时间隔后未达到等待的用户数,计时器将停止等待。默认值为 0

注:

  • 如果设置Timeout in milliseconds为0,且线程数量无法达到"Number of Simultaneous Users toGroup by"中设置的值,那么Test将无限等待,除非手动终止。

  • Synchronizing timer 仅作用于同一个JVM中的线程,所以,如果使用并发测试,确保"Number of Simultaneous Users toGroup by"中设置的值不大于它所在线程组包含的用户数。

Constant Throughput Timer


1.什么是Constant Throughput Timer
2.如何使用Constant Throughput Timer

什么是Constant Throughput Timer


Throughput 含义

Throughput 是管理请求的频率(单位时间内请求的次数),这对于模拟真实的测试很重要.

为什么要测试 Throughput

JMeter 是一种流行的开源负载测试工具,通过线程模拟用户,测试检查其应用行为,识别瓶颈,并可以修复错误。因此,在测试中模拟真实的用户模式非常重要。

  测试中可能遇到的问题

  测试计划中通常包含HTTP请求和查看结果树等。在这种情况下,JMETER将发送逐 个请求,可能会出现:

  • 请求之间存在间隔
  • 可能会出现网络延迟
  • 出现人为的延迟,例如:在点击链接时候 有的人立即点击,有的人会思考一下才会触发点击链接

测试中要注重用户的实际行为,模拟用户的实际行为,对测试有帮助。因此可以使用 Constant Throughput Timer 来解决。

可能存在的情况:有固定的用户数量,需要使用每分钟不同数量的请求来测试应用程序。

  • 使用 Thread Group 可以设置用户的数量。

  • 使用 Constant Throughput Timer 控制请求的频率(在特定时间内启动的频率)。

如何使用Constant Throughput Timer


  • Constant Throughput Timer 是一个计算器,用于检查每个时间单位的请求数。从第一个样本的开始到最后一个样本结束的请求数,包括间隔。吞吐量 =(请求数)/(总时间)

  • Constant Throughput Timer计时器使我们能够保持总吞吐量恒定。当然,如果服务器无法处理这样的负载,吞吐量会更低。

  • 恒定吞吐量计时器可以方便地控制给定的取样器发送请求的吞吐量

  • 恒定吞吐量计时器只能暂停JMeter线程,以减慢它们的速度以达到目标吞吐量。因此请确保有足够的线程以保证每秒所需的请求数。另外,请注意,恒定吞吐量计时器仅在分钟级别足够精确。因此,您需要正确计算 ramp-up,并让您的测试运行足够长的时间。

  • 恒定吞吐量计时器可以暂停线程,以便可以实现面向目标的场景。面向目标的场景是一种负载测试类型,其目标不是模拟 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 基本相同,唯一的区别是,每个活跃线程都会在所有活跃线程的上一次运行结束后等待合理的时间后再次运行

posted @ 2021-12-19 14:55  萧兮易  阅读(575)  评论(0编辑  收藏  举报