Jmeter中的后置处理器(三)

 9--XPath2 Extractor

功能特点

  • 数据提取:使用 XPath2 表达式从 XML 响应中提取特定的数据。
  • 动态参数传递:将提取的数据存储为变量,供后续请求使用。
  • 支持丰富的表达式:支持复杂的 XPath2 表表达式,提供丰富的数据提取功能。

配置步骤

  1. 添加 XPath2 Extractor

    • 右键点击需要添加后处理器的请求或线程组。
    • 选择“添加” -> “后处理器” -> “XPath2 Extractor”。
  2. 配置 XPath2 Extractor

    • 名称:给 XPath2 Extractor 一个有意义的名称。
    • XML 响应:选择从哪个响应中提取数据(例如,上一个采样器的响应)。
    • XPath2 表达式:输入用于匹配数据的 XPath2 表达式。
    • 命名空间:如果 XML 响应中有命名空间,可以在这里定义。
    • 匹配数字:设置要匹配的次数(例如,-1表示匹配所有,0表示随机匹配一个,1表示匹配第一个)。
    • 默认值:设置如果未找到匹配项时的默认值。
    • 变量名称:设置提取的数据存储的变量名。

参数说明

  • 名称:给 XPath2 Extractor 一个有意义的名称。
  • XML 响应:选择从哪个响应中提取数据(例如,上一个采样器的响应)。
  • XPath2 表达式:输入用于匹配数据的 XPath2 表达式。
  • 命名空间:如果 XML 响应中有命名空间,可以在这里定义。
  • 匹配数字:设置要匹配的次数,例如:
    • -1:匹配所有。
    • 0:随机匹配一个。
    • 1:匹配第一个。
  • 默认值:设置如果未找到匹配项时的默认值。
  • 变量名称:设置提取的数据存储的变量名,可以在后续请求中引用这个变量。

示例配置

假设我们需要测试一个Web应用,并从登录请求的 XML 响应中提取用户的ID,然后在后续请求中使用该用户ID。

  1. 创建测试计划

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

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

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:登录请求
      • 服务器名称或IP:目标服务器的地址(例如example.com)。
      • 端口号:目标服务器的端口(例如80)。
      • 协议:HTTP或HTTPS(例如HTTP)。
      • 方法:POST
      • 路径:请求的路径(例如/login)。
      • 参数
        • 名称:username
        • :testuser
        • 名称:password
        • :testpass
  4. 添加 XPath2 Extractor

    • 右键点击登录请求 -> 添加 -> 后处理器 -> XPath2 Extractor。
    • 配置 XPath2 Extractor:
      • 名称:提取用户ID
      • XML 响应:上一个采样器的响应
      • XPath2 表达式://user/id/text()
      • 命名空间:(如果有命名空间,可以在这里定义)
      • 匹配数字:1(匹配第一个)
      • 默认值:NoUserIDFound
      • 变量名称:user_id
  5. 添加后续请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:用户详情请求
      • 服务器名称或IP:example.com
      • 端口号:80
      • 协议:HTTP
      • 方法:GET
      • 路径:/user/${user_id}
  6. 运行测试

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

优化建议

  1. XPath2 表达式

    • 确保 XPath2 表达式正确无误,能够准确匹配所需的数据。可以使用在线 XPath 测试工具进行验证。
  2. 命名空间

    • 如果 XML 响应中有命名空间,确保在 XPath2 Extractor 中正确配置命名空间。
  3. 匹配次数

    • 根据实际需求设置匹配次数。如果只需要第一个匹配项,设置为1;如果需要所有匹配项,设置为-1。
  4. 默认值

    • 设置合理的默认值,避免因未找到匹配项而导致测试失败。
  5. 变量名称

    • 确保变量名称有意义且易于理解,便于在后续请求中引用。
  6. 错误处理

    • 在测试计划中添加断言和监听器,确保提取的数据正确性和请求的成功率。

示例配置详细说明

