Jmeter中的定时器

devtools/2024/11/25 16:54:53/

 4)定时器

1780e27559974fc3ab94d6de5105458b.png

1--固定定时器

功能特点

  • 固定延迟:在每个请求之间添加固定的延迟时间。
  • 精确控制:可以精确控制请求的发送频率。
  • 简单易用:配置简单,易于理解和使用。

配置步骤

  1. 添加固定定时器

    • 右键点击需要添加定时器的请求或线程组。
    • 选择“添加” -> “定时器” -> “固定定时器”(Constant Timer)。
  2. 配置固定定时器

    • 名称:给固定定时器一个有意义的名称。
    • 线程延迟(毫秒):设置每个请求之间的固定延迟时间(单位为毫秒)。

示例配置

假设我们需要测试一个Web应用,并在每个请求之间添加2秒(2000毫秒)的固定延迟。

  1. 创建测试计划

    • 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
  2. 添加线程组

    • 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
  3. 添加HTTP请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:请求名称(例如“获取用户列表”)。
      • 服务器名称或IP:目标服务器的地址(例如example.com)。
      • 端口号:目标服务器的端口(例如80)。
      • 协议:HTTP或HTTPS(例如HTTP)。
      • 方法:请求的方法(例如GET)。
      • 路径:请求的路径(例如/api/users)。
  4. 添加固定定时器

    • 右键点击HTTP请求 -> 添加 -> 定时器 -> 固定定时器。
    • 配置固定定时器:
      • 名称:固定定时器
      • 线程延迟(毫秒):2000(表示每个请求之间延迟2秒)
  5. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。

优化建议

  1. 延迟时间

    • 根据实际需求设置合适的延迟时间。过短的延迟可能导致服务器过载,过长的延迟可能无法充分测试系统的性能。
  2. 放置位置

    • 固定定时器可以放在线程组级别或特定请求级别。放在线程组级别会影响该线程组中的所有请求,放在特定请求级别只影响该请求。
  3. 多请求场景

    • 如果有多个请求需要添加固定延迟,可以为每个请求单独添加固定定时器,或者将多个请求放在一个线程组中,然后在该线程组中添加固定定时器。
  4. 性能影响

    • 固定定时器不会显著影响测试性能,但在大规模性能测试中,仍需注意总体的测试设计,确保延迟时间合理。
  5. 组合使用

    • 固定定时器可以与其他定时器(如高斯随机定时器、统一随机定时器等)组合使用,以实现更复杂的延迟策略。

示例配置详细说明

假设我们有一个简单的测试计划,包含一个线程组和一个HTTP请求,并希望在每个请求之间添加2秒的固定延迟。

  1. 创建测试计划

    • 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
  2. 添加线程组

    • 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
    • 配置线程组:
      • 线程数:10(模拟10个用户)
      • 循环次数:10(每个用户发送10次请求)
      • 启动延迟:0(立即启动)
  3. 添加HTTP请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:获取用户列表
      • 服务器名称或IP:example.com
      • 端口号:80
      • 协议:HTTP
      • 方法:GET
      • 路径:/api/users
  4. 添加固定定时器

    • 右键点击HTTP请求 -> 添加 -> 定时器 -> 固定定时器。
    • 配置固定定时器:
      • 名称:固定定时器
      • 线程延迟(毫秒):2000
  5. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。

 

6f46fec9704c415b9de29973359a31a2.png


2--统一随机定时器

功能特点

  • 随机延迟:在每个请求之间添加随机的延迟时间。
  • 均匀分布:延迟时间在指定的范围内均匀分布。
  • 灵活控制:可以精确控制请求的发送频率,同时引入随机性。

配置步骤

  1. 添加统一随机定时器

    • 右键点击需要添加定时器的请求或线程组。
    • 选择“添加” -> “定时器” -> “统一随机定时器”(Uniform Random Timer)。
  2. 配置统一随机定时器

    • 名称:给统一随机定时器一个有意义的名称。
    • 偏移(毫秒):设置延迟时间的上下限范围。
    • 延迟(毫秒):设置基础延迟时间。

参数说明

  • 偏移(毫秒):设置随机延迟时间的范围。例如,如果设置为1000毫秒,则延迟时间将在基础延迟时间的基础上随机增加或减少最多1000毫秒。
  • 延迟(毫秒):设置基础延迟时间。例如,如果设置为2000毫秒,则每个请求的基础延迟时间为2000毫秒。

示例配置

假设我们需要测试一个Web应用,并在每个请求之间添加2秒(2000毫秒)的基础延迟,同时在±1秒(1000毫秒)的范围内随机波动。

  1. 创建测试计划

    • 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
  2. 添加线程组

    • 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
  3. 添加HTTP请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:请求名称(例如“获取用户列表”)。
      • 服务器名称或IP:目标服务器的地址(例如example.com)。
      • 端口号:目标服务器的端口(例如80)。
      • 协议:HTTP或HTTPS(例如HTTP)。
      • 方法:请求的方法(例如GET)。
      • 路径:请求的路径(例如/api/users)。
  4. 添加统一随机定时器

    • 右键点击HTTP请求 -> 添加 -> 定时器 -> 统一随机定时器。
    • 配置统一随机定时器:
      • 名称:统一随机定时器
      • 偏移(毫秒):1000
      • 延迟(毫秒):2000
  5. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。

