Jmeter中的断言(一)

断言

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请求:
      • 名称:登录请求
      • 服务器名称或IPexample.com
      • 端口号:80
      • 协议:HTTP
      • 方法:POST
      • 路径:/login
      • 参数
        • 名称:username
        • :testuser
        • 名称:password
        • :testpass
  4. 添加响应断言

    • 右键点击登录请求 -> 添加 -> 断言 -> 响应断言。
    • 配置响应断言:
      • 名称:验证登录成功
      • 适用范围:响应数据
      • 匹配模式:包含
      • 模式/模式文件:登录成功
      • 模式匹配规则:忽略大小写
  5. 运行测试

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

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请求:
      • 名称:登录请求
      • 服务器名称或IPexample.com
      • 端口号:80
      • 协议:HTTP
      • 方法:POST
      • 路径:/login
      • 参数
        • 名称:username
        • :testuser
        • 名称:password
        • :testpass
  4. 添加 JSON 断言

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

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

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请求:
      • 名称:登录请求
      • 服务器名称或IPexample.com
      • 端口号:80
      • 协议:HTTP
      • 方法:POST
      • 路径:/login
      • 参数
        • 名称:username
        • :testuser
        • 名称:password
        • :testpass
  4. 添加大小断言

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

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

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

      • 脚本

        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请求:
      • 名称:登录请求
      • 服务器名称或IPexample.com
      • 端口号:80
      • 协议:HTTP
      • 方法:POST
      • 路径:/login
      • 参数
        • 名称:username
        • :testuser
        • 名称:password
        • :testpass
  4. 添加 JSR223 断言

    • 右键点击登录请求 -> 添加 -> 断言 -> JSR223 断言。
    • 配置 JSR223 断言:
      • 名称:验证用户ID

      • 脚本语言:Groovy

      • 脚本

        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

相关推荐
Change is good3 小时前
selenium clear()方法清除文本框内容
python·selenium·测试工具
天堂的恶魔9469 小时前
软件测试 —— jmeter(2)
jmeter
齐鲁物联网测试中心王工10 小时前
信创产品测试包括哪些内容?有哪些常用的信创测试工具?
测试工具·信创产品测试·信创产品认证·信创产品·信创认证
hunter20620612 小时前
ubuntu调用图形化网络测试工具
网络·测试工具·ubuntu
Joeysoda16 小时前
Java数据结构 (从0构建链表(LinkedList))
java·linux·开发语言·数据结构·windows·链表·1024程序员节
十二测试录17 小时前
【自动化测试】—— Appium使用保姆教程
android·经验分享·测试工具·程序人生·adb·appium·自动化
清冬暖雪18 小时前
jmeter中对接口进行循环请求后获取相应数据
jmeter
Tsang_GeeChill18 小时前
Jmeter使用Request URL请求接口
jmeter
network_tester2 天前
手机网络性能测试仪器介绍
网络·网络协议·tcp/ip·测试工具·信息与通信·信号处理·tcpdump
天堂的恶魔9462 天前
软件测试 ——Postman(Newman的使用)
测试工具·postman