假设我们有一个简单的测试计划,包含一个线程组和两个HTTP请求,并希望从登录请求的 XML 响应中提取用户的ID,然后在后续请求中使用该用户ID。

  1. 创建测试计划

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

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

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:登录请求
      • 服务器名称或IP:example.com
      • 端口号:80
      • 协议:HTTP
      • 方法:POST
      • 路径:/login
      • 参数
        • 名称:username
        • :testuser
        • 名称:password
        • :testpass
  4. 添加 XPath2 Extractor

    • 右键点击登录请求 -> 添加 -> 后处理器 -> XPath2 Extractor。
    • 配置 XPath2 Extractor:
      • 名称:提取用户ID
      • XML 响应:上一个采样器的响应
      • XPath2 表达式://user/id/text()
      • 命名空间:(如果有命名空间,可以在这里定义)
      • 匹配数字:1(匹配第一个)
      • 默认值:NoUserIDFound
      • 变量名称:user_id
  5. 添加后续请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:用户详情请求
      • 服务器名称或IP:example.com
      • 端口号:80
      • 协议:HTTP
      • 方法:GET
      • 路径:/user/${user_id}
  6. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。
    • 查看结果树监听器或查看结果文件,确保提取的用户ID和其他变量的值按预期设置。

 

a12b2e907df8439a8b5d6904b9b1b544.png


10--Xpath提取器

 

功能特点

  • 数据提取:使用 XPath 表达式从 XML 响应中提取特定的数据。
  • 动态参数传递:将提取的数据存储为变量,供后续请求使用。
  • 支持丰富的表达式:支持复杂的 XPath 表达式,提供丰富的数据提取功能。

配置步骤

  1. 添加 XPath Extractor

    • 右键点击需要添加后处理器的请求或线程组。
    • 选择“添加” -> “后处理器” -> “XPath Extractor”。
  2. 配置 XPath Extractor

    • 名称:给 XPath Extractor 一个有意义的名称。
    • XML 响应:选择从哪个响应中提取数据(例如,上一个采样器的响应)。
    • 使用 Namespaces:如果 XML 响应中有命名空间,勾选此项。
    • Namespaces:如果勾选了“使用 Namespaces”,在这里定义命名空间。
    • XPath 表达式:输入用于匹配数据的 XPath 表达式。
    • 匹配数字:设置要匹配的次数(例如,-1表示匹配所有,0表示随机匹配一个,1表示匹配第一个)。
    • 默认值:设置如果未找到匹配项时的默认值。
    • 变量名称:设置提取的数据存储的变量名。

参数说明

  • 名称:给 XPath Extractor 一个有意义的名称。
  • XML 响应:选择从哪个响应中提取数据(例如,上一个采样器的响应)。
  • 使用 Namespaces:如果 XML 响应中有命名空间,勾选此项。
  • Namespaces:如果勾选了“使用 Namespaces”,在这里定义命名空间。
  • XPath 表达式:输入用于匹配数据的 XPath 表达式。
  • 匹配数字:设置要匹配的次数,例如:
    • -1:匹配所有。
    • 0:随机匹配一个。
    • 1:匹配第一个。
  • 默认值:设置如果未找到匹配项时的默认值。
  • 变量名称:设置提取的数据存储的变量名,可以在后续请求中引用这个变量。

示例配置

假设我们需要测试一个Web应用,并从登录请求的 XML 响应中提取用户的ID,然后在后续请求中使用该用户ID。

  1. 创建测试计划

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

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

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:登录请求
      • 服务器名称或IP:目标服务器的地址(例如example.com)。
      • 端口号:目标服务器的端口(例如80)。
      • 协议:HTTP或HTTPS(例如HTTP)。
      • 方法:POST
      • 路径:请求的路径(例如/login)。
      • 参数
        • 名称:username
        • :testuser
        • 名称:password
        • :testpass
  4. 添加 XPath Extractor

    • 右键点击登录请求 -> 添加 -> 后处理器 -> XPath Extractor。
    • 配置 XPath Extractor:
      • 名称:提取用户ID
      • XML 响应:上一个采样器的响应
      • 使用 Namespaces:如果 XML 响应中有命名空间,勾选此项。
      • Namespaces:如果勾选了“使用 Namespaces”,在这里定义命名空间。
      • XPath 表达式://user/id/text()
      • 匹配数字:1(匹配第一个)
      • 默认值:NoUserIDFound
      • 变量名称:user_id
  5. 添加后续请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:用户详情请求
      • 服务器名称或IP:example.com
      • 端口号:80
      • 协议:HTTP
      • 方法:GET
      • 路径:/user/${user_id}
  6. 运行测试

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