优化建议

  1. 延迟时间

    • 根据实际需求设置合适的基础延迟时间和偏移时间。过短的延迟可能导致服务器过载,过长的延迟可能无法充分测试系统的性能。
  2. 放置位置

    • 统一随机定时器可以放在线程组级别或特定请求级别。放在线程组级别会影响该线程组中的所有请求,放在特定请求级别只影响该请求。
  3. 多请求场景

    • 如果有多个请求需要添加随机延迟,可以为每个请求单独添加统一随机定时器,或者将多个请求放在一个线程组中,然后在该线程组中添加统一随机定时器。
  4. 性能影响

    • 统一随机定时器不会显著影响测试性能,但在大规模性能测试中,仍需注意总体的测试设计,确保延迟时间合理。
  5. 组合使用

    • 统一随机定时器可以与其他定时器(如固定定时器、高斯随机定时器等)组合使用,以实现更复杂的延迟策略。

示例配置详细说明

假设我们有一个简单的测试计划,包含一个线程组和一个HTTP请求,并希望在每个请求之间添加2秒的基础延迟,同时在±1秒的范围内随机波动。

  1. 创建测试计划

    • 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
  2. 添加线程组

    • 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
    • 配置线程组:
      • 线程数:10(模拟10个用户)
      • 循环次数:10(每个用户发送10次请求)
      • 启动延迟:0(立即启动)
  3. 添加HTTP请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:获取用户列表
      • 服务器名称或IP:example.com
      • 端口号:80
      • 协议:HTTP
      • 方法:GET
      • 路径:/api/users
  4. 添加统一随机定时器

    • 右键点击HTTP请求 -> 添加 -> 定时器 -> 统一随机定时器。
    • 配置统一随机定时器:
      • 名称:统一随机定时器
      • 偏移(毫秒):1000
      • 延迟(毫秒):2000
  5. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。

 

 

8cb6323058e5455abd549dac0a55b158.png


3--Precise Throughpupt Timer

功能特点

  • 精确控制请求速率:确保在指定的时间段内发送指定数量的请求。
  • 灵活配置:可以设置每分钟发送的请求数量或每个线程组的吞吐量。
  • 适用于高精度测试:特别适合需要精确控制请求频率的性能测试。

配置步骤

  1. 添加精确吞吐量定时器

    • 右键点击需要添加定时器的请求或线程组。
    • 选择“添加” -> “定时器” -> “精确吞吐量定时器”(Precise Throughput Timer)。
  2. 配置精确吞吐量定时器

    • 名称:给精确吞吐量定时器一个有意义的名称。
    • 吞吐量:设置每分钟发送的请求数量。
    • 持续时间(毫秒):(可选)设置定时器的持续时间,超过该时间后定时器将停止工作。

参数说明

  • 吞吐量:设置每分钟发送的请求数量。例如,如果设置为60,则每分钟发送60个请求。
  • 持续时间(毫秒):设置定时器的持续时间,超过该时间后定时器将停止工作。如果不设置,定时器将一直工作直到测试结束。

示例配置

假设我们需要测试一个Web应用,并确保每分钟发送60个请求。

  1. 创建测试计划

    • 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
  2. 添加线程组

    • 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
    • 配置线程组:
      • 线程数:10(模拟10个用户)
      • 循环次数:10(每个用户发送10次请求)
      • 启动延迟:0(立即启动)
  3. 添加HTTP请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:请求名称(例如“获取用户列表”)。
      • 服务器名称或IP:目标服务器的地址(例如example.com)。
      • 端口号:目标服务器的端口(例如80)。
      • 协议:HTTP或HTTPS(例如HTTP)。
      • 方法:请求的方法(例如GET)。
      • 路径:请求的路径(例如/api/users)。
  4. 添加精确吞吐量定时器

    • 右键点击HTTP请求 -> 添加 -> 定时器 -> 精确吞吐量定时器。
    • 配置精确吞吐量定时器:
      • 名称:精确吞吐量定时器
      • 吞吐量:60(每分钟发送60个请求)
      • 持续时间(毫秒):(可选)如果不设置,定时器将一直工作直到测试结束
  5. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。

优化建议

  1. 吞吐量设置

    • 根据实际需求设置合适的吞吐量。过高的吞吐量可能导致服务器过载,过低的吞吐量可能无法充分测试系统的性能。
  2. 持续时间设置

    • 如果需要在特定时间段内控制请求速率,可以设置持续时间。否则,定时器将一直工作直到测试结束。
  3. 放置位置

    • 精确吞吐量定时器可以放在线程组级别或特定请求级别。放在线程组级别会影响该线程组中的所有请求,放在特定请求级别只影响该请求。
  4. 多请求场景

    • 如果有多个请求需要控制请求速率,可以为每个请求单独添加精确吞吐量定时器,或者将多个请求放在一个线程组中,然后在该线程组中添加精确吞吐量定时器。
  5. 性能影响

    • 精确吞吐量定时器可能会对测试性能产生一定影响,特别是在大规模性能测试中。可以通过调整吞吐量和持续时间来优化性能。
  6. 组合使用

    • 精确吞吐量定时器可以与其他定时器(如固定定时器、统一随机定时器等)组合使用,以实现更复杂的延迟策略。

