Jmeter中的断言(二)

5--XPath2 Assertion

功能特点

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

配置步骤

  1. 添加 XPath2 断言

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

    • 名称:给 XPath2 断言一个有意义的名称。
    • XML 响应:选择要验证的 XML 响应部分(例如,响应数据)。
    • XPath2 表达式:输入用于匹配数据的 XPath2 表达式。
    • 验证存在性:选择是否验证节点的存在性。
    • 验证值:选择是否验证节点的值。
    • 期望值:输入期望的值。
    • 命名空间:如果 XML 响应中包含命名空间,可以在这里定义命名空间前缀和 URI。
    • 忽略空白:选择是否忽略 XML 文档中的空白字符。

参数说明

  • 名称:给 XPath2 断言一个有意义的名称。
  • XML 响应 :选择要验证的 XML 响应部分,例如:
    • 响应数据:验证响应体中的 XML 数据。
    • 响应代码:验证HTTP响应代码。
    • 响应消息:验证HTTP响应消息。
    • 响应头:验证HTTP响应头。
  • XPath2 表达式:输入用于匹配数据的 XPath2 表达式。
  • 验证存在性:选择是否验证节点的存在性。
  • 验证值:选择是否验证节点的值。
  • 期望值:输入期望的值。
  • 命名空间:如果 XML 响应中包含命名空间,可以在这里定义命名空间前缀和 URI。
  • 忽略空白:选择是否忽略 XML 文档中的空白字符。

示例配置

假设我们需要测试一个Web应用,并验证登录请求的 XML 响应数据中是否包含特定的字段和值,例如 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. 添加 XPath2 断言

    • 右键点击登录请求 -> 添加 -> 断言 -> XPath2 断言。
    • 配置 XPath2 断言:
      • 名称:验证用户ID
      • XML 响应:响应数据
      • XPath2 表达式//userId
      • 验证存在性:勾选
      • 验证值:勾选
      • 期望值:12345
      • 命名空间:如果 XML 响应中包含命名空间,可以在这里定义命名空间前缀和 URI。
      • 忽略空白:勾选
  5. 运行测试

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

优化建议

  1. XPath2 表达式

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

    • 根据实际需求选择合适的验证条件。例如,如果只需要验证节点的存在性,选择"验证存在性";如果需要验证节点的值,选择"验证值"。
  3. 命名空间

    • 如果 XML 响应中包含命名空间,确保在断言配置中正确定义命名空间前缀和 URI。
  4. 忽略空白

    • 如果 XML 文档中包含大量空白字符,选择"忽略空白"以避免因空白字符导致断言失败。
  5. 错误处理

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

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

示例配置详细说明

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

  1. 创建测试计划

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

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

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

    • 右键点击登录请求 -> 添加 -> 断言 -> XPath2 断言。
    • 配置 XPath2 断言:
      • 名称:验证用户ID
      • XML 响应:响应数据
      • XPath2 表达式//userId
      • 验证存在性:勾选
      • 验证值:勾选
      • 期望值:12345
      • 命名空间:如果 XML 响应中包含命名空间,可以在这里定义命名空间前缀和 URI。
      • 忽略空白:勾选
  5. 运行测试

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

6--Compare Assertion

功能特点

  • 数据比较:比较两个响应数据是否相同或不同。
  • 多种比较方式:支持多种比较方式,如完全相同、仅比较大小写、忽略空白等。
  • 灵活配置:可以设置多个断言条件,满足复杂的测试需求。

配置步骤

  1. 添加 Compare Assertion

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

    • 名称:给 Compare Assertion 一个有意义的名称。
    • 比较类型:选择比较类型(例如,完全相同、仅比较大小写、忽略空白等)。
    • 比较范围:选择要比较的响应数据部分(例如,响应数据、响应代码、响应消息等)。
    • 比较方式:选择比较方式(例如,相同或不同)。
    • 第一个采样器:选择第一个要比较的采样器。
    • 第二个采样器:选择第二个要比较的采样器。