优化建议

  1. XPath 表达式

    • 确保 XPath 表达式正确无误,能够准确匹配所需的数据。可以使用在线 XPath 测试工具进行验证。
  2. 命名空间

    • 如果 XML 响应中有命名空间,确保在 XPath Extractor 中正确配置命名空间。
  3. 匹配次数

    • 根据实际需求设置匹配次数。如果只需要第一个匹配项,设置为1;如果需要所有匹配项,设置为-1。
  4. 默认值

    • 设置合理的默认值,避免因未找到匹配项而导致测试失败。
  5. 变量名称

    • 确保变量名称有意义且易于理解,便于在后续请求中引用。
  6. 错误处理

    • 在测试计划中添加断言和监听器,确保提取的数据正确性和请求的成功率。

示例配置详细说明

假设我们有一个简单的测试计划,包含一个线程组和两个HTTP请求,并希望从登录请求的 XML 响应中提取用户的ID,然后在后续请求中使用该用户ID。

  1. 创建测试计划

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

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

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:登录请求
      • 服务器名称或IP:example.com
      • 端口号:80
      • 协议:HTTP
      • 方法:POST
      • 路径:/login
      • 参数
        • 名称:username
        • :testuser
        • 名称:password
        • :testpass
  4. 添加 XPath Extractor

    • 右键点击登录请求 -> 添加 -> 后处理器 -> XPath Extractor。
    • 配置 XPath Extractor:
      • 名称:提取用户ID
      • XML 响应:上一个采样器的响应
      • 使用 Namespaces:如果 XML 响应中有命名空间,勾选此项。
      • Namespaces:如果勾选了“使用 Namespaces”,在这里定义命名空间。
      • XPath 表达式://user/id/text()
      • 匹配数字:1(匹配第一个)
      • 默认值:NoUserIDFound
      • 变量名称:user_id
  5. 添加后续请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:用户详情请求
      • 服务器名称或IP:example.com
      • 端口号:80
      • 协议:HTTP
      • 方法:GET
      • 路径:/user/${user_id}
  6. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。
    • 查看结果树监听器或查看结果文件,确保提取的用户ID和其他变量的值按预期设置。

5c82022724f344c59b928431b5cf66c7.png


11--结果状态处理器

功能特点

  • 条件判断:根据前一个采样器的响应状态(成功或失败)执行不同的操作。
  • 操作类型:支持多种操作类型,如停止线程、重试请求、继续执行等。
  • 灵活性高:可以根据实际需求灵活配置,满足复杂的测试场景。

配置步骤

  1. 添加结果状态处理器

    • 右键点击需要添加后处理器的请求或线程组。
    • 选择“添加” -> “后处理器” -> “结果状态处理器”(Result Status Action Handler)。
  2. 配置结果状态处理器

    • 名称:给结果状态处理器一个有意义的名称。
    • 失败时的动作:选择失败时的操作类型(例如,停止线程、重试请求、继续执行)。
    • 成功时的动作:选择成功时的操作类型(例如,继续执行)。

参数说明

  • 名称:给结果状态处理器一个有意义的名称。
  • 失败时的动作:选择失败时的操作类型,例如:
    • 继续:继续执行下一个采样器。
    • 停止线程:停止当前线程。
    • 停止测试:停止整个测试。
    • 重试请求:重试当前请求。
  • 成功时的动作:选择成功时的操作类型,通常选择“继续执行”。