示例配置详细说明

假设我们有一个简单的测试计划,包含一个线程组和一个HTTP请求,并希望每分钟发送60个请求。

  1. 创建测试计划

    • 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
  2. 添加线程组

    • 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
    • 配置线程组:
      • 线程数:10(模拟10个用户)
      • 循环次数:10(每个用户发送10次请求)
      • 启动延迟:0(立即启动)
  3. 添加HTTP请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:获取用户列表
      • 服务器名称或IP:example.com
      • 端口号:80
      • 协议:HTTP
      • 方法:GET
      • 路径:/api/users
  4. 添加精确吞吐量定时器

    • 右键点击HTTP请求 -> 添加 -> 定时器 -> 精确吞吐量定时器。
    • 配置精确吞吐量定时器:
      • 名称:精确吞吐量定时器
      • 吞吐量:60(每分钟发送60个请求)
      • 持续时间(毫秒):(可选)如果不设置,定时器将一直工作直到测试结束
  5. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。

 

c3d4963fde3e4495825e1e2264dfdad2.png


4--Constant Throughpupt Timer

功能特点

  • 恒定请求速率:确保在指定的时间段内保持恒定的吞吐量。
  • 灵活配置:可以设置每分钟发送的请求数量或每个线程组的吞吐量。
  • 适用于稳定负载测试:特别适合需要稳定控制请求频率的性能测试。

配置步骤

  1. 添加恒定吞吐量定时器

    • 右键点击需要添加定时器的请求或线程组。
    • 选择“添加” -> “定时器” -> “恒定吞吐量定时器”(Constant Throughput Timer)。
  2. 配置恒定吞吐量定时器

    • 名称:给恒定吞吐量定时器一个有意义的名称。
    • 目标吞吐量(每分钟):设置每分钟发送的请求数量。
    • 计算所有子采样器:选择是否将定时器应用于当前线程组中的所有子采样器。

参数说明

  • 目标吞吐量(每分钟):设置每分钟发送的请求数量。例如,如果设置为60,则每分钟发送60个请求。
  • 计算所有子采样器:选择是否将定时器应用于当前线程组中的所有子采样器。如果选择“是”,则定时器将影响整个线程组中的所有请求;如果选择“否”,则定时器仅影响当前请求。

示例配置

假设我们需要测试一个Web应用,并确保每分钟发送60个请求。

  1. 创建测试计划

    • 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
  2. 添加线程组

    • 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
    • 配置线程组:
      • 线程数:10(模拟10个用户)
      • 循环次数:10(每个用户发送10次请求)
      • 启动延迟:0(立即启动)
  3. 添加HTTP请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:请求名称(例如“获取用户列表”)。
      • 服务器名称或IP:目标服务器的地址(例如example.com)。
      • 端口号:目标服务器的端口(例如80)。
      • 协议:HTTP或HTTPS(例如HTTP)。
      • 方法:请求的方法(例如GET)。
      • 路径:请求的路径(例如/api/users)。
  4. 添加恒定吞吐量定时器

    • 右键点击线程组 -> 添加 -> 定时器 -> 恒定吞吐量定时器。
    • 配置恒定吞吐量定时器:
      • 名称:恒定吞吐量定时器
      • 目标吞吐量(每分钟):60(每分钟发送60个请求)
      • 计算所有子采样器:是(将定时器应用于整个线程组中的所有请求)
  5. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。

优化建议

  1. 吞吐量设置

    • 根据实际需求设置合适的吞吐量。过高的吞吐量可能导致服务器过载,过低的吞吐量可能无法充分测试系统的性能。
  2. 计算所有子采样器

    • 如果需要控制整个线程组中的所有请求,选择“计算所有子采样器”。否则,选择“否”以仅影响当前请求。
  3. 放置位置

    • 恒定吞吐量定时器可以放在线程组级别或特定请求级别。放在线程组级别会影响该线程组中的所有请求,放在特定请求级别只影响该请求。
  4. 多请求场景

    • 如果有多个请求需要控制请求速率,可以为每个请求单独添加恒定吞吐量定时器,或者将多个请求放在一个线程组中,然后在该线程组中添加恒定吞吐量定时器。
  5. 性能影响

    • 恒定吞吐量定时器可能会对测试性能产生一定影响,特别是在大规模性能测试中。可以通过调整吞吐量来优化性能。
  6. 组合使用

    • 恒定吞吐量定时器可以与其他定时器(如固定定时器、统一随机定时器等)组合使用,以实现更复杂的延迟策略。

示例配置详细说明

