当前位置: 首页 > news >正文

Jmeter中的定时器(二)

 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


 

 

相关文章:

Jmeter中的定时器(二)

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

华为HCIP-openEuler考试内容大纲:备考必看!

华为HCIP-openEuler认证考试作为ICT领域的一项重要技术认证,已经成为越来越多IT从业者追求的目标。无论你是想提升自己的技术能力,还是为了未来的职业发展,HCIP-openEuler都是一个极具价值的认证。那么,如何高效备考,顺…...

Vector 深度复制记录

有的时候数据得复制过去 有个疑问,自动分配内存吗? 不是估计有变化, 得在看看 指针作为值复制了 … … 挺好,修改原有的值 x86 的 SIM 程序 还有点问题 ; 无法直接绕过硬件错误 。。。 x86 gdb 没有问题 就是运行出现了问题,怎么解决;正常初始化没有问题…...

Go语言实现用户登录Web应用

文章目录 1. Go语言Web框架1.1 框架比较1.2 安装Gin框架 2. 实现用户登录功能2.1 创建项目目录2.2 打开项目目录2.3 创建登录Go程序2.4 创建模板页面2.4.1 登录页面2.4.2 登录成功页面2.4.3 登录失败页面 3. 测试用户登录项目3.1 运行登录主程序3.2 访问登录页面3.3 演示登录成…...

Android CarrierConfig 参数项和正则匹配逻辑

背景 在编写CarrierConfig的时候经常出现配置不生效的情况,比如运营商支持大范围的imsi,或者是测试人员写卡位数的问题等等,因此就需要模式匹配(包含但不限于正则表达式)。 基本概念: 模式匹配涉及定义一个“模式”&a…...

微信小程序中使用离线版阿里云矢量图标

前言 阿里矢量图库提供的在线链接服务仅供平台体验和调试使用,平台不承诺服务的稳定性,企业客户需下载字体包自行发布使用并做好备份。 1.下载图标 将阿里矢量图库的图标先下载下来 解压如下 2.转换格式 贴一个地址用于转换格式:Onlin…...

hive的tblproperties支持修改的属性

文章目录 一、介绍二、查看TBLPROPERTIES属性三、修改TBLPROPERTIES属性 一、介绍 TBLPROPERTIES用途:向表中添加自定义或预定义的元数据属性,并设置它们的赋值。在hive建表时,可设置TBLPROPERTIES参数修改表的元数据,也能通过AL…...

移动端开发

一、一些概念 (一)、屏幕相关 1、屏幕大小 指屏幕的对角线长度,单位是英寸(inch)。常用尺寸有:3.5寸、4.7寸、5.0寸、5.5寸、6.0寸等 备注:1英寸(inch)2.54厘米&…...

光伏行业内卷到什么程度了?

现在每个行业都在内卷,光伏行业也一样在内卷中,但是光伏行业的内卷体现在多个方面,下面给举例。 一、产能竞争激烈: 产能扩张迅速:过去几年,大量资本涌入光伏行业,企业纷纷扩产。例如&#xf…...

C# 通俗易懂的介绍基础知识(七)——栈Stack(从日常生活开始讲解)

目录 一、前言 二、栈是排列方式 三、栈的单词 四、程序中的栈 五、栈的方法 1.声明并初始化栈 2.往栈里放东西(学名:入栈) 3.从栈往外拿东西 (学名:出栈) 4.清空栈 5.遍历 Stack 6.获取Stack的长…...

学习threejs,使用第一视角控制器FirstPersonControls控制相机

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️第一视角控制器FirstPerson…...

odoo17 前端 在头像下拉 dropdown 自定义菜单

odoo17 前端 在头像下拉 dropdown 自定义菜单 其实很简单, 我们先找到原来已经创建好的, 找到代码位置 使用 我的资料 为例 odoo-17.0\addons\hr\static\src\user_menu\my_profile.js /** odoo-module **/import { _t } from "web/core/l10n/translation"; import …...

如何管理好自己的LabVIEW项目

在LabVIEW项目开发中,项目管理对于提高开发效率、确保项目质量、减少错误和维护成本至关重要。以下从项目规划、代码管理、测试与调试、版本控制、团队协作等方面,分享LabVIEW项目管理的体会。 ​ 1. 项目规划与需求分析 关键步骤: 需求分析…...

GPT-5 要来了:抢先了解其创新突破

Microsoft 的工程师计划于 2024 年 11 月在 Azure 上部署 Orion (GPT-5)。虽然这一版本不会向公众开放,但其上线被视为人工智能领域的一个重要里程碑,并将产生深远的影响。 文章目录 GPT-5 真的要来了GPT-4 的局限性GPT-5 的创新突破与遗留挑战GPT-5 预期…...

@ComponentScan:Spring Boot中的自动装配大师

文章目录 1. 什么是ComponentScan注解?2. 为什么需要ComponentScan注解?3. 如何使用ComponentScan注解?4. ComponentScan注解的高级用法5. 注意事项6. 结语推荐阅读文章 在Spring Boot的世界里,自动装配(Auto-wiring&a…...

uniapp 面试题总结常考

uniapp 文件详情 ├── pages # 页面文件夹 │ │── index # index文件夹 │ │ │── index.vue # index页面 ├── static # 静态资源(类似于图片 字体图标等) │ …...

花了36元给我的个人博客上了一道防御

前言 双11活动薅了个羊毛,1折的价格买了一年的EdgeOne,正好可以为我的个人博客站点保驾护航。本文就来看看个人博客接入EdgeOne后的效果,如果也想薅羊毛的,赶紧去双11活动页面,不要错过这次机会。 EdgeOne 介绍 先简…...

浅谈C++之内存管理

一、基本介绍 内存管理是C最令人切齿痛恨的问题,也是C最有争议的问题,C高手从中获得了更好的性能,更大的自由,C菜鸟的收获则是一遍一遍的检查代码和对C的痛恨,但内存管理在C中无处不在,内存泄漏几乎在每个C…...

719. 找出第 K 小的数对距离

目录 题目解法 题目 数对 (a,b) 由整数 a 和 b 组成&#xff0c;其数对距离定义为 a 和 b 的绝对差值。 给你一个整数数组 nums 和一个整数 k &#xff0c;数对由 nums[i] 和 nums[j] 组成且满足 0 < i < j < nums.length 。返回 所有数对距离中 第 k 小的数对距离。…...

【图像压缩感知】论文阅读:Self-supervised Scalable Deep Compressed Sensing

tips&#xff1a;本文为个人阅读论文的笔记&#xff0c;仅作为学习记录所用。 Title&#xff1a;Self-supervised Scalable Deep Compressed Sensing Journal&#xff1a;IJCV 2024 代码链接&#xff1a;GitHub - Guaishou74851/SCNet: Self-Supervised Scalable Deep Comp…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计&#xff1a;let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性&#xff0c;这种设计体现了语言的核心哲学。以下是深度解析&#xff1a; 1.1 设计理念剖析 安全优先原则&#xff1a;默认不可变强制开发者明确声明意图 let x 5; …...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...