示例配置

假设我们需要测试一个Web应用,并在登录请求失败时停止当前线程,而在成功时继续执行后续请求。

  1. 创建测试计划

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

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

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:登录请求
      • 服务器名称或IP:目标服务器的地址(例如example.com)。
      • 端口号:目标服务器的端口(例如80)。
      • 协议:HTTP或HTTPS(例如HTTP)。
      • 方法:POST
      • 路径:请求的路径(例如/login)。
      • 参数
        • 名称:username
        • :testuser
        • 名称:password
        • :testpass
  4. 添加结果状态处理器

    • 右键点击登录请求 -> 添加 -> 后处理器 -> 结果状态处理器。
    • 配置结果状态处理器:
      • 名称:处理登录请求结果
      • 失败时的动作:停止线程
      • 成功时的动作:继续执行
  5. 添加后续请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:用户详情请求
      • 服务器名称或IP:example.com
      • 端口号:80
      • 协议:HTTP
      • 方法:GET
      • 路径:/user/${user_id}
  6. 运行测试

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

优化建议

  1. 操作类型选择

    • 根据实际需求选择合适的操作类型。例如,如果登录失败,可能需要停止当前线程以避免后续请求的无效执行。
  2. 错误处理

    • 在测试计划中添加断言和监听器,确保请求的成功率和返回数据的正确性。
  3. 日志记录

    • 使用日志记录功能可以帮助调试和分析测试结果,确保日志文件路径有效且有足够的写权限。
  4. 测试场景

    • 根据具体的测试场景配置结果状态处理器,确保测试流程的合理性和准确性。

示例配置详细说明

假设我们有一个简单的测试计划,包含一个线程组和两个HTTP请求,并希望在登录请求失败时停止当前线程,而在成功时继续执行后续请求。

  1. 创建测试计划

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

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

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:登录请求
      • 服务器名称或IP:example.com
      • 端口号:80
      • 协议:HTTP
      • 方法:POST
      • 路径:/login
      • 参数
        • 名称:username
        • :testuser
        • 名称:password
        • :testpass
  4. 添加结果状态处理器

    • 右键点击登录请求 -> 添加 -> 后处理器 -> 结果状态处理器。
    • 配置结果状态处理器:
      • 名称:处理登录请求结果
      • 失败时的动作:停止线程
      • 成功时的动作:继续执行
  5. 添加后续请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:用户详情请求
      • 服务器名称或IP:example.com
      • 端口号:80
      • 协议:HTTP
      • 方法:GET
      • 路径:/user/${user_id}
  6. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。
    • 查看结果树监听器或查看结果文件,确保登录请求的结果按预期处理,失败时停止线程,成功时继续执行后续请求。

 

51286d7c54e546439f2be7e1960b3ca5.png


12--BeanShell PostProcessor

功能特点

  • 脚本编写:使用 BeanShell 脚本语言编写自定义逻辑。
  • 数据处理:处理采样器的响应数据,进行数据转换、条件判断等操作。
  • 变量设置:设置和修改 JMeter 变量。
  • 灵活性高:支持复杂的逻辑操作,满足各种测试需求。

配置步骤

  1. 添加 BeanShell PostProcessor

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

    • 名称:给 BeanShell PostProcessor 一个有意义的名称。
    • 脚本:编写 BeanShell 脚本,实现所需的逻辑操作。
    • 参数:设置脚本中使用的参数(可选)。
    • 文件名:指定一个包含 BeanShell 脚本的文件(可选)。

参数说明

  • 名称:给 BeanShell PostProcessor 一个有意义的名称。
  • 脚本:编写 BeanShell 脚本,实现所需的逻辑操作。
  • 参数:设置脚本中使用的参数(可选)。
  • 文件名:指定一个包含 BeanShell 脚本的文件(可选)。

示例配置