假设我们有一个简单的测试计划,包含一个线程组和一个HTTP请求,并希望每分钟发送60个请求。

  1. 创建测试计划

    • 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
  2. 添加线程组

    • 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
    • 配置线程组:
      • 线程数:10(模拟10个用户)
      • 循环次数:10(每个用户发送10次请求)
      • 启动延迟:0(立即启动)
  3. 添加HTTP请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:获取用户列表
      • 服务器名称或IP:example.com
      • 端口号:80
      • 协议:HTTP
      • 方法:GET
      • 路径:/api/users
  4. 添加恒定吞吐量定时器

    • 右键点击线程组 -> 添加 -> 定时器 -> 恒定吞吐量定时器。
    • 配置恒定吞吐量定时器:
      • 名称:恒定吞吐量定时器
      • 目标吞吐量(每分钟):60(每分钟发送60个请求)
      • 计算所有子采样器:是(将定时器应用于整个线程组中的所有请求)
  5. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。

a256404116ae40338ca833d8703212d7.png

 


5--JSR223 Timmer

功能特点

  • 自定义延迟逻辑:使用脚本语言动态计算请求之间的延迟时间。
  • 灵活控制:可以根据测试数据和条件动态调整延迟时间。
  • 支持多种脚本语言:支持 Groovy、JavaScript、BeanShell 等多种脚本语言。

支持的脚本语言

  • Groovy:推荐使用,性能优越且功能强大。
  • JavaScript:支持 ECMAScript 标准。
  • BeanShell:支持 Java 语法。
  • 其他语言:支持任何符合 JSR223 规范的脚本语言。

配置步骤

  1. 添加 JSR223 定时器

    • 右键点击需要添加定时器的请求或线程组。
    • 选择“添加” -> “定时器” -> “JSR223 定时器”。
  2. 配置 JSR223 定时器

    • 名称:给 JSR223 定时器一个有意义的名称。
    • 脚本语言:选择使用的脚本语言(例如 Groovy)。
    • 脚本文件:选择脚本文件路径(可选,如果脚本较长或需要版本控制)。
    • 脚本:直接在脚本编辑框中编写脚本。
    • 参数:定义脚本中使用的参数(可选)。

示例配置

假设我们需要测试一个Web应用,并在每个请求之间添加一个动态计算的延迟时间,延迟时间基于当前请求的响应时间。

  1. 创建测试计划

    • 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
  2. 添加线程组

    • 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
    • 配置线程组:
      • 线程数:10(模拟10个用户)
      • 循环次数:10(每个用户发送10次请求)
      • 启动延迟:0(立即启动)
  3. 添加HTTP请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:请求名称(例如“获取用户列表”)。
      • 服务器名称或IP:目标服务器的地址(例如example.com)。
      • 端口号:目标服务器的端口(例如80)。
      • 协议:HTTP或HTTPS(例如HTTP)。
      • 方法:请求的方法(例如GET)。
      • 路径:请求的路径(例如/api/users)。
  4. 添加 JSR223 定时器

    • 右键点击HTTP请求 -> 添加 -> 定时器 -> JSR223 定时器。
    • 配置 JSR223 定时器:
      • 名称:JSR223 定时器
      • 脚本语言:Groovy
      • 脚本:在脚本编辑框中编写以下 Groovy 脚本:
        // 获取上一个请求的响应时间
        int responseTime = prev.getTime()// 计算延迟时间,例如延迟时间为响应时间的一半
        int delay = responseTime / 2// 返回延迟时间(单位为毫秒)
        return delay
  5. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。

优化建议

  1. 脚本语言选择

    • 推荐使用 Groovy,因为它性能优越且功能强大,是 JMeter 官方推荐的脚本语言。
  2. 脚本文件

    • 如果脚本较长或需要版本控制,可以将脚本保存到文件中,并在 JSR223 定时器中选择脚本文件路径。
  3. 参数

    • 如果脚本需要使用外部参数,可以在“参数”部分定义参数,并在脚本中引用这些参数。
  4. 性能影响

    • 注意复杂脚本可能会对测试性能产生影响,特别是在大规模性能测试中。可以通过优化脚本和减少不必要的操作来提高性能。
  5. 错误处理

    • 在脚本中添加适当的错误处理逻辑,确保脚本在遇到异常时能够优雅地处理。
  6. 日志记录

    • 使用日志记录功能可以帮助调试和分析脚本执行情况,确保日志文件路径有效且有足够的写权限。

示例配置详细说明

假设我们有一个简单的测试计划,包含一个线程组和一个HTTP请求,并希望在每个请求之间添加一个动态计算的延迟时间,延迟时间基于当前请求的响应时间。

  1. 创建测试计划

    • 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
  2. 添加线程组

    • 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
    • 配置线程组:
      • 线程数:10(模拟10个用户)
      • 循环次数:10(每个用户发送10次请求)
      • 启动延迟:0(立即启动)
  3. 添加HTTP请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:获取用户列表
      • 服务器名称或IP:example.com
      • 端口号:80
      • 协议:HTTP
      • 方法:GET
      • 路径:/api/users
  4. 添加 JSR223 定时器

    • 右键点击HTTP请求 -> 添加 -> 定时器 -> JSR223 定时器。
    • 配置 JSR223 定时器:
      • 名称:JSR223 定时器
      • 脚本语言:Groovy
      • 脚本:在脚本编辑框中编写以下 Groovy 脚本:
        // 获取上一个请求的响应时间
        int responseTime = prev.getTime()// 计算延迟时间,例如延迟时间为响应时间的一半
        int delay = responseTime / 2// 返回延迟时间(单位为毫秒)
        return delay
  5. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。

 

