Jmeter中的后置处理器(三)
9--XPath2 Extractor
功能特点
- 数据提取:使用 XPath2 表达式从 XML 响应中提取特定的数据。
- 动态参数传递:将提取的数据存储为变量,供后续请求使用。
- 支持丰富的表达式:支持复杂的 XPath2 表表达式,提供丰富的数据提取功能。
配置步骤
-
添加 XPath2 Extractor
- 右键点击需要添加后处理器的请求或线程组。
- 选择“添加” -> “后处理器” -> “XPath2 Extractor”。
-
配置 XPath2 Extractor
- 名称:给 XPath2 Extractor 一个有意义的名称。
- XML 响应:选择从哪个响应中提取数据(例如,上一个采样器的响应)。
- XPath2 表达式:输入用于匹配数据的 XPath2 表达式。
- 命名空间:如果 XML 响应中有命名空间,可以在这里定义。
- 匹配数字:设置要匹配的次数(例如,-1表示匹配所有,0表示随机匹配一个,1表示匹配第一个)。
- 默认值:设置如果未找到匹配项时的默认值。
- 变量名称:设置提取的数据存储的变量名。
参数说明
- 名称:给 XPath2 Extractor 一个有意义的名称。
- XML 响应:选择从哪个响应中提取数据(例如,上一个采样器的响应)。
- XPath2 表达式:输入用于匹配数据的 XPath2 表达式。
- 命名空间:如果 XML 响应中有命名空间,可以在这里定义。
- 匹配数字:设置要匹配的次数,例如:
- -1:匹配所有。
- 0:随机匹配一个。
- 1:匹配第一个。
- 默认值:设置如果未找到匹配项时的默认值。
- 变量名称:设置提取的数据存储的变量名,可以在后续请求中引用这个变量。
示例配置
假设我们需要测试一个Web应用,并从登录请求的 XML 响应中提取用户的ID,然后在后续请求中使用该用户ID。
-
创建测试计划:
- 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
-
添加线程组:
- 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
- 配置线程组:
- 线程数:1(模拟1个用户)
- 循环次数:1(每个用户发送1次请求)
- 启动延迟:0(立即启动)
-
添加登录请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 名称:登录请求
- 服务器名称或IP:目标服务器的地址(例如
example.com
)。 - 端口号:目标服务器的端口(例如
80
)。 - 协议:HTTP或HTTPS(例如
HTTP
)。 - 方法:POST
- 路径:请求的路径(例如
/login
)。 - 参数:
- 名称:username
- 值:testuser
- 名称:password
- 值:testpass
-
添加 XPath2 Extractor:
- 右键点击登录请求 -> 添加 -> 后处理器 -> XPath2 Extractor。
- 配置 XPath2 Extractor:
- 名称:提取用户ID
- XML 响应:上一个采样器的响应
- XPath2 表达式://user/id/text()
- 命名空间:(如果有命名空间,可以在这里定义)
- 匹配数字:1(匹配第一个)
- 默认值:NoUserIDFound
- 变量名称:user_id
-
添加后续请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 名称:用户详情请求
- 服务器名称或IP:example.com
- 端口号:80
- 协议:HTTP
- 方法:GET
- 路径:/user/${user_id}
-
运行测试:
- 点击工具栏上的“启动”按钮,运行测试。
优化建议
-
XPath2 表达式:
- 确保 XPath2 表达式正确无误,能够准确匹配所需的数据。可以使用在线 XPath 测试工具进行验证。
-
命名空间:
- 如果 XML 响应中有命名空间,确保在 XPath2 Extractor 中正确配置命名空间。
-
匹配次数:
- 根据实际需求设置匹配次数。如果只需要第一个匹配项,设置为1;如果需要所有匹配项,设置为-1。
-
默认值:
- 设置合理的默认值,避免因未找到匹配项而导致测试失败。
-
变量名称:
- 确保变量名称有意义且易于理解,便于在后续请求中引用。
-
错误处理:
- 在测试计划中添加断言和监听器,确保提取的数据正确性和请求的成功率。
示例配置详细说明
假设我们有一个简单的测试计划,包含一个线程组和两个HTTP请求,并希望从登录请求的 XML 响应中提取用户的ID,然后在后续请求中使用该用户ID。
-
创建测试计划:
- 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
-
添加线程组:
- 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
- 配置线程组:
- 线程数:1(模拟1个用户)
- 循环次数:1(每个用户发送1次请求)
- 启动延迟:0(立即启动)
-
添加登录请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 名称:登录请求
- 服务器名称或IP:example.com
- 端口号:80
- 协议:HTTP
- 方法:POST
- 路径:/login
- 参数:
- 名称:username
- 值:testuser
- 名称:password
- 值:testpass
-
添加 XPath2 Extractor:
- 右键点击登录请求 -> 添加 -> 后处理器 -> XPath2 Extractor。
- 配置 XPath2 Extractor:
- 名称:提取用户ID
- XML 响应:上一个采样器的响应
- XPath2 表达式://user/id/text()
- 命名空间:(如果有命名空间,可以在这里定义)
- 匹配数字:1(匹配第一个)
- 默认值:NoUserIDFound
- 变量名称:user_id
-
添加后续请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 名称:用户详情请求
- 服务器名称或IP:example.com
- 端口号:80
- 协议:HTTP
- 方法:GET
- 路径:/user/${user_id}
-
运行测试:
- 点击工具栏上的“启动”按钮,运行测试。
- 查看结果树监听器或查看结果文件,确保提取的用户ID和其他变量的值按预期设置。
10--Xpath提取器
功能特点
- 数据提取:使用 XPath 表达式从 XML 响应中提取特定的数据。
- 动态参数传递:将提取的数据存储为变量,供后续请求使用。
- 支持丰富的表达式:支持复杂的 XPath 表达式,提供丰富的数据提取功能。
配置步骤
-
添加 XPath Extractor
- 右键点击需要添加后处理器的请求或线程组。
- 选择“添加” -> “后处理器” -> “XPath Extractor”。
-
配置 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。
-
创建测试计划:
- 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
-
添加线程组:
- 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
- 配置线程组:
- 线程数:1(模拟1个用户)
- 循环次数:1(每个用户发送1次请求)
- 启动延迟:0(立即启动)
-
添加登录请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 名称:登录请求
- 服务器名称或IP:目标服务器的地址(例如
example.com
)。 - 端口号:目标服务器的端口(例如
80
)。 - 协议:HTTP或HTTPS(例如
HTTP
)。 - 方法:POST
- 路径:请求的路径(例如
/login
)。 - 参数:
- 名称:username
- 值:testuser
- 名称:password
- 值:testpass
-
添加 XPath Extractor:
- 右键点击登录请求 -> 添加 -> 后处理器 -> XPath Extractor。
- 配置 XPath Extractor:
- 名称:提取用户ID
- XML 响应:上一个采样器的响应
- 使用 Namespaces:如果 XML 响应中有命名空间,勾选此项。
- Namespaces:如果勾选了“使用 Namespaces”,在这里定义命名空间。
- XPath 表达式://user/id/text()
- 匹配数字:1(匹配第一个)
- 默认值:NoUserIDFound
- 变量名称:user_id
-
添加后续请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 名称:用户详情请求
- 服务器名称或IP:example.com
- 端口号:80
- 协议:HTTP
- 方法:GET
- 路径:/user/${user_id}
-
运行测试:
- 点击工具栏上的“启动”按钮,运行测试。
优化建议
-
XPath 表达式:
- 确保 XPath 表达式正确无误,能够准确匹配所需的数据。可以使用在线 XPath 测试工具进行验证。
-
命名空间:
- 如果 XML 响应中有命名空间,确保在 XPath Extractor 中正确配置命名空间。
-
匹配次数:
- 根据实际需求设置匹配次数。如果只需要第一个匹配项,设置为1;如果需要所有匹配项,设置为-1。
-
默认值:
- 设置合理的默认值,避免因未找到匹配项而导致测试失败。
-
变量名称:
- 确保变量名称有意义且易于理解,便于在后续请求中引用。
-
错误处理:
- 在测试计划中添加断言和监听器,确保提取的数据正确性和请求的成功率。
示例配置详细说明
假设我们有一个简单的测试计划,包含一个线程组和两个HTTP请求,并希望从登录请求的 XML 响应中提取用户的ID,然后在后续请求中使用该用户ID。
-
创建测试计划:
- 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
-
添加线程组:
- 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
- 配置线程组:
- 线程数:1(模拟1个用户)
- 循环次数:1(每个用户发送1次请求)
- 启动延迟:0(立即启动)
-
添加登录请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 名称:登录请求
- 服务器名称或IP:example.com
- 端口号:80
- 协议:HTTP
- 方法:POST
- 路径:/login
- 参数:
- 名称:username
- 值:testuser
- 名称:password
- 值:testpass
-
添加 XPath Extractor:
- 右键点击登录请求 -> 添加 -> 后处理器 -> XPath Extractor。
- 配置 XPath Extractor:
- 名称:提取用户ID
- XML 响应:上一个采样器的响应
- 使用 Namespaces:如果 XML 响应中有命名空间,勾选此项。
- Namespaces:如果勾选了“使用 Namespaces”,在这里定义命名空间。
- XPath 表达式://user/id/text()
- 匹配数字:1(匹配第一个)
- 默认值:NoUserIDFound
- 变量名称:user_id
-
添加后续请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 名称:用户详情请求
- 服务器名称或IP:example.com
- 端口号:80
- 协议:HTTP
- 方法:GET
- 路径:/user/${user_id}
-
运行测试:
- 点击工具栏上的“启动”按钮,运行测试。
- 查看结果树监听器或查看结果文件,确保提取的用户ID和其他变量的值按预期设置。
11--结果状态处理器
功能特点
- 条件判断:根据前一个采样器的响应状态(成功或失败)执行不同的操作。
- 操作类型:支持多种操作类型,如停止线程、重试请求、继续执行等。
- 灵活性高:可以根据实际需求灵活配置,满足复杂的测试场景。
配置步骤
-
添加结果状态处理器
- 右键点击需要添加后处理器的请求或线程组。
- 选择“添加” -> “后处理器” -> “结果状态处理器”(Result Status Action Handler)。
-
配置结果状态处理器
- 名称:给结果状态处理器一个有意义的名称。
- 失败时的动作:选择失败时的操作类型(例如,停止线程、重试请求、继续执行)。
- 成功时的动作:选择成功时的操作类型(例如,继续执行)。
参数说明
- 名称:给结果状态处理器一个有意义的名称。
- 失败时的动作:选择失败时的操作类型,例如:
- 继续:继续执行下一个采样器。
- 停止线程:停止当前线程。
- 停止测试:停止整个测试。
- 重试请求:重试当前请求。
- 成功时的动作:选择成功时的操作类型,通常选择“继续执行”。
示例配置
假设我们需要测试一个Web应用,并在登录请求失败时停止当前线程,而在成功时继续执行后续请求。
-
创建测试计划:
- 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
-
添加线程组:
- 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
- 配置线程组:
- 线程数:1(模拟1个用户)
- 循环次数:1(每个用户发送1次请求)
- 启动延迟:0(立即启动)
-
添加登录请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 名称:登录请求
- 服务器名称或IP:目标服务器的地址(例如
example.com
)。 - 端口号:目标服务器的端口(例如
80
)。 - 协议:HTTP或HTTPS(例如
HTTP
)。 - 方法:POST
- 路径:请求的路径(例如
/login
)。 - 参数:
- 名称:username
- 值:testuser
- 名称:password
- 值:testpass
-
添加结果状态处理器:
- 右键点击登录请求 -> 添加 -> 后处理器 -> 结果状态处理器。
- 配置结果状态处理器:
- 名称:处理登录请求结果
- 失败时的动作:停止线程
- 成功时的动作:继续执行
-
添加后续请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 名称:用户详情请求
- 服务器名称或IP:example.com
- 端口号:80
- 协议:HTTP
- 方法:GET
- 路径:/user/${user_id}
-
运行测试:
- 点击工具栏上的“启动”按钮,运行测试。
优化建议
-
操作类型选择:
- 根据实际需求选择合适的操作类型。例如,如果登录失败,可能需要停止当前线程以避免后续请求的无效执行。
-
错误处理:
- 在测试计划中添加断言和监听器,确保请求的成功率和返回数据的正确性。
-
日志记录:
- 使用日志记录功能可以帮助调试和分析测试结果,确保日志文件路径有效且有足够的写权限。
-
测试场景:
- 根据具体的测试场景配置结果状态处理器,确保测试流程的合理性和准确性。
示例配置详细说明
假设我们有一个简单的测试计划,包含一个线程组和两个HTTP请求,并希望在登录请求失败时停止当前线程,而在成功时继续执行后续请求。
-
创建测试计划:
- 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
-
添加线程组:
- 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
- 配置线程组:
- 线程数:1(模拟1个用户)
- 循环次数:1(每个用户发送1次请求)
- 启动延迟:0(立即启动)
-
添加登录请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 名称:登录请求
- 服务器名称或IP:example.com
- 端口号:80
- 协议:HTTP
- 方法:POST
- 路径:/login
- 参数:
- 名称:username
- 值:testuser
- 名称:password
- 值:testpass
-
添加结果状态处理器:
- 右键点击登录请求 -> 添加 -> 后处理器 -> 结果状态处理器。
- 配置结果状态处理器:
- 名称:处理登录请求结果
- 失败时的动作:停止线程
- 成功时的动作:继续执行
-
添加后续请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 名称:用户详情请求
- 服务器名称或IP:example.com
- 端口号:80
- 协议:HTTP
- 方法:GET
- 路径:/user/${user_id}
-
运行测试:
- 点击工具栏上的“启动”按钮,运行测试。
- 查看结果树监听器或查看结果文件,确保登录请求的结果按预期处理,失败时停止线程,成功时继续执行后续请求。
12--BeanShell PostProcessor
功能特点
- 脚本编写:使用 BeanShell 脚本语言编写自定义逻辑。
- 数据处理:处理采样器的响应数据,进行数据转换、条件判断等操作。
- 变量设置:设置和修改 JMeter 变量。
- 灵活性高:支持复杂的逻辑操作,满足各种测试需求。
配置步骤
-
添加 BeanShell PostProcessor
- 右键点击需要添加后处理器的请求或线程组。
- 选择“添加” -> “后处理器” -> “BeanShell PostProcessor”。
-
配置 BeanShell PostProcessor
- 名称:给 BeanShell PostProcessor 一个有意义的名称。
- 脚本:编写 BeanShell 脚本,实现所需的逻辑操作。
- 参数:设置脚本中使用的参数(可选)。
- 文件名:指定一个包含 BeanShell 脚本的文件(可选)。
参数说明
- 名称:给 BeanShell PostProcessor 一个有意义的名称。
- 脚本:编写 BeanShell 脚本,实现所需的逻辑操作。
- 参数:设置脚本中使用的参数(可选)。
- 文件名:指定一个包含 BeanShell 脚本的文件(可选)。
示例配置
假设我们需要测试一个Web应用,并在登录请求后使用 BeanShell PostProcessor 处理响应数据,提取用户的ID并设置为变量,然后在后续请求中使用该用户ID。
-
创建测试计划:
- 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
-
添加线程组:
- 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
- 配置线程组:
- 线程数:1(模拟1个用户)
- 循环次数:1(每个用户发送1次请求)
- 启动延迟:0(立即启动)
-
添加登录请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 名称:登录请求
- 服务器名称或IP:目标服务器的地址(例如
example.com
)。 - 端口号:目标服务器的端口(例如
80
)。 - 协议:HTTP或HTTPS(例如
HTTP
)。 - 方法:POST
- 路径:请求的路径(例如
/login
)。 - 参数:
- 名称:username
- 值:testuser
- 名称:password
- 值:testpass
-
添加 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);
-
添加后续请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 名称:用户详情请求
- 服务器名称或IP:example.com
- 端口号:80
- 协议:HTTP
- 方法:GET
- 路径:/user/${user_id}
-
运行测试:
- 点击工具栏上的“启动”按钮,运行测试。
优化建议
-
脚本编写:
- 确保 BeanShell 脚本正确无误,能够正确处理响应数据。可以使用 BeanShell 控制台进行脚本测试。
-
导入必要的类:
- 如果需要使用外部类(如
org.json.JSONObject
),确保在脚本中正确导入这些类。
- 如果需要使用外部类(如
-
变量管理:
- 使用
vars.put
方法设置变量,确保变量名称有意义且易于理解,便于在后续请求中引用。
- 使用
-
错误处理:
- 在脚本中添加适当的错误处理逻辑,避免因数据解析错误导致测试失败。
-
性能考虑:
- BeanShell 脚本可能会增加测试的开销,特别是在大量并发请求的情况下。确保脚本高效且简洁。
示例配置详细说明
假设我们有一个简单的测试计划,包含一个线程组和两个HTTP请求,并希望在登录请求后使用 BeanShell PostProcessor 处理响应数据,提取用户的ID并设置为变量,然后在后续请求中使用该用户ID。
-
创建测试计划:
- 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
-
添加线程组:
- 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
- 配置线程组:
- 线程数:1(模拟1个用户)
- 循环次数:1(每个用户发送1次请求)
- 启动延迟:0(立即启动)
-
添加登录请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 名称:登录请求
- 服务器名称或IP:example.com
- 端口号:80
- 协议:HTTP
- 方法:POST
- 路径:/login
- 参数:
- 名称:username
- 值:testuser
- 名称:password
- 值:testpass
-
添加 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);
-
添加后续请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 名称:用户详情请求
- 服务器名称或IP:example.com
- 端口号:80
- 协议:HTTP
- 方法:GET
- 路径:/user/${user_id}
-
运行测试:
- 点击工具栏上的“启动”按钮,运行测试。
- 查看结果树监听器或查看结果文件,确保登录请求的响应数据按预期处理,提取的用户ID和其他变量的值按预期设置。
13--正则表达式提取器
功能特点
- 数据提取:使用正则表达式从响应数据中提取特定的信息。
- 动态参数传递:将提取的数据存储为变量,供后续请求使用。
- 支持丰富的正则表达式:支持复杂的正则表达式,提供丰富的数据提取功能。
配置步骤
-
添加正则表达式提取器
- 右键点击需要添加后处理器的请求或线程组。
- 选择“添加” -> “后处理器” -> “正则表达式提取器”。
-
配置正则表达式提取器
- 名称:给正则表达式提取器一个有意义的名称。
- 适用范围:选择正则表达式提取器作用的范围(例如,主样本或子样本)。
- 响应字段:选择从响应的哪个部分提取数据(例如,Body、Headers等)。
- 正则表达式:输入用于匹配数据的正则表达式。
- 模板:定义如何从匹配结果中提取数据(默认是
$1$
表示第一个捕获组)。 - 匹配数字:设置要匹配的次数(例如,-1表示匹配所有,0表示随机匹配一个,1表示匹配第一个)。
- 默认值:设置如果未找到匹配项时的默认值。
- 变量名称:设置提取的数据存储的变量名。
参数说明
- 名称:给正则表达式提取器一个有意义的名称。
- 适用范围:选择正则表达式提取器作用的范围(例如,主样本或子样本)。
- 响应字段:选择从响应的哪个部分提取数据(例如,Body、Headers等)。
- 正则表达式:输入用于匹配数据的正则表达式。
- 模板:定义如何从匹配结果中提取数据(默认是
$1$
表示第一个捕获组)。 - 匹配数字:设置要匹配的次数,例如:
- -1:匹配所有。
- 0:随机匹配一个。
- 1:匹配第一个。
- 默认值:设置如果未找到匹配项时的默认值。
- 变量名称:设置提取的数据存储的变量名,可以在后续请求中引用这个变量。
示例配置
假设我们需要测试一个Web应用,并从登录请求的响应中提取用户的ID,然后在后续请求中使用该用户ID。
-
创建测试计划:
- 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
-
添加线程组:
- 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
- 配置线程组:
- 线程数:1(模拟1个用户)
- 循环次数:1(每个用户发送1次请求)
- 启动延迟:0(立即启动)
-
添加登录请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 名称:登录请求
- 服务器名称或IP:目标服务器的地址(例如
example.com
)。 - 端口号:目标服务器的端口(例如
80
)。 - 协议:HTTP或HTTPS(例如
HTTP
)。 - 方法:POST
- 路径:请求的路径(例如
/login
)。 - 参数:
- 名称:username
- 值:testuser
- 名称:password
- 值:testpass
-
添加正则表达式提取器:
- 右键点击登录请求 -> 添加 -> 后处理器 -> 正则表达式提取器。
- 配置正则表达式提取器:
- 名称:提取用户ID
- 适用范围:主样本
- 响应字段:Body
- 正则表达式:
"userId":"(.*?)"
(假设响应中用户ID的格式是"userId":"12345"
) - 模板:
$1$
(表示第一个捕获组) - 匹配数字:1(匹配第一个)
- 默认值:NoUserIDFound
- 变量名称:user_id
-
添加后续请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 名称:用户详情请求
- 服务器名称或IP:example.com
- 端口号:80
- 协议:HTTP
- 方法:GET
- 路径:/user/${user_id}
-
运行测试:
- 点击工具栏上的“启动”按钮,运行测试。
优化建议
-
正则表达式:
- 确保正则表达式正确无误,能够准确匹配所需的数据。可以使用在线正则表达式测试工具进行验证。
-
匹配次数:
- 根据实际需求设置匹配次数。如果只需要第一个匹配项,设置为1;如果需要所有匹配项,设置为-1。
-
默认值:
- 设置合理的默认值,避免因未找到匹配项而导致测试失败。
-
变量名称:
- 确保变量名称有意义且易于理解,便于在后续请求中引用。
-
错误处理:
- 在测试计划中添加断言和监听器,确保提取的数据正确性和请求的成功率。
示例配置详细说明
假设我们有一个简单的测试计划,包含一个线程组和两个HTTP请求,并希望从登录请求的响应中提取用户的ID,然后在后续请求中使用该用户ID。
-
创建测试计划:
- 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
-
添加线程组:
- 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
- 配置线程组:
- 线程数:1(模拟1个用户)
- 循环次数:1(每个用户发送1次请求)
- 启动延迟:0(立即启动)
-
添加登录请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 名称:登录请求
- 服务器名称或IP:example.com
- 端口号:80
- 协议:HTTP
- 方法:POST
- 路径:/login
- 参数:
- 名称:username
- 值:testuser
- 名称:password
- 值:testpass
-
添加正则表达式提取器:
- 右键点击登录请求 -> 添加 -> 后处理器 -> 正则表达式提取器。
- 配置正则表达式提取器:
- 名称:提取用户ID
- 适用范围:主样本
- 响应字段:Body
- 正则表达式:
"userId":"(.*?)"
(假设响应中用户ID的格式是"userId":"12345"
) - 模板:
$1$
(表示第一个捕获组) - 匹配数字:1(匹配第一个)
- 默认值:NoUserIDFound
- 变量名称:user_id
-
添加后续请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 名称:用户详情请求
- 服务器名称或IP:example.com
- 端口号:80
- 协议:HTTP
- 方法:GET
- 路径:/user/${user_id}
-
运行测试:
- 点击工具栏上的“启动”按钮,运行测试。
- 查看结果树监听器或查看结果文件,确保登录请求的响应数据按预期处理,提取的用户ID和其他变量的值按预期设置。
原文地址:https://blog.csdn.net/2301_76862031/article/details/143652264
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!