在 JMeter 中,断言用于验证请求的响应是否符合预期结果。每种断言有不同的功能,帮助测试人员确保系统在负载下能按预期工作。以下是对 响应断言、JSON 断言 和 持续时间断言 的详细介绍。
1. 响应断言 (Response Assertion)
响应断言 是 JMeter 中最常用的断言类型,用于验证请求的响应是否符合预期。可以通过检查响应的状态码、内容、大小等多种方式来进行验证。
响应断言的常见功能
- 检查响应是否包含特定的文本:确保响应正文中包含某些期望的字符串。
- 正则表达式匹配:通过正则表达式验证响应内容是否符合预期。
- 状态码验证:验证 HTTP 响应状态码是否为预期值(例如,200 OK、404 Not Found)。
- 响应内容大小:验证响应体的大小是否符合预期。
配置步骤:
- 在请求元素下,右键点击选择 添加 > 断言 > 响应断言。
- 在 响应断言 中设置需要验证的条件。常见的条件包括:
- 检查字段:选择要验证的字段,如响应文本、响应代码、响应头等。
- 匹配规则:设置匹配规则,通常有以下几种:
- 包含:检查响应中是否包含某个字符串。
- 匹配正则表达式:通过正则表达式验证响应数据。
- 完全匹配:响应内容是否完全与预期内容匹配。
示例 1:验证是否包含"百度一下,你就知道"字段
- 配置如上图,同时添加断言结果
- 结果:无明显提示,就是没有问题
- 如果断言错误,结果如下:
断言参数详解
- Apply to:适用范围
- Main sample and sub-samples: 作用于父节点取样器及对应子节点取样器;
- Main sample only: 仅作用于父节点取样器;
- Sub-samples only: 仅作用于子节点取样器;
- JMeter Variable: 作用于jmeter变量(输入框内可输入jmeter的变量名称);
- 测试字段:要检查的项
- 响应文本: 来自服务器的响应文本,即主体,不包括任何HTTP头
- 响应代码: 响应的状态码,例如:200
- 响应信息: 响应的信息,例如:OK
- Response Headers: 响应头部
- Request Headers: 请求头部
- Request Data: 请求数据
- URL样本: 响应的URL
- Document(text): 响应的整个文档
- 忽略状态:忽略返回的响应状态码
- 模式匹配规则
- 包括:文本包含指定的正则表达式
- 匹配:整个文本匹配指定的正则表达式
- 相等:整个返回结果的文本等于指定的字符串(区分大小写)
- 字符串:返回结果的文本包含指定字符串(区分大小写)
- 否:取反
- 或者:如果存在多个测试模式,勾选代表逻辑或(只要有一个模式匹配,则断言就是OK),不勾选代表逻辑与(所有都必须匹配,断言才是OK)
2. JSON 断言 (JSON Assertion)
JSON 断言 是专门用于验证 JSON 格式响应的内容的断言类型。它可以帮助验证 API 返回的数据结构是否符合预期,特别是在接口返回的是 JSON 格式时。
JSON 断言的功能:
- 检查 JSON 响应格式是否有效:确保响应体符合有效的 JSON 格式。
- 验证 JSON 字段值:验证特定字段的值是否符合预期。
- 验证 JSON 数据的结构:确保 JSON 响应的数据结构和字段符合预期。
配置步骤:
- 在请求元素下,右键点击选择 添加 > 断言 > JSON 断言。
- 配置 JSON 断言,设置需要验证的 JSON 元素。
- 检查字段值:可以指定 JSON 中某个字段的值,验证其是否正确。
- 验证 JSON 格式:检查响应是否为有效的 JSON 格式。
示例 1:检查 JSON 响应是否包含特定字段
-
请求url:http://t.weather.itboy.net/api/weather/city/101010100
-
JSON断言设置:
-
在 JSON 断言 中:
- JSON 路径:
$.cityInfo.city
- 预期值:
北京
- JSON 路径:
-
结果:成功
断言参数详解
- Assert JSON Path exists:用于断言的JSON元素的路径
- Additionally assert value:如果您想要用某个值生成断言,请选择复选框
- Match as regular expression:如果需要使用正则表达式,请选择复选框
- Expected Value:期望值,用于断言的值或用于匹配的正则表达式的值
- Expect null:如果希望为空,请选择复选框
- Invert assertion (will fail if above conditions met):反转断言(如果满足以上条件则失败)
–
3. 持续时间断言 (Duration Assertion)
持续时间断言 用于验证请求的响应时间是否在预期的时间范围内。通常用于性能测试中,确保系统在一定的负载下能保持良好的响应速度。
持续时间断言的功能:
- 验证请求的响应时间:确保请求的响应时间不超过指定的最大值。
- 测试性能要求:可以设置一个阈值(如 2 秒),确保响应时间小于这个阈值。
配置步骤:
- 在请求元素下,右键点击选择 添加 > 断言 > 持续时间断言。
- 配置断言的最大响应时间(单位:毫秒)。
- 最大响应时间:设置响应的最大时间限制。
- 如果响应时间超过该限制,断言会失败。
示例 1:验证请求淘宝响应时间是否小于 50 ms
- 请求url:https://www.taobao.com
- 持续时间断言设置:
- 结果:失败
总结
JMeter 中的断言是性能测试中非常重要的部分,它们帮助确保系统在高负载下不仅能够处理请求,还能按预期返回正确的数据。下面是三种常见断言的总结:
- 响应断言:检查响应的状态码、返回的文本、正则表达式匹配等,用于验证响应是否符合预期。
- JSON 断言:专门用于验证 JSON 格式响应的内容和结构,确保字段和值符合预期。
- 持续时间断言:用于验证请求的响应时间是否满足性能要求,确保系统在负载下能保持良好的响应速度。
通过合理配置这些断言,您可以确保系统在各种负载下的稳定性、正确性和性能,其它断言方式请自行查阅。