2399a88ca6fc48039ef3eebff2ffbadf.png


6--Synchronizing Timer

功能特点

  • 并发控制:确保一组线程在同一时间点执行某个请求。
  • 灵活配置:可以设置等待的线程数和超时时间。
  • 适用于压力测试:特别适合需要模拟大量并发用户的场景。

配置步骤

  1. 添加同步定时器

    • 右键点击需要添加定时器的请求或线程组。
    • 选择“添加” -> “定时器” -> “同步定时器”(Synchronizing Timer)。
  2. 配置同步定时器

    • 名称:给同步定时器一个有意义的名称。
    • 数量的线程(用户):设置需要等待的线程数。
    • 超时(毫秒):设置等待的最大时间(可选)。

参数说明

  • 数量的线程(用户):设置需要等待的线程数。例如,如果设置为10,则需要等待10个线程都到达同步点后才会继续执行。
  • 超时(毫秒):设置等待的最大时间。如果在指定时间内没有达到设定的线程数,定时器将释放已等待的线程。如果不设置,定时器将无限期等待。

示例配置

假设我们需要测试一个Web应用,并确保每次有10个用户同时执行某个请求。

  1. 创建测试计划

    • 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
  2. 添加线程组

    • 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
    • 配置线程组:
      • 线程数:20(模拟20个用户)
      • 循环次数:1(每个用户发送1次请求)
      • 启动延迟:0(立即启动)
  3. 添加HTTP请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:请求名称(例如“获取用户列表”)。
      • 服务器名称或IP:目标服务器的地址(例如example.com)。
      • 端口号:目标服务器的端口(例如80)。
      • 协议:HTTP或HTTPS(例如HTTP)。
      • 方法:请求的方法(例如GET)。
      • 路径:请求的路径(例如/api/users)。
  4. 添加同步定时器

    • 右键点击HTTP请求 -> 添加 -> 定时器 -> 同步定时器。
    • 配置同步定时器:
      • 名称:同步定时器
      • 数量的线程(用户):10(每次等待10个线程)
      • 超时(毫秒):(可选)如果不设置,定时器将无限期等待
  5. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。

优化建议

  1. 线程数设置

    • 根据实际需求设置合适的线程数。确保线程数足够大,以便能够达到所需的并发效果。
  2. 超时设置

    • 如果需要确保测试在一定时间内完成,可以设置超时时间。超时时间应根据系统响应时间和测试需求来设置。
  3. 放置位置

    • 同步定时器可以放在线程组级别或特定请求级别。放在线程组级别会影响该线程组中的所有请求,放在特定请求级别只影响该请求。
  4. 多请求场景

    • 如果有多个请求需要同步执行,可以为每个请求单独添加同步定时器,或者将多个请求放在一个线程组中,然后在该线程组中添加同步定时器。
  5. 性能影响

    • 同步定时器可能会对测试性能产生一定影响,特别是在大规模性能测试中。可以通过调整线程数和超时时间来优化性能。
  6. 组合使用

    • 同步定时器可以与其他定时器(如固定定时器、统一随机定时器等)组合使用,以实现更复杂的延迟策略。

示例配置详细说明

假设我们有一个简单的测试计划,包含一个线程组和一个HTTP请求,并希望每次有10个用户同时执行某个请求。

  1. 创建测试计划

    • 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
  2. 添加线程组

    • 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
    • 配置线程组:
      • 线程数:20(模拟20个用户)
      • 循环次数:1(每个用户发送1次请求)
      • 启动延迟:0(立即启动)
  3. 添加HTTP请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:获取用户列表
      • 服务器名称或IP:example.com
      • 端口号:80
      • 协议:HTTP
      • 方法:GET
      • 路径:/api/users
  4. 添加同步定时器

    • 右键点击HTTP请求 -> 添加 -> 定时器 -> 同步定时器。
    • 配置同步定时器:
      • 名称:同步定时器
      • 数量的线程(用户):10(每次等待10个线程)
      • 超时(毫秒):(可选)如果不设置,定时器将无限期等待
  5. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。

8739ea621ad24a9ab9e7087164e4e6a0.png

 


7--泊松随机定时器

功能特点

  • 泊松分布:使用泊松分布生成随机延迟时间,使延迟时间更加自然和随机。
  • 灵活配置:可以设置平均延迟时间和偏差系数。
  • 适用于模拟真实用户行为:特别适合需要模拟真实用户行为的性能测试。

配置步骤

  1. 添加泊松随机定时器

    • 右键点击需要添加定时器的请求或线程组。
    • 选择“添加” -> “定时器” -> “泊松随机定时器”(Poisson Random Timer)。
  2. 配置泊松随机定时器

    • 名称:给泊松随机定时器一个有意义的名称。
    • 常量延迟偏移(毫秒):设置平均延迟时间。
    • 泊松分布的lambda值:设置泊松分布的λ值(Lambda值),控制随机延迟的分布。

参数说明

  • 常量延迟偏移(毫秒):设置平均延迟时间。这是泊松分布的期望值(平均值)。
  • 泊松分布的lambda值:设置泊松分布的λ值。λ值越大,随机延迟的波动范围越大。

