Bootstrap

Jmeter中的断言(一)

 断言

7c963caba08647b4bed9ceef2ecb826e.png

1--响应断言

功能特点

  • 数据验证:验证响应数据是否包含或不包含特定的字符串、模式或值。
  • 多种匹配类型:支持多种匹配类型,如文本、正则表达式、文档等。
  • 灵活配置:可以设置多个断言条件,满足复杂的测试需求。

配置步骤

  1. 添加响应断言

    • 右键点击需要添加断言的请求或线程组。
    • 选择“添加” -> “断言” -> “响应断言”。
  2. 配置响应断言

    • 名称:给响应断言一个有意义的名称。
    • 适用范围:选择断言作用的范围(例如,响应数据、响应代码、响应消息等)。
    • 匹配模式:选择匹配模式(例如,包含、不包含、匹配、等于)。
    • 模式/模式文件:输入要匹配的字符串或正则表达式,或者选择一个包含模式的文件。
    • 模式匹配规则:选择模式匹配规则(例如,忽略大小写、多行匹配)。

参数说明

  • 名称:给响应断言一个有意义的名称。
  • 适用范围:选择断言作用的范围,例如:
    • 响应数据:验证响应体中的数据。
    • 响应代码:验证HTTP响应代码。
    • 响应消息:验证HTTP响应消息。
    • 响应头:验证HTTP响应头。
  • 匹配模式:选择匹配模式,例如:
    • 包含:响应数据中包含指定的字符串或模式。
    • 不包含:响应数据中不包含指定的字符串或模式。
    • 匹配:响应数据与指定的正则表达式匹配。
    • 等于:响应数据等于指定的字符串。
  • 模式/模式文件:输入要匹配的字符串或正则表达式,或者选择一个包含模式的文件。
  • 模式匹配规则:选择模式匹配规则,例如:
    • 忽略大小写:匹配时不区分大小写。
    • 多行匹配:允许正则表达式中的多行匹配。
    • 点匹配换行符:允许正则表达式中的点(.)匹配换行符。

示例配置

假设我们需要测试一个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. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。
    • 查看结果树监听器或查看结果文件,确保登录请求的响应数据包含“登录成功”消息。

优化建议

  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. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。
    • 查看结果树监听器或查看结果文件,确保登录请求的响应数据包含“登录成功”消息。

c02ca6111c934666a4c3050393551f31.png


2--JSON断言

功能特点

  • 数据验证:验证 JSON 响应数据是否包含或不包含特定的字段或值。
  • 支持 JSONPath:使用 JSONPath 表达式定位和验证 JSON 数据中的字段。
  • 灵活配置:可以设置多个断言条件,满足复杂的测试需求。

配置步骤

  1. 添加 JSON 断言

    • 右键点击需要添加断言的请求或线程组。
    • 选择“添加” -> “断言” -> “JSON 断言”。
  2. 配置 JSON 断言

    • 名称:给 JSON 断言一个有意义的名称。
    • JSONPath 表达式:输入用于匹配数据的 JSONPath 表达式。
    • 期望值:输入期望的值。
    • 验证存在性:选择是否验证字段的存在性。
    • 验证值:选择是否验证字段的值。
    • 忽略空值:选择是否忽略空值。

参数说明

  • 名称:给 JSON 断言一个有意义的名称。
  • JSONPath 表达式:输入用于匹配数据的 JSONPath 表达式。
  • 期望值:输入期望的值。
  • 验证存在性:选择是否验证字段的存在性。
  • 验证值:选择是否验证字段的值。
  • 忽略空值:选择是否忽略空值。

示例配置

假设我们需要测试一个Web应用,并验证登录请求的 JSON 响应数据中是否包含特定的字段和值,例如 userId 字段的值为 12345

  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. 添加 JSON 断言

    • 右键点击登录请求 -> 添加 -> 断言 -> JSON 断言。
    • 配置 JSON 断言:
      • 名称:验证用户ID
      • JSONPath 表达式:$.userId
      • 期望值:12345
      • 验证存在性:勾选
      • 验证值:勾选
      • 忽略空值:勾选
  5. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。
    • 查看结果树监听器或查看结果文件,确保登录请求的 JSON 响应数据中 userId 字段的值为 12345

优化建议

  1. JSONPath 表达式

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

    • 根据实际需求选择合适的验证条件。例如,如果只需要验证字段的存在性,选择“验证存在性”;如果需要验证字段的值,选择“验证值”。
  3. 忽略空值

    • 如果响应数据中可能存在空值,选择“忽略空值”以避免因空值导致断言失败。
  4. 错误处理

    • 在测试计划中添加监听器(如“查看结果树”或“聚合报告”),确保断言的正确性和请求的成功率。
  5. 性能考虑

    • 如果测试中包含大量的请求,确保断言配置高效且简洁,避免影响测试性能。

示例配置详细说明

假设我们有一个简单的测试计划,包含一个线程组和一个HTTP请求,并希望验证登录请求的 JSON 响应数据中 userId 字段的值为 12345

  1. 创建测试计划

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

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

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

    • 右键点击登录请求 -> 添加 -> 断言 -> JSON 断言。
    • 配置 JSON 断言:
      • 名称:验证用户ID
      • JSONPath 表达式:$.userId
      • 期望值:12345
      • 验证存在性:勾选
      • 验证值:勾选
      • 忽略空值:勾选
  5. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。
    • 查看结果树监听器或查看结果文件,确保登录请求的 JSON 响应数据中 userId 字段的值为 12345

 

