断言
1--响应断言
功能特点
- 数据验证:验证响应数据是否包含或不包含特定的字符串、模式或值。
- 多种匹配类型:支持多种匹配类型,如文本、正则表达式、文档等。
- 灵活配置:可以设置多个断言条件,满足复杂的测试需求。
配置步骤
-
添加响应断言
- 右键点击需要添加断言的请求或线程组。
- 选择“添加” -> “断言” -> “响应断言”。
-
配置响应断言
- 名称:给响应断言一个有意义的名称。
- 适用范围:选择断言作用的范围(例如,响应数据、响应代码、响应消息等)。
- 匹配模式:选择匹配模式(例如,包含、不包含、匹配、等于)。
- 模式/模式文件:输入要匹配的字符串或正则表达式,或者选择一个包含模式的文件。
- 模式匹配规则:选择模式匹配规则(例如,忽略大小写、多行匹配)。
参数说明
- 名称:给响应断言一个有意义的名称。
- 适用范围:选择断言作用的范围,例如:
- 响应数据:验证响应体中的数据。
- 响应代码:验证HTTP响应代码。
- 响应消息:验证HTTP响应消息。
- 响应头:验证HTTP响应头。
- 匹配模式:选择匹配模式,例如:
- 包含:响应数据中包含指定的字符串或模式。
- 不包含:响应数据中不包含指定的字符串或模式。
- 匹配:响应数据与指定的正则表达式匹配。
- 等于:响应数据等于指定的字符串。
- 模式/模式文件:输入要匹配的字符串或正则表达式,或者选择一个包含模式的文件。
- 模式匹配规则:选择模式匹配规则,例如:
- 忽略大小写:匹配时不区分大小写。
- 多行匹配:允许正则表达式中的多行匹配。
- 点匹配换行符:允许正则表达式中的点(
.
)匹配换行符。
示例配置
假设我们需要测试一个Web应用,并验证登录请求的响应数据是否包含特定的消息,例如“登录成功”。
-
创建测试计划:
- 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
-
添加线程组:
- 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
- 配置线程组:
- 线程数:1(模拟1个用户)
- 循环次数:1(每个用户发送1次请求)
- 启动延迟:0(立即启动)
-
添加登录请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 名称:登录请求
- 服务器名称或IP:目标服务器的地址(例如
example.com
)。 - 端口号:目标服务器的端口(例如
80
)。 - 协议:HTTP或HTTPS(例如
HTTP
)。 - 方法:POST
- 路径:请求的路径(例如
/login
)。 - 参数:
- 名称:username
- 值:testuser
- 名称:password
- 值:testpass
-
添加响应断言:
- 右键点击登录请求 -> 添加 -> 断言 -> 响应断言。
- 配置响应断言:
- 名称:验证登录成功
- 适用范围:响应数据
- 匹配模式:包含
- 模式/模式文件:登录成功
- 模式匹配规则:忽略大小写
-
运行测试:
- 点击工具栏上的“启动”按钮,运行测试。
- 查看结果树监听器或查看结果文件,确保登录请求的响应数据包含“登录成功”消息。
优化建议
-
匹配模式选择:
- 根据实际需求选择合适的匹配模式。例如,如果需要精确匹配某个值,选择“等于”;如果需要模糊匹配,选择“包含”。
-
模式匹配规则:
- 根据响应数据的特点选择合适的模式匹配规则。例如,如果响应数据包含多行文本,选择“多行匹配”。
-
错误处理:
- 在测试计划中添加监听器(如“查看结果树”或“聚合报告”),确保断言的正确性和请求的成功率。
-
性能考虑:
- 如果测试中包含大量的请求,确保断言配置高效且简洁,避免影响测试性能。
示例配置详细说明
假设我们有一个简单的测试计划,包含一个线程组和一个HTTP请求,并希望验证登录请求的响应数据是否包含特定的消息“登录成功”。
-
创建测试计划:
- 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
-
添加线程组:
- 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
- 配置线程组:
- 线程数:1(模拟1个用户)
- 循环次数:1(每个用户发送1次请求)
- 启动延迟:0(立即启动)
-
添加登录请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 名称:登录请求
- 服务器名称或IP:example.com
- 端口号:80
- 协议:HTTP
- 方法:POST
- 路径:/login
- 参数:
- 名称:username
- 值:testuser
- 名称:password
- 值:testpass
-
添加响应断言:
- 右键点击登录请求 -> 添加 -> 断言 -> 响应断言。
- 配置响应断言:
- 名称:验证登录成功
- 适用范围:响应数据
- 匹配模式:包含
- 模式/模式文件:登录成功
- 模式匹配规则:忽略大小写
-
运行测试:
- 点击工具栏上的“启动”按钮,运行测试。
- 查看结果树监听器或查看结果文件,确保登录请求的响应数据包含“登录成功”消息。
2--JSON断言
功能特点
- 数据验证:验证 JSON 响应数据是否包含或不包含特定的字段或值。
- 支持 JSONPath:使用 JSONPath 表达式定位和验证 JSON 数据中的字段。
- 灵活配置:可以设置多个断言条件,满足复杂的测试需求。
配置步骤
-
添加 JSON 断言
- 右键点击需要添加断言的请求或线程组。
- 选择“添加” -> “断言” -> “JSON 断言”。
-
配置 JSON 断言
- 名称:给 JSON 断言一个有意义的名称。
- JSONPath 表达式:输入用于匹配数据的 JSONPath 表达式。
- 期望值:输入期望的值。
- 验证存在性:选择是否验证字段的存在性。
- 验证值:选择是否验证字段的值。
- 忽略空值:选择是否忽略空值。
参数说明
- 名称:给 JSON 断言一个有意义的名称。
- JSONPath 表达式:输入用于匹配数据的 JSONPath 表达式。
- 期望值:输入期望的值。
- 验证存在性:选择是否验证字段的存在性。
- 验证值:选择是否验证字段的值。
- 忽略空值:选择是否忽略空值。
示例配置
假设我们需要测试一个Web应用,并验证登录请求的 JSON 响应数据中是否包含特定的字段和值,例如 userId
字段的值为 12345
。
-
创建测试计划:
- 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
-
添加线程组:
- 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
- 配置线程组:
- 线程数:1(模拟1个用户)
- 循环次数:1(每个用户发送1次请求)
- 启动延迟:0(立即启动)
-
添加登录请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 名称:登录请求
- 服务器名称或IP:目标服务器的地址(例如
example.com
)。 - 端口号:目标服务器的端口(例如
80
)。 - 协议:HTTP或HTTPS(例如
HTTP
)。 - 方法:POST
- 路径:请求的路径(例如
/login
)。 - 参数:
- 名称:username
- 值:testuser
- 名称:password
- 值:testpass
-
添加 JSON 断言:
- 右键点击登录请求 -> 添加 -> 断言 -> JSON 断言。
- 配置 JSON 断言:
- 名称:验证用户ID
- JSONPath 表达式:$.userId
- 期望值:12345
- 验证存在性:勾选
- 验证值:勾选
- 忽略空值:勾选
-
运行测试:
- 点击工具栏上的“启动”按钮,运行测试。
- 查看结果树监听器或查看结果文件,确保登录请求的 JSON 响应数据中
userId
字段的值为12345
。
优化建议
-
JSONPath 表达式:
- 确保 JSONPath 表达式正确无误,能够准确匹配所需的数据。可以使用在线 JSONPath 测试工具进行验证。
-
验证条件:
- 根据实际需求选择合适的验证条件。例如,如果只需要验证字段的存在性,选择“验证存在性”;如果需要验证字段的值,选择“验证值”。
-
忽略空值:
- 如果响应数据中可能存在空值,选择“忽略空值”以避免因空值导致断言失败。
-
错误处理:
- 在测试计划中添加监听器(如“查看结果树”或“聚合报告”),确保断言的正确性和请求的成功率。
-
性能考虑:
- 如果测试中包含大量的请求,确保断言配置高效且简洁,避免影响测试性能。
示例配置详细说明
假设我们有一个简单的测试计划,包含一个线程组和一个HTTP请求,并希望验证登录请求的 JSON 响应数据中 userId
字段的值为 12345
。
-
创建测试计划:
- 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
-
添加线程组:
- 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
- 配置线程组:
- 线程数:1(模拟1个用户)
- 循环次数:1(每个用户发送1次请求)
- 启动延迟:0(立即启动)
-
添加登录请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 名称:登录请求
- 服务器名称或IP:example.com
- 端口号:80
- 协议:HTTP
- 方法:POST
- 路径:/login
- 参数:
- 名称:username
- 值:testuser
- 名称:password
- 值:testpass
-
添加 JSON 断言:
- 右键点击登录请求 -> 添加 -> 断言 -> JSON 断言。
- 配置 JSON 断言:
- 名称:验证用户ID
- JSONPath 表达式:$.userId
- 期望值:12345
- 验证存在性:勾选
- 验证值:勾选
- 忽略空值:勾选
-
运行测试:
- 点击工具栏上的“启动”按钮,运行测试。
- 查看结果树监听器或查看结果文件,确保登录请求的 JSON 响应数据中
userId
字段的值为12345
。
3--大小断言
功能特点
- 数据大小验证:验证响应数据的大小是否符合预期。
- 灵活配置:可以设置多个断言条件,满足复杂的测试需求。
- 多种比较方式:支持多种比较方式,如等于、大于、小于等。
配置步骤
-
添加大小断言
- 右键点击需要添加断言的请求或线程组。
- 选择“添加” -> “断言” -> “大小断言”。
-
配置大小断言
- 名称:给大小断言一个有意义的名称。
- 适用范围:选择断言作用的范围(例如,响应数据、响应代码、响应消息等)。
- 比较方式:选择比较方式(例如,等于、大于、小于等)。
- 期望大小:输入期望的大小值(单位通常是字节)。
- 忽略空响应:选择是否忽略空响应。
参数说明
- 名称:给大小断言一个有意义的名称。
- 适用范围:选择断言作用的范围,例如:
- 响应数据:验证响应体中的数据大小。
- 响应代码:验证HTTP响应代码的长度。
- 响应消息:验证HTTP响应消息的长度。
- 响应头:验证HTTP响应头的长度。
- 比较方式:选择比较方式,例如:
- 等于:响应数据大小等于指定的值。
- 大于:响应数据大小大于指定的值。
- 小于:响应数据大小小于指定的值。
- 大于等于:响应数据大小大于等于指定的值。
- 小于等于:响应数据大小小于等于指定的值。
- 期望大小:输入期望的大小值(单位通常是字节)。
- 忽略空响应:选择是否忽略空响应。
示例配置
假设我们需要测试一个Web应用,并验证登录请求的响应数据大小是否在特定范围内,例如响应数据大小必须大于100字节。
-
创建测试计划:
- 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
-
添加线程组:
- 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
- 配置线程组:
- 线程数:1(模拟1个用户)
- 循环次数:1(每个用户发送1次请求)
- 启动延迟:0(立即启动)
-
添加登录请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 名称:登录请求
- 服务器名称或IP:目标服务器的地址(例如
example.com
)。 - 端口号:目标服务器的端口(例如
80
)。 - 协议:HTTP或HTTPS(例如
HTTP
)。 - 方法:POST
- 路径:请求的路径(例如
/login
)。 - 参数:
- 名称:username
- 值:testuser
- 名称:password
- 值:testpass
-
添加大小断言:
- 右键点击登录请求 -> 添加 -> 断言 -> 大小断言。
- 配置大小断言:
- 名称:验证响应数据大小
- 适用范围:响应数据
- 比较方式:大于
- 期望大小:100
- 忽略空响应:勾选
-
运行测试:
- 点击工具栏上的“启动”按钮,运行测试。
- 查看结果树监听器或查看结果文件,确保登录请求的响应数据大小大于100字节。
优化建议
-
比较方式选择:
- 根据实际需求选择合适的比较方式。例如,如果需要确保响应数据大小在一个特定范围内,可以选择“大于”或“小于”。
-
期望大小:
- 确保期望大小值合理,符合实际需求。可以通过手动测试获取预期的响应数据大小。
-
忽略空响应:
- 如果响应数据中可能存在空值,选择“忽略空响应”以避免因空值导致断言失败。
-
错误处理:
- 在测试计划中添加监听器(如“查看结果树”或“聚合报告”),确保断言的正确性和请求的成功率。
-
性能考虑:
- 如果测试中包含大量的请求,确保断言配置高效且简洁,避免影响测试性能。
示例配置详细说明
假设我们有一个简单的测试计划,包含一个线程组和一个HTTP请求,并希望验证登录请求的响应数据大小大于100字节。
-
创建测试计划:
- 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
-
添加线程组:
- 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
- 配置线程组:
- 线程数:1(模拟1个用户)
- 循环次数:1(每个用户发送1次请求)
- 启动延迟:0(立即启动)
-
添加登录请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 名称:登录请求
- 服务器名称或IP:example.com
- 端口号:80
- 协议:HTTP
- 方法:POST
- 路径:/login
- 参数:
- 名称:username
- 值:testuser
- 名称:password
- 值:testpass
-
添加大小断言:
- 右键点击登录请求 -> 添加 -> 断言 -> 大小断言。
- 配置大小断言:
- 名称:验证响应数据大小
- 适用范围:响应数据
- 比较方式:大于
- 期望大小:100
- 忽略空响应:勾选
-
运行测试:
- 点击工具栏上的“启动”按钮,运行测试。
- 查看结果树监听器或查看结果文件,确保登录请求的响应数据大小大于100字节。
4--JSR223 Assertion
功能特点
- 脚本编写:使用脚本语言编写自定义逻辑。
- 数据验证:验证响应数据是否符合特定的条件。
- 支持多种脚本语言:支持 Groovy、JavaScript、Beanshell 等脚本语言。
- 灵活配置:可以设置多个断言条件,满足复杂的测试需求。
配置步骤
-
添加 JSR223 断言
- 右键点击需要添加断言的请求或线程组。
- 选择“添加” -> “断言” -> “JSR223 断言”。
-
配置 JSR223 断言
- 名称:给 JSR223 断言一个有意义的名称。
- 脚本语言:选择使用的脚本语言(例如,Groovy)。
- 脚本:编写脚本,实现所需的逻辑操作。
- 参数:设置脚本中使用的参数(可选)。
- 文件名:指定一个包含脚本的文件(可选)。
参数说明
- 名称:给 JSR223 断言一个有意义的名称。
- 脚本语言:选择使用的脚本语言(例如,Groovy)。
- 脚本:编写脚本,实现所需的逻辑操作。
- 参数:设置脚本中使用的参数(可选)。
- 文件名:指定一个包含脚本的文件(可选)。
示例配置
假设我们需要测试一个Web应用,并验证登录请求的响应数据中是否包含特定的字段和值,例如 userId
字段的值为 12345
。我们将使用 Groovy 脚本来实现这一断言。
-
创建测试计划:
- 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
-
添加线程组:
- 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
- 配置线程组:
- 线程数:1(模拟1个用户)
- 循环次数:1(每个用户发送1次请求)
- 启动延迟:0(立即启动)
-
添加登录请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 名称:登录请求
- 服务器名称或IP:目标服务器的地址(例如
example.com
)。 - 端口号:目标服务器的端口(例如
80
)。 - 协议:HTTP或HTTPS(例如
HTTP
)。 - 方法:POST
- 路径:请求的路径(例如
/login
)。 - 参数:
- 名称:username
- 值:testuser
- 名称:password
- 值:testpass
-
添加 JSR223 断言:
- 右键点击登录请求 -> 添加 -> 断言 -> JSR223 断言。
- 配置 JSR223 断言:
- 名称:验证用户ID
- 脚本语言:Groovy
- 脚本:
import groovy.json.JsonSlurper // 获取响应数据 def response = prev.getResponseDataAsString() // 解析 JSON 响应数据 def jsonSlurper = new JsonSlurper() def jsonResponse = jsonSlurper.parseText(response) // 验证 userId 字段是否存在且值为 12345 if (jsonResponse.userId != '12345') { AssertionResult.setFailure(true) AssertionResult.setFailureMessage('User ID is not 12345') }
-
运行测试:
- 点击工具栏上的“启动”按钮,运行测试。
- 查看结果树监听器或查看结果文件,确保登录请求的响应数据中
userId
字段的值为12345
。
优化建议
-
脚本编写:
- 确保脚本正确无误,能够正确处理响应数据。可以使用 Groovy 控制台进行脚本测试。
-
导入必要的类:
- 如果需要使用外部类(如
groovy.json.JsonSlurper
),确保在脚本中正确导入这些类。
- 如果需要使用外部类(如
-
变量管理:
- 使用
AssertionResult
对象设置断言结果,确保断言的正确性和可靠性。
- 使用
-
错误处理:
- 在脚本中添加适当的错误处理逻辑,避免因数据解析错误导致测试失败。
-
性能考虑:
- JSR223 断言可能会增加测试的开销,特别是在大量并发请求的情况下。确保脚本高效且简洁。
示例配置详细说明
假设我们有一个简单的测试计划,包含一个线程组和一个HTTP请求,并希望验证登录请求的响应数据中 userId
字段的值为 12345
。我们将使用 Groovy 脚本来实现这一断言。
-
创建测试计划:
- 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
-
添加线程组:
- 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
- 配置线程组:
- 线程数:1(模拟1个用户)
- 循环次数:1(每个用户发送1次请求)
- 启动延迟:0(立即启动)
-
添加登录请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 名称:登录请求
- 服务器名称或IP:example.com
- 端口号:80
- 协议:HTTP
- 方法:POST
- 路径:/login
- 参数:
- 名称:username
- 值:testuser
- 名称:password
- 值:testpass
-
添加 JSR223 断言:
- 右键点击登录请求 -> 添加 -> 断言 -> JSR223 断言。
- 配置 JSR223 断言:
- 名称:验证用户ID
- 脚本语言:Groovy
- 脚本:
import groovy.json.JsonSlurper // 获取响应数据 def response = prev.getResponseDataAsString() // 解析 JSON 响应数据 def jsonSlurper = new JsonSlurper() def jsonResponse = jsonSlurper.parseText(response) // 验证 userId 字段是否存在且值为 12345 if (jsonResponse.userId != '12345') { AssertionResult.setFailure(true) AssertionResult.setFailureMessage('User ID is not 12345') }
-
运行测试:
- 点击工具栏上的“启动”按钮,运行测试。
- 查看结果树监听器或查看结果文件,确保登录请求的响应数据中
userId
字段的值为12345
。