示例配置

假设我们需要测试一个Web应用,并在每个请求之间添加基于泊松分布的随机延迟时间,平均延迟时间为2000毫秒(2秒)。

  1. 创建测试计划

    • 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
  2. 添加线程组

    • 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
    • 配置线程组:
      • 线程数:10(模拟10个用户)
      • 循环次数:10(每个用户发送10次请求)
      • 启动延迟:0(立即启动)
  3. 添加HTTP请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:请求名称(例如“获取用户列表”)。
      • 服务器名称或IP:目标服务器的地址(例如example.com)。
      • 端口号:目标服务器的端口(例如80)。
      • 协议:HTTP或HTTPS(例如HTTP)。
      • 方法:请求的方法(例如GET)。
      • 路径:请求的路径(例如/api/users)。
  4. 添加泊松随机定时器

    • 右键点击HTTP请求 -> 添加 -> 定时器 -> 泊松随机定时器。
    • 配置泊松随机定时器:
      • 名称:泊松随机定时器
      • 常量延迟偏移(毫秒):2000(平均延迟时间为2000毫秒)
      • 泊松分布的lambda值:1.0(λ值为1.0,表示标准泊松分布)
  5. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。

优化建议

  1. 平均延迟时间

    • 根据实际需求设置合适的平均延迟时间。过短的延迟可能导致服务器过载,过长的延迟可能无法充分测试系统的性能。
  2. λ值设置

    • λ值控制随机延迟的分布。较大的λ值会导致更大的随机波动,较小的λ值会使延迟时间更集中于平均值。根据测试需求选择合适的λ值。
  3. 放置位置

    • 泊松随机定时器可以放在线程组级别或特定请求级别。放在线程组级别会影响该线程组中的所有请求,放在特定请求级别只影响该请求。
  4. 多请求场景

    • 如果有多个请求需要添加随机延迟,可以为每个请求单独添加泊松随机定时器,或者将多个请求放在一个线程组中,然后在该线程组中添加泊松随机定时器。
  5. 性能影响

    • 泊松随机定时器可能会对测试性能产生一定影响,特别是在大规模性能测试中。可以通过调整平均延迟时间和λ值来优化性能。
  6. 组合使用

    • 泊松随机定时器可以与其他定时器(如固定定时器、统一随机定时器等)组合使用,以实现更复杂的延迟策略。

示例配置详细说明

假设我们有一个简单的测试计划,包含一个线程组和一个HTTP请求,并希望在每个请求之间添加基于泊松分布的随机延迟时间,平均延迟时间为2000毫秒。

  1. 创建测试计划

    • 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
  2. 添加线程组

    • 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
    • 配置线程组:
      • 线程数:10(模拟10个用户)
      • 循环次数:10(每个用户发送10次请求)
      • 启动延迟:0(立即启动)
  3. 添加HTTP请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:获取用户列表
      • 服务器名称或IP:example.com
      • 端口号:80
      • 协议:HTTP
      • 方法:GET
      • 路径:/api/users
  4. 添加泊松随机定时器

    • 右键点击HTTP请求 -> 添加 -> 定时器 -> 泊松随机定时器。
    • 配置泊松随机定时器:
      • 名称:泊松随机定时器
      • 常量延迟偏移(毫秒):2000(平均延迟时间为2000毫秒)
      • 泊松分布的lambda值:1.0(λ值为1.0,表示标准泊松分布)
  5. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。

a64a63618ab14f3894a4a82c485a128c.png

 


8--高斯随机定时器

功能特点

  • 高斯分布:使用高斯分布生成随机延迟时间,使延迟时间更加自然和随机。
  • 灵活配置:可以设置平均延迟时间和标准差。
  • 适用于模拟真实用户行为:特别适合需要模拟真实用户行为的性能测试。

配置步骤

  1. 添加高斯随机定时器

    • 右键点击需要添加定时器的请求或线程组。
    • 选择“添加” -> “定时器” -> “高斯随机定时器”(Gaussian Random Timer)。
  2. 配置高斯随机定时器

    • 名称:给高斯随机定时器一个有意义的名称。
    • 常量延迟偏移(毫秒):设置平均延迟时间。
    • 高斯随机偏移(毫秒):设置标准差,控制随机延迟的分布范围。

参数说明

  • 常量延迟偏移(毫秒):设置平均延迟时间。这是高斯分布的均值(μ)。
  • 高斯随机偏移(毫秒):设置标准差(σ),控制随机延迟的分布范围。标准差越大,随机延迟的波动范围越大。

示例配置

假设我们需要测试一个Web应用,并在每个请求之间添加基于高斯分布的随机延迟时间,平均延迟时间为2000毫秒(2秒),标准差为500毫秒。

  1. 创建测试计划

    • 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
  2. 添加线程组

    • 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
    • 配置线程组:
      • 线程数:10(模拟10个用户)
      • 循环次数:10(每个用户发送10次请求)
      • 启动延迟:0(立即启动)
  3. 添加HTTP请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:请求名称(例如“获取用户列表”)。
      • 服务器名称或IP:目标服务器的地址(例如example.com)。
      • 端口号:目标服务器的端口(例如80)。
      • 协议:HTTP或HTTPS(例如HTTP)。
      • 方法:请求的方法(例如GET)。
      • 路径:请求的路径(例如/api/users)。
  4. 添加高斯随机定时器

    • 右键点击HTTP请求 -> 添加 -> 定时器 -> 高斯随机定时器。
    • 配置高斯随机定时器:
      • 名称:高斯随机定时器
      • 常量延迟偏移(毫秒):2000(平均延迟时间为2000毫秒)
      • 高斯随机偏移(毫秒):500(标准差为500毫秒)
  5. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。