70a168310d1d4508ad46b4c977f91f9b.png


3--大小断言

功能特点

  • 数据大小验证:验证响应数据的大小是否符合预期。
  • 灵活配置:可以设置多个断言条件,满足复杂的测试需求。
  • 多种比较方式:支持多种比较方式,如等于、大于、小于等。

配置步骤

  1. 添加大小断言

    • 右键点击需要添加断言的请求或线程组。
    • 选择“添加” -> “断言” -> “大小断言”。
  2. 配置大小断言

    • 名称:给大小断言一个有意义的名称。
    • 适用范围:选择断言作用的范围(例如,响应数据、响应代码、响应消息等)。
    • 比较方式:选择比较方式(例如,等于、大于、小于等)。
    • 期望大小:输入期望的大小值(单位通常是字节)。
    • 忽略空响应:选择是否忽略空响应。

参数说明

  • 名称:给大小断言一个有意义的名称。
  • 适用范围:选择断言作用的范围,例如:
    • 响应数据:验证响应体中的数据大小。
    • 响应代码:验证HTTP响应代码的长度。
    • 响应消息:验证HTTP响应消息的长度。
    • 响应头:验证HTTP响应头的长度。
  • 比较方式:选择比较方式,例如:
    • 等于:响应数据大小等于指定的值。
    • 大于:响应数据大小大于指定的值。
    • 小于:响应数据大小小于指定的值。
    • 大于等于:响应数据大小大于等于指定的值。
    • 小于等于:响应数据大小小于等于指定的值。
  • 期望大小:输入期望的大小值(单位通常是字节)。
  • 忽略空响应:选择是否忽略空响应。

示例配置

假设我们需要测试一个Web应用,并验证登录请求的响应数据大小是否在特定范围内,例如响应数据大小必须大于100字节。

  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. 添加大小断言

    • 右键点击登录请求 -> 添加 -> 断言 -> 大小断言。
    • 配置大小断言:
      • 名称:验证响应数据大小
      • 适用范围:响应数据
      • 比较方式:大于
      • 期望大小:100
      • 忽略空响应:勾选
  5. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。
    • 查看结果树监听器或查看结果文件,确保登录请求的响应数据大小大于100字节。

优化建议

  1. 比较方式选择

    • 根据实际需求选择合适的比较方式。例如,如果需要确保响应数据大小在一个特定范围内,可以选择“大于”或“小于”。
  2. 期望大小

    • 确保期望大小值合理,符合实际需求。可以通过手动测试获取预期的响应数据大小。
  3. 忽略空响应

    • 如果响应数据中可能存在空值,选择“忽略空响应”以避免因空值导致断言失败。
  4. 错误处理

    • 在测试计划中添加监听器(如“查看结果树”或“聚合报告”),确保断言的正确性和请求的成功率。
  5. 性能考虑

    • 如果测试中包含大量的请求,确保断言配置高效且简洁,避免影响测试性能。

示例配置详细说明

假设我们有一个简单的测试计划,包含一个线程组和一个HTTP请求,并希望验证登录请求的响应数据大小大于100字节。

  1. 创建测试计划

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

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

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

    • 右键点击登录请求 -> 添加 -> 断言 -> 大小断言。
    • 配置大小断言:
      • 名称:验证响应数据大小
      • 适用范围:响应数据
      • 比较方式:大于
      • 期望大小:100
      • 忽略空响应:勾选
  5. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。
    • 查看结果树监听器或查看结果文件,确保登录请求的响应数据大小大于100字节。

 

 

c0636ad70c7e4348b7e4f8fb29cfead0.png


 

4--JSR223 Assertion

功能特点

  • 脚本编写:使用脚本语言编写自定义逻辑。
  • 数据验证:验证响应数据是否符合特定的条件。
  • 支持多种脚本语言:支持 Groovy、JavaScript、Beanshell 等脚本语言。
  • 灵活配置:可以设置多个断言条件,满足复杂的测试需求。

配置步骤

  1. 添加 JSR223 断言

    • 右键点击需要添加断言的请求或线程组。
    • 选择“添加” -> “断言” -> “JSR223 断言”。
  2. 配置 JSR223 断言

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

参数说明

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

示例配置

假设我们需要测试一个Web应用,并验证登录请求的响应数据中是否包含特定的字段和值,例如 userId 字段的值为 12345。我们将使用 Groovy 脚本来实现这一断言。

  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. 添加 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')
        }
  5. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。
    • 查看结果树监听器或查看结果文件,确保登录请求的响应数据中 userId 字段的值为 12345

优化建议

  1. 脚本编写

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

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

    • 使用 AssertionResult 对象设置断言结果,确保断言的正确性和可靠性。
  4. 错误处理

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

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

示例配置详细说明

假设我们有一个简单的测试计划,包含一个线程组和一个HTTP请求,并希望验证登录请求的响应数据中 userId 字段的值为 12345。我们将使用 Groovy 脚本来实现这一断言。

  1. 创建测试计划

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

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

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:登录请求
      • 服务器名称或IP:example.com
      • 端口号:80
      • 协议:HTTP
      • 方法:POST
      • 路径:/login
      • 参数
        • 名称:username
        • :testuser
        • 名称:password
        • :testpass
  4. 添加 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')
        }
  5. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。
    • 查看结果树监听器或查看结果文件,确保登录请求的响应数据中 userId 字段的值为 12345

 

 

 

38d8960598b146d992cbf9eb5e046459.png


 

 

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;