假设我们需要测试一个Web应用,并在登录请求后使用 BeanShell PostProcessor 处理响应数据,提取用户的ID并设置为变量,然后在后续请求中使用该用户ID。

  1. 创建测试计划

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

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

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:登录请求
      • 服务器名称或IP:目标服务器的地址(例如example.com)。
      • 端口号:目标服务器的端口(例如80)。
      • 协议:HTTP或HTTPS(例如HTTP)。
      • 方法:POST
      • 路径:请求的路径(例如/login)。
      • 参数
        • 名称:username
        • :testuser
        • 名称:password
        • :testpass
  4. 添加 BeanShell PostProcessor

    • 右键点击登录请求 -> 添加 -> 后处理器 -> BeanShell PostProcessor。
    • 配置 BeanShell PostProcessor:
      • 名称:处理登录响应
      • 脚本
        // 获取响应数据
        String response = prev.getResponseDataAsString();// 解析 JSON 响应数据
        import org.json.JSONObject;
        JSONObject json = new JSONObject(response);// 提取用户ID
        String userId = json.getString("userId");// 设置用户ID为变量
        vars.put("user_id", userId);
  5. 添加后续请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:用户详情请求
      • 服务器名称或IP:example.com
      • 端口号:80
      • 协议:HTTP
      • 方法:GET
      • 路径:/user/${user_id}
  6. 运行测试

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

优化建议

  1. 脚本编写

    • 确保 BeanShell 脚本正确无误,能够正确处理响应数据。可以使用 BeanShell 控制台进行脚本测试。
  2. 导入必要的类

    • 如果需要使用外部类(如 org.json.JSONObject),确保在脚本中正确导入这些类。
  3. 变量管理

    • 使用 vars.put 方法设置变量,确保变量名称有意义且易于理解,便于在后续请求中引用。
  4. 错误处理

    • 在脚本中添加适当的错误处理逻辑,避免因数据解析错误导致测试失败。
  5. 性能考虑

    • BeanShell 脚本可能会增加测试的开销,特别是在大量并发请求的情况下。确保脚本高效且简洁。

示例配置详细说明

假设我们有一个简单的测试计划,包含一个线程组和两个HTTP请求,并希望在登录请求后使用 BeanShell PostProcessor 处理响应数据,提取用户的ID并设置为变量,然后在后续请求中使用该用户ID。

  1. 创建测试计划

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

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

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:登录请求
      • 服务器名称或IP:example.com
      • 端口号:80
      • 协议:HTTP
      • 方法:POST
      • 路径:/login
      • 参数
        • 名称:username
        • :testuser
        • 名称:password
        • :testpass
  4. 添加 BeanShell PostProcessor

    • 右键点击登录请求 -> 添加 -> 后处理器 -> BeanShell PostProcessor。
    • 配置 BeanShell PostProcessor:
      • 名称:处理登录响应
      • 脚本
        // 获取响应数据
        String response = prev.getResponseDataAsString();// 解析 JSON 响应数据
        import org.json.JSONObject;
        JSONObject json = new JSONObject(response);// 提取用户ID
        String userId = json.getString("userId");// 设置用户ID为变量
        vars.put("user_id", userId);
  5. 添加后续请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:用户详情请求
      • 服务器名称或IP:example.com
      • 端口号:80
      • 协议:HTTP
      • 方法:GET
      • 路径:/user/${user_id}
  6. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。
    • 查看结果树监听器或查看结果文件,确保登录请求的响应数据按预期处理,提取的用户ID和其他变量的值按预期设置。

ff6ff4fd664245bd9bd30b1db1d0b569.png


13--正则表达式提取器

功能特点

  • 数据提取:使用正则表达式从响应数据中提取特定的信息。
  • 动态参数传递:将提取的数据存储为变量,供后续请求使用。
  • 支持丰富的正则表达式:支持复杂的正则表达式,提供丰富的数据提取功能。