优化建议

  1. 平均延迟时间

    • 根据实际需求设置合适的平均延迟时间。过短的延迟可能导致服务器过载,过长的延迟可能无法充分测试系统的性能。
  2. 标准差设置

    • 标准差控制随机延迟的分布范围。较大的标准差会导致更大的随机波动,较小的标准差会使延迟时间更集中于平均值。根据测试需求选择合适的标准差。
  3. 放置位置

    • 高斯随机定时器可以放在线程组级别或特定请求级别。放在线程组级别会影响该线程组中的所有请求,放在特定请求级别只影响该请求。
  4. 多请求场景

    • 如果有多个请求需要添加随机延迟,可以为每个请求单独添加高斯随机定时器,或者将多个请求放在一个线程组中,然后在该线程组中添加高斯随机定时器。
  5. 性能影响

    • 高斯随机定时器可能会对测试性能产生一定影响,特别是在大规模性能测试中。可以通过调整平均延迟时间和标准差来优化性能。
  6. 组合使用

    • 高斯随机定时器可以与其他定时器(如固定定时器、统一随机定时器等)组合使用,以实现更复杂的延迟策略。

示例配置详细说明

假设我们有一个简单的测试计划,包含一个线程组和一个HTTP请求,并希望在每个请求之间添加基于高斯分布的随机延迟时间,平均延迟时间为2000毫秒,标准差为500毫秒。

  1. 创建测试计划

    • 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
  2. 添加线程组

    • 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
    • 配置线程组:
      • 线程数:10(模拟10个用户)
      • 循环次数:10(每个用户发送10次请求)
      • 启动延迟:0(立即启动)
  3. 添加HTTP请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:获取用户列表
      • 服务器名称或IP:example.com
      • 端口号:80
      • 协议:HTTP
      • 方法:GET
      • 路径:/api/users
  4. 添加高斯随机定时器

    • 右键点击HTTP请求 -> 添加 -> 定时器 -> 高斯随机定时器。
    • 配置高斯随机定时器:
      • 名称:高斯随机定时器
      • 常量延迟偏移(毫秒):2000(平均延迟时间为2000毫秒)
      • 高斯随机偏移(毫秒):500(标准差为500毫秒)
  5. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。

 

dcf9804bcfeb43998bec6e9b753a07a3.png

 


9--BeanShell Timer

功能特点

  • 自定义延迟逻辑:使用 BeanShell 脚本动态计算请求之间的延迟时间。
  • 灵活控制:可以根据测试数据和条件动态调整延迟时间。
  • 支持 BeanShell 脚本:支持使用 BeanShell 脚本语言编写延迟逻辑。

配置步骤

  1. 添加 BeanShell 定时器

    • 右键点击需要添加定时器的请求或线程组。
    • 选择“添加” -> “定时器” -> “BeanShell 定时器”。
  2. 配置 BeanShell 定时器

    • 名称:给 BeanShell 定时器一个有意义的名称。
    • 文件:选择脚本文件路径(可选,如果脚本较长或需要版本控制)。
    • 脚本:直接在脚本编辑框中编写脚本。
    • 参数:定义脚本中使用的参数(可选)。

示例配置

假设我们需要测试一个Web应用,并在每个请求之间添加一个动态计算的延迟时间,延迟时间基于当前请求的响应时间。

  1. 创建测试计划

    • 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
  2. 添加线程组

    • 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
    • 配置线程组:
      • 线程数:10(模拟10个用户)
      • 循环次数:10(每个用户发送10次请求)
      • 启动延迟:0(立即启动)
  3. 添加HTTP请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:请求名称(例如“获取用户列表”)。
      • 服务器名称或IP:目标服务器的地址(例如example.com)。
      • 端口号:目标服务器的端口(例如80)。
      • 协议:HTTP或HTTPS(例如HTTP)。
      • 方法:请求的方法(例如GET)。
      • 路径:请求的路径(例如/api/users)。
  4. 添加 BeanShell 定时器

    • 右键点击HTTP请求 -> 添加 -> 定时器 -> BeanShell 定时器。
    • 配置 BeanShell 定时器:
      • 名称:BeanShell 定时器
      • 脚本:在脚本编辑框中编写以下 BeanShell 脚本:
        // 获取上一个请求的响应时间
        int responseTime = prev.getTime();// 计算延迟时间,例如延迟时间为响应时间的一半
        int delay = responseTime / 2;// 返回延迟时间(单位为毫秒)
        return delay;
  5. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。