参数说明

  • 名称:给 Compare Assertion 一个有意义的名称。
  • 比较类型 :选择比较类型,例如:
    • 完全相同:两个响应数据必须完全相同。
    • 仅比较大小写:仅比较响应数据的大小写。
    • 忽略空白:忽略响应数据中的空白字符。
    • 忽略换行符:忽略响应数据中的换行符。
  • 比较范围 :选择要比较的响应数据部分,例如:
    • 响应数据:比较响应体中的数据。
    • 响应代码:比较HTTP响应代码。
    • 响应消息:比较HTTP响应消息。
    • 响应头:比较HTTP响应头。
  • 比较方式 :选择比较方式,例如:
    • 相同:两个响应数据必须相同。
    • 不同:两个响应数据必须不同。
  • 第一个采样器:选择第一个要比较的采样器。
  • 第二个采样器:选择第二个要比较的采样器。

示例配置

假设我们需要测试一个Web应用,并验证两个请求的响应数据是否相同。我们将使用 Compare Assertion 来实现这一断言。

  1. 创建测试计划

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

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

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:请求1
      • 服务器名称或IP :目标服务器的地址(例如example.com)。
      • 端口号 :目标服务器的端口(例如80)。
      • 协议 :HTTP或HTTPS(例如HTTP)。
      • 方法:GET
      • 路径 :请求的路径(例如/api/data1)。
  4. 添加第二个请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:请求2
      • 服务器名称或IP :目标服务器的地址(例如example.com)。
      • 端口号 :目标服务器的端口(例如80)。
      • 协议 :HTTP或HTTPS(例如HTTP)。
      • 方法:GET
      • 路径 :请求的路径(例如/api/data2)。
  5. 添加 Compare Assertion

    • 右键点击线程组 -> 添加 -> 断言 -> Compare Assertion。
    • 配置 Compare Assertion:
      • 名称:比较响应数据
      • 比较类型:完全相同
      • 比较范围:响应数据
      • 比较方式:相同
      • 第一个采样器:请求1
      • 第二个采样器:请求2
  6. 运行测试

    • 点击工具栏上的"启动"按钮,运行测试。
    • 查看结果树监听器或查看结果文件,确保两个请求的响应数据相同。

优化建议

  1. 比较类型选择

    • 根据实际需求选择合适的比较类型。例如,如果需要完全相同的响应数据,选择"完全相同";如果只需要比较大小写,选择"仅比较大小写"。
  2. 比较范围

    • 根据需要验证的部分选择合适的比较范围。例如,如果只需要比较响应体中的数据,选择"响应数据"。
  3. 比较方式

    • 根据实际需求选择合适的比较方式。例如,如果需要确保两个响应数据相同,选择"相同";如果需要确保两个响应数据不同,选择"不同"。
  4. 错误处理

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

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

示例配置详细说明

假设我们有一个简单的测试计划,包含一个线程组和两个HTTP请求,并希望验证这两个请求的响应数据是否相同。

  1. 创建测试计划

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

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

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:请求1
      • 服务器名称或IPexample.com
      • 端口号:80
      • 协议:HTTP
      • 方法:GET
      • 路径:/api/data1
  4. 添加第二个请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:请求2
      • 服务器名称或IPexample.com
      • 端口号:80
      • 协议:HTTP
      • 方法:GET
      • 路径:/api/data2
  5. 添加 Compare Assertion

    • 右键点击线程组 -> 添加 -> 断言 -> Compare Assertion。
    • 配置 Compare Assertion:
      • 名称:比较响应数据
      • 比较类型:完全相同
      • 比较范围:响应数据
      • 比较方式:相同
      • 第一个采样器:请求1
      • 第二个采样器:请求2
  6. 运行测试

    • 点击工具栏上的"启动"按钮,运行测试。
    • 查看结果树监听器或查看结果文件,确保两个请求的响应数据相同。

7--HTML 断言

功能特点

  • 数据验证:验证 HTML 响应数据是否包含或不包含特定的内容。
  • 支持 CSS 选择器:使用 CSS 选择器定位和验证 HTML 数据中的元素。
  • 灵活配置:可以设置多个断言条件,满足复杂的测试需求。