配置步骤

  1. 添加正则表达式提取器

    • 右键点击需要添加后处理器的请求或线程组。
    • 选择“添加” -> “后处理器” -> “正则表达式提取器”。
  2. 配置正则表达式提取器

    • 名称:给正则表达式提取器一个有意义的名称。
    • 适用范围:选择正则表达式提取器作用的范围(例如,主样本或子样本)。
    • 响应字段:选择从响应的哪个部分提取数据(例如,Body、Headers等)。
    • 正则表达式:输入用于匹配数据的正则表达式。
    • 模板:定义如何从匹配结果中提取数据(默认是 $1$ 表示第一个捕获组)。
    • 匹配数字:设置要匹配的次数(例如,-1表示匹配所有,0表示随机匹配一个,1表示匹配第一个)。
    • 默认值:设置如果未找到匹配项时的默认值。
    • 变量名称:设置提取的数据存储的变量名。

参数说明

  • 名称:给正则表达式提取器一个有意义的名称。
  • 适用范围:选择正则表达式提取器作用的范围(例如,主样本或子样本)。
  • 响应字段:选择从响应的哪个部分提取数据(例如,Body、Headers等)。
  • 正则表达式:输入用于匹配数据的正则表达式。
  • 模板:定义如何从匹配结果中提取数据(默认是 $1$ 表示第一个捕获组)。
  • 匹配数字:设置要匹配的次数,例如:
    • -1:匹配所有。
    • 0:随机匹配一个。
    • 1:匹配第一个。
  • 默认值:设置如果未找到匹配项时的默认值。
  • 变量名称:设置提取的数据存储的变量名,可以在后续请求中引用这个变量。

示例配置