优化建议

  1. 脚本语言选择

    • 虽然 BeanShell 是一个强大的脚本语言,但 Groovy 通常性能更好且功能更强大。如果可能,建议使用 Groovy 脚本。
  2. 脚本文件

    • 如果脚本较长或需要版本控制,可以将脚本保存到文件中,并在 BeanShell 定时器中选择脚本文件路径。
  3. 参数

    • 如果脚本需要使用外部参数,可以在“参数”部分定义参数,并在脚本中引用这些参数。
  4. 性能影响

    • 注意复杂脚本可能会对测试性能产生影响,特别是在大规模性能测试中。可以通过优化脚本和减少不必要的操作来提高性能。
  5. 错误处理

    • 在脚本中添加适当的错误处理逻辑,确保脚本在遇到异常时能够优雅地处理。
  6. 日志记录

    • 使用日志记录功能可以帮助调试和分析脚本执行情况,确保日志文件路径有效且有足够的写权限。

示例配置详细说明

假设我们有一个简单的测试计划,包含一个线程组和一个HTTP请求,并希望在每个请求之间添加一个动态计算的延迟时间,延迟时间基于当前请求的响应时间。

  1. 创建测试计划

    • 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
  2. 添加线程组

    • 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
    • 配置线程组:
      • 线程数:10(模拟10个用户)
      • 循环次数:10(每个用户发送10次请求)
      • 启动延迟:0(立即启动)
  3. 添加HTTP请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:获取用户列表
      • 服务器名称或IP:example.com
      • 端口号:80
      • 协议:HTTP
      • 方法:GET
      • 路径:/api/users
  4. 添加 BeanShell 定时器

    • 右键点击HTTP请求 -> 添加 -> 定时器 -> BeanShell 定时器。
    • 配置 BeanShell 定时器:
      • 名称:BeanShell 定时器
      • 脚本:在脚本编辑框中编写以下 BeanShell 脚本:
        // 获取上一个请求的响应时间
        int responseTime = prev.getTime();// 计算延迟时间,例如延迟时间为响应时间的一半
        int delay = responseTime / 2;// 返回延迟时间(单位为毫秒)
        return delay;
  5. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。

 

ef834f267bcb47898c1cc79e8cd5af59.png


 

 


http://www.ppmy.cn/devtools/136883.html

相关文章

解锁PPTist的全新体验:Windows系统环境下本地部署与远程访问

文章目录 前言1. 本地安装PPTist2. PPTist 使用介绍3. 安装Cpolar内网穿透4. 配置公网地址5. 配置固定公网地址 前言 在Windows系统环境中,如何本地部署开源在线演示文稿应用PPTist,并实现远程访问?本文将为您提供详细的部署和配置指南。 P…

深入探索JMeter bin目录中的Properties文件:优化性能测试的关键

引言 在现代软件开发中,性能测试是确保应用质量和用户体验的重要环节。Apache JMeter作为一款流行的开源性能测试工具,提供了丰富的功能来模拟各种用户行为和负载情况。本文将深入探讨JMeter中的Properties(属性)功能&#xff0c…

RAINBOW: 一种鲁棒不可见的非盲网络流水印

文章信息 论文题目:RAINBOW: A Robust And Invisible Non-Blind Watermark for Network Flows 期刊(会议):NDSS 时间:2009 级别:CCF A 文章链接:https://www.researchgate.net/profile/Nikita-Borisov-2/publication/221655453_RAINBOW_A_robust_and_invisible_non…

ApiChain 从迭代到项目 接口调试到文档生成单元测试一体化工具

项目地址:ApiChain 项目主页 ApiChain 简介 ApiChain 是一款类似 PostMan 的接口网络请求与文档生成软件,与 PostMan 不同的是,它基于 项目和迭代两个视角管理我们的接口文档,前端和测试更关注版本迭代中发生变更的接口编写代码…

7-366 解救小鱼干

7-366 解救小鱼干 分数 10 全屏浏览 切换布局 作者 gongdan 单位 哈尔滨华德学院 有一天,腌制的小鱼干一个人去玩迷宫。但是方向感很不好的小鱼干很快就迷路了。珍惜头发的咸鱼得知后便立即去解救无助的好基友。咸鱼当然有备而来,已经弄清楚了迷宫的…

CSRF保护--laravel进阶篇

laravel对csrf非常重视,专门针对csrf作出了很多的保护。如果您是刚刚接触laravel的路由不久,那么您可能对于web.php路由文件的post请求很疑惑,因为get请求很顺利,而post请求则可能会遭遇失败。其中一个失败的原因是由于laravel的c…

TCP为什么需要三次握手?两次握手或四次握手可以吗?

(1)三次握手可以保证双方具有接收和发送的能力 第一次握手服务端可以确认客户端的发送能力和服务端的接收能力是正常的;第二次握手客户端可以确认客户端和服务端的收发能力是正常的,但是服务端无法确认客户端的接收能力是正常的&…

网络爬虫——爬虫项目案例

本节将全面讲解如何通过实战爬虫项目解决复杂问题。结合最新技术和实际开发需求,案例将涵盖完整开发流程,包括需求分析、实现代码、优化方法和常见问题解决。力求实现高效、可扩展的爬虫项目架构,帮助开发者提升实战能力。 案例 1&#xff1a…