配置步骤

  1. 添加 HTML 断言

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

    • 名称:给 HTML 断言一个有意义的名称。
    • CSS 选择器:输入用于匹配数据的 CSS 选择器。
    • 验证存在性:选择是否验证元素的存在性。
    • 验证值:选择是否验证元素的值。
    • 期望值:输入期望的值。
    • 忽略空白:选择是否忽略 HTML 文档中的空白字符。

参数说明

  • 名称:给 HTML 断言一个有意义的名称。
  • CSS 选择器:输入用于匹配数据的 CSS 选择器。
  • 验证存在性:选择是否验证元素的存在性。
  • 验证值:选择是否验证元素的值。
  • 期望值:输入期望的值。
  • 忽略空白:选择是否忽略 HTML 文档中的空白字符。

示例配置

假设我们需要测试一个Web应用,并验证登录请求的 HTML 响应数据中是否包含特定的元素和值,例如 <div class="user-id">12345</div>

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

    • 右键点击登录请求 -> 添加 -> 断言 -> HTML 断言。
    • 配置 HTML 断言:
      • 名称:验证用户ID
      • CSS 选择器.user-id
      • 验证存在性:勾选
      • 验证值:勾选
      • 期望值:12345
      • 忽略空白:勾选
  5. 运行测试

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

优化建议

  1. CSS 选择器

    • 确保 CSS 选择器正确无误,能够准确匹配所需的数据。可以使用浏览器开发者工具进行验证。
  2. 验证条件

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

    • 如果 HTML 文档中包含大量空白字符,选择"忽略空白"以避免因空白字符导致断言失败。
  4. 错误处理

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

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

示例配置详细说明

假设我们有一个简单的测试计划,包含一个线程组和一个HTTP请求,并希望验证登录请求的 HTML 响应数据中 .user-id 元素的值为 12345

  1. 创建测试计划

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

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

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

    • 右键点击登录请求 -> 添加 -> 断言 -> HTML 断言。
    • 配置 HTML 断言:
      • 名称:验证用户ID
      • CSS 选择器.user-id
      • 验证存在性:勾选
      • 验证值:勾选
      • 期望值:12345
      • 忽略空白:勾选
  5. 运行测试

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

8--JSON JMESPath Assertion

功能特点

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

配置步骤

  1. 添加 JSON JMESPath 断言

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

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

参数说明

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

示例配置

假设我们需要测试一个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 JMESPath 断言

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

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

优化建议

  1. JMESPath 表达式

    • 确保 JMESPath 表达式正确无误,能够准确匹配所需的数据。可以使用在线 JMESPath 测试工具进行验证。
  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 JMESPath 断言

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

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

相关推荐
字节程序员1 小时前
JMeter 二次开发之环境准备
jmeter
测试杂货铺2 小时前
Jmeter压测实战:Jmeter二次开发之自定义函数
自动化测试·软件测试·测试工具·jmeter·职场和发展·测试用例·压力测试
字节程序员2 小时前
Jmeter对图片验证码的处理【超详细】
jmeter
测试老哥3 小时前
外包干了两年,技术退步明显。。。。
自动化测试·软件测试·python·功能测试·测试工具·面试·职场和发展
测试19986 小时前
外包干了2年,技术退步明显....
自动化测试·软件测试·python·功能测试·测试工具·面试·职场和发展
Quz8 小时前
Wireshark协议相关功能:过滤、启用/禁用、导出和统计查看
网络·测试工具·wireshark
炭烤玛卡巴卡14 小时前
学习postman工具使用
学习·测试工具·postman
yinshuilan16 小时前
第2节-Test Case如何调用Object Repository中的请求并关联参数
测试工具
互联网杂货铺17 小时前
Postman接口测试:全局变量/接口关联/加密/解密
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·postman
waicsdn_haha17 小时前
Postman最新详细安装及使用教程【附安装包】
测试工具·api·压力测试·postman·策略模式·get·delete