假设我们需要测试一个Web应用,并从登录请求的响应中提取用户的ID,然后在后续请求中使用该用户ID。

  1. 创建测试计划

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

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

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:登录请求
      • 服务器名称或IP:目标服务器的地址(例如example.com)。
      • 端口号:目标服务器的端口(例如80)。
      • 协议:HTTP或HTTPS(例如HTTP)。
      • 方法:POST
      • 路径:请求的路径(例如/login)。
      • 参数
        • 名称:username
        • :testuser
        • 名称:password
        • :testpass
  4. 添加正则表达式提取器

    • 右键点击登录请求 -> 添加 -> 后处理器 -> 正则表达式提取器。
    • 配置正则表达式提取器:
      • 名称:提取用户ID
      • 适用范围:主样本
      • 响应字段:Body
      • 正则表达式"userId":"(.*?)" (假设响应中用户ID的格式是 "userId":"12345"
      • 模板$1$ (表示第一个捕获组)
      • 匹配数字:1(匹配第一个)
      • 默认值:NoUserIDFound
      • 变量名称:user_id
  5. 添加后续请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:用户详情请求
      • 服务器名称或IP:example.com
      • 端口号:80
      • 协议:HTTP
      • 方法:GET
      • 路径:/user/${user_id}
  6. 运行测试

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

优化建议

  1. 正则表达式

    • 确保正则表达式正确无误,能够准确匹配所需的数据。可以使用在线正则表达式测试工具进行验证。
  2. 匹配次数

    • 根据实际需求设置匹配次数。如果只需要第一个匹配项,设置为1;如果需要所有匹配项,设置为-1。
  3. 默认值

    • 设置合理的默认值,避免因未找到匹配项而导致测试失败。
  4. 变量名称

    • 确保变量名称有意义且易于理解,便于在后续请求中引用。
  5. 错误处理

    • 在测试计划中添加断言和监听器,确保提取的数据正确性和请求的成功率。

示例配置详细说明

假设我们有一个简单的测试计划,包含一个线程组和两个HTTP请求,并希望从登录请求的响应中提取用户的ID,然后在后续请求中使用该用户ID。

  1. 创建测试计划

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

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

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:登录请求
      • 服务器名称或IP:example.com
      • 端口号:80
      • 协议:HTTP
      • 方法:POST
      • 路径:/login
      • 参数
        • 名称:username
        • :testuser
        • 名称:password
        • :testpass
  4. 添加正则表达式提取器

    • 右键点击登录请求 -> 添加 -> 后处理器 -> 正则表达式提取器。
    • 配置正则表达式提取器:
      • 名称:提取用户ID
      • 适用范围:主样本
      • 响应字段:Body
      • 正则表达式"userId":"(.*?)" (假设响应中用户ID的格式是 "userId":"12345"
      • 模板$1$ (表示第一个捕获组)
      • 匹配数字:1(匹配第一个)
      • 默认值:NoUserIDFound
      • 变量名称:user_id
  5. 添加后续请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:用户详情请求
      • 服务器名称或IP:example.com
      • 端口号:80
      • 协议:HTTP
      • 方法:GET
      • 路径:/user/${user_id}
  6. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。
    • 查看结果树监听器或查看结果文件,确保登录请求的响应数据按预期处理,提取的用户ID和其他变量的值按预期设置。

 

3f653f73337e424a953aa24e73f6e48f.png


 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/59808.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【MySQL-1】MySQL数据库的基本操作

目录 1. 整体学习思维导图 2. 数据库的创建 2.1 创建一个数据库 2.2 创建一个指定字符集和校验规则的数据库 3. 字符集和校验规则 3.1 查看系统默认字符集以及校验规则 3.2 查看数据库所支持的字符集和校验规则 3.3 不同校验规则所带来的影响 4. 操作数据库 4.1查…

UE5遇到问题记录—在sequence制作时如何让角色隐藏/显示?

遇到问题: 在sequence制作时如何让角色隐藏/显示? 解决办法: 在角色通道添加轨道:actor hide in game即可,添加后有可视性,打勾或者取消来控制角色的可见性。

文献阅读11.17

扩散波模型的物理信息神经网络 文献摘要 扩散波模型(DWM)是浅水方程的非线性二阶简化形式,利用DWM正问题的解可以预测水位和流量的变化。求解其逆问题可以根据观测结果确定关键参数(如曼宁系数、降雨强度等)。文章将改进后的PINN应用于DWM的正解和逆解。在正演问题…

【网络安全 | 漏洞挖掘】在重置密码流程利用请求头实现ATO

未经许可,不得转载。 文章目录 HTTP Host头漏洞发现漏洞利用漏洞影响HTTP Host头 HTTP Host头是HTTP/1.1中一个强制性的请求头,它指定了用户要访问的域名。 例如,如果用户访问 https://example.com,浏览器会发出如下带有Host头的请求: GET / HTTP/1.1 Host: example.co…

计算机网络中的数据包传输机制详解

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 计算机网络中的数据包传输机制详解 计算机网络中的数据包传输机制详解 计算机网络中的数据包传输机制详解 引言 数据包的基本概念…

Android AOSP 架构和各层次开发内容介绍

一、系统架构总况​​​​ 官方文档:架构概览 | Android Open Source Project (google.cn)https://source.android.google.cn/docs/core/architecture?hlzh-cn 下面是Google Android 提供的最新架构层次图: 图. AOSP 的软件堆栈层次 System API 表示…

shell编程--永久环境变量和字符串显位

环境变量 echo $HOME 在终端输出后会显示家目录有个root变量 我们会提出个疑问为什么平时我们在终端输入sl 或者which等等命令会输出一些内容呢,这是因为这些命令都有对应的环境变量。 我们查看一下环境变量 在终端输入: echo $PATH 我们看一下输出…

【QT】解决生成的exe文件出现“无法定位程序入口”或“找不到xxx.dll”的问题

【QT】解决生成的exe文件出现“无法定位程序入口”或“找不到xxx.dll”的问题 零、问题 使用QT编译好项目后,想直接在文件资源管理器中运行exe程序或想分享出去给别人使用发现出现如下问题: 系统错误:找不到xxx.dll。 无法找到入口&#x…

【网络】什么是路由器 (Router )网关设备(Gateway)?

路由器(Router),又称路径器或网关设备(Gateway),是一种重要的计算机网络设备。以下是关于路由器的详细解释: 一、路由器的定义与功能 定义:路由器是连接因特网中各局域网、广域网的…

GitLab 降级安装出现 500 错误,如何解决?

本文分享 GitLab 中文版在降级的过程中出现 500 错误的修复方法。 写在前面 强烈不建议大家自行降级,如果真有降级需求,要么自己能力过硬,要么寻求专业服务【https://dl.gitlab.cn/cm33bsfv】,要不出问题很麻烦! 问…

TensorFlow 2.0 windows11 GPU 训练环境配置

前言 在一切开始之前,请确保你的cmd命令行和powershell命令行可以正常打开。如果不能,建议重装系统。我不确定这是否会影响你最终的结果,毕竟windows的坑太多了。 安装顺序:visual studio -> cuda -> cudnn -> python…

前馈神经网络 (Feedforward Neural Network, FNN)

代码功能 网络定义: 使用 torch.nn 构建了一个简单的前馈神经网络。 隐藏层使用 ReLU 激活函数,输出层使用 Sigmoid 函数(适用于二分类问题)。 数据生成: 使用经典的 XOR 问题作为数据集。 数据点为二维输入&#xff…

《操作系统 - 清华大学》3 -3:连续内存分配:内存碎片与分区的动态分配

文章目录 0. 概述1. 内存碎片问题2. 动态分配3. 首次适配算法4. 最优适配算法5. 最差适配算法 0. 概述 内存分配是操作系统管理过程中很重要的环节,首先需要考虑的是一块连续区域分配的过程,这个过程中会有很多问题,首先比较关注的一个问题是…

[Mysql基础]表的查询

一、表的增删改查 CRUD : Create(创建), Retrieve(读取),Update(更新),Delete(删除) 1.1 插入否则更新 由于 主键 或者 唯一键 对应的值已经存在而导致插入失败 -- 创建一张学生表 CREATE TABLE students (id INT UNSIGNED PR…

信息安全工程师(83)Windows操作系统安全分析与防护

一、Windows操作系统安全分析 系统漏洞: Windows操作系统由于其复杂性和广泛使用,可能存在一些已知或未知的漏洞。这些漏洞可能会被黑客利用,进行恶意攻击。微软会定期发布系统更新和补丁,以修复这些漏洞,提高系统的安…

Excel超级处理器:高效实现2种批量生成二维码方式

在Excel数据处理中,二维码的批量生成是一个常见且重要的需求。借助Excel超级处理器这一强大的插件,用户可以轻松实现二维码的两种主要批量生成方式:直接在单元格中显示二维码图片,以及直接生成二维码图片并保存在文件夹中。超级处…

vue+svg圆形进度条组件

vuesvg圆形进度条组件 一、实现思路二、ProgressCircle.vue三、父组件使用四、实现效果 一、实现思路 使用svg的circle元素画两个圆形&#xff0c;一个圆形控制进度&#xff0c;一个绘制底色 二、ProgressCircle.vue 代码示例&#xff1a; <template><!-- 圆形进度…

react+hook+vite项目使用eletron打包成桌面应用+可以热更新

使用Hooks-Admin的架构 Hooks-Admin: &#x1f680;&#x1f680;&#x1f680; Hooks Admin&#xff0c;基于 React18、React-Router V6、React-Hooks、Redux、TypeScript、Vite2、Ant-Design 开源的一套后台管理框架。https://gitee.com/HalseySpicy/Hooks-Adminexe桌面应用…

如何基于Tesseract实现图片的文本识别

在前一篇文章基础上&#xff0c;如何将报告图片中的文本解析出来&#xff0c;最近研究了基于Tesseract的OCR方案&#xff0c;Tesseract OCR是一个开源的OCR引擎&#xff0c;主要结合开源的tesseract和pytesseract&#xff0c;实现了jpg/png等格式图片文本识别&#xff0c;供大家…

Vue中template模板报错

直接<v出现如下模板&#xff0c;出现如下错误 注意两个地方&#xff1a; 1.template里面加一个div标签 2.要写name值 如下图