Jmeter学习深入

Jmeter学习深入

一、jmeter接口关联

提取器:

。 CS5:给网页使用

。JSON:给JSON数据使用

。 边界:给字符串使用

。正则:更加高级的字符使用

。XPath:给网页使用

必须掌握:

JSON+边界

JSON + 正则

1.边界提取器

给定两边取中间

2.正则提取器

正则:强大并且复杂

通过指定正则表达式,把数据提取出来N个,保存到变量中

使用变量时,通过 变量名+ gN 选择第几个变量

3.json提取器

JSON Extractor 是 JMeter 中的一个后处理器,用于从 HTTP 响应中的 JSON 内容提取值。它基于 JSONPath 表达式来查询 JSON 数据。JSONPath 是到 JSON 文档中的特定部分的路径表达式(类似于 XPath 用于 XML),用于简化和加速数据访问。

常用 JSONPath 语法
  • $:根元素
  • .[] :子元素操作符,可以用来访问子字段或者属性。例如,$.store.book$['store']['book']
  • ...:递归下降。无论位置如何,都会查找某个名称的字段。
  • [*]:通配符,匹配所有元素项。
  • [0,1]:数组索引,可以直接访问数组中的元素。
  • [:2]:数组切片操作,提取到第二个元素为止但不包括它(索引基于0)。
  • [?(@.age>18)]:过滤表达式。可用于查找数组中满足条件的元素。
  • @:当前节点的符号。
如何使用 JSON Extractor
  1. 添加 JSON Extractor

    在您的测试计划中,首先进行一个 HTTP 请求,然后作为该请求的子元素添加 JSON Extractor。在 JMeter 中,右击请求 -> 添加 -> 后处理器 -> JSON 提取器。

  2. 配置 JSON Extractor

    • 变量名称:提取出的数据将存储在这个变量名中,供后续使用。
    • JSONPath 表达式:用于定位和提取 JSON 数据的表达式。
    • 默认值:如果 JSONPath 没有找到数据,将使用这个值。
  3. 使用提取的数据

    提取的数据将存储在变量中,可以在后续的请求或断言中使用这些变量。

示例

假设您有以下 JSON 响应:

json 复制代码
{
  "store": {
    "book": [
      { "category": "reference",
        "author": "Nigel Rees",
        "title": "Sayings of the Century",
        "price": 8.95
      },
      { "category": "fiction",
        "author": "Evelyn Waugh",
        "title": "Sword of Honour",
        "price": 12.99
      }
    ],
    "bicycle": {
      "color": "red",
      "price": 19.95
    }
  }
}

如果您想提取第二本书的作者名,JSONPath 表达式将是 $.store.book[1].author。在 JSON Extractor 中,您将此表达式输入到 JSONPath 表达式字段,并为输出定义一个变量名称,例如 secondAuthor

这种方式使 JMeter 能够在性能测试中非常灵活地处理和校验 JSON 格式的响应数据,从而更好地模拟复杂的用户交互和数据驱动的场景。

二、Jmeter接口断言

1.默认断言

默认情况下,预期状态码小于400

状态码:

。1xx:继续请求

。2xx:请求成功

。3xx:重新请求

。4xx:客户端错误(你错了)

。5xx:眼务端错误(我错了)

2.普通断言

对提取结果进行断言

3.自定义断言

在 JMeter 中,除了使用内置的断言组件外,还可以通过自定义断言来实现更复杂和特定的验证逻辑。

使用 JSR223 断言

JSR223 断言提供了一个灵活的环境,您可以在其中使用支持的脚本语言(如 Groovy, JavaScript, Python 等)来编写自定义逻辑。Groovy 是最常推荐的,因为它与 Java 高度集成,并且性能优异。

步骤:
  1. 添加 JSR223 断言

    在您的测试计划中,选择需要添加断言的采样器(如 HTTP 请求)。右击采样器 -> 添加 -> 断言 -> JSR223 断言。

  2. 编写断言脚本

    在断言组件的脚本部分,您可以编写自定义的脚本来验证响应是否符合预期。可以访问 JMeter API 和 Java 类库,以及通过前面处理器或采样器定义的变量。

示例脚本:

假设从前面的 JSON 提取器中获取了一个变量 secondAuthor,现在需要验证这个作者是否是 "Evelyn Waugh"。

groovy 复制代码
// Groovy 断言脚本
String expectedAuthor = "Evelyn Waugh"
String actualAuthor = vars.get("secondAuthor")

if (actualAuthor == null || !actualAuthor.equals(expectedAuthor)) {
    AssertionResult.setFailure(true)
    AssertionResult.setFailureMessage("Author does not match expected. Expected: " + expectedAuthor + ", but was: " + actualAuthor)
}
脚本解释:
  • vars:这是一个 JMeter 内置对象,用于访问所有定义的变量。
  • AssertionResult:用于设置断言结果。如果条件不满足,需要手动设置失败状态和失败消息。
注意事项:
  • 性能影响:自定义脚本可能会比内置的断言组件执行更慢,因为脚本需要在运行时编译和执行。在高负载测试中,这可能会影响整体性能测试的结果。
  • 脚本错误处理:确保脚本中有适当的错误处理逻辑,避免因脚本错误而导致测试计划意外中断。
  • 调试:调试自定义脚本可能比使用内置组件更复杂。建议在开发过程中添加适当的日志记录,帮助跟踪问题。

三、实战

1.仔细分析项目
2.创建公共元件
3.补全取样器和子级辅助元件
4.测试
相关推荐
1 9 J7 分钟前
数据结构 C/C++(实验五:图)
c语言·数据结构·c++·学习·算法
6.941 小时前
Scala——身份证号码查询籍贯
学习·scala
爱吃西瓜的小菜鸡2 小时前
【C语言】矩阵乘法
c语言·学习·算法
初学者7.2 小时前
Webpack学习笔记(2)
笔记·学习·webpack
创意锦囊5 小时前
随时随地编码,高效算法学习工具—E时代IDE
ide·学习·算法
尘觉5 小时前
算法的学习笔记—扑克牌顺子(牛客JZ61)
数据结构·笔记·学习·算法
1 9 J5 小时前
Java 上机实践11(组件及事件处理)
java·开发语言·学习·算法
Blankspace学5 小时前
Wireshark软件下载安装及基础
网络·学习·测试工具·网络安全·wireshark
南宫生6 小时前
力扣-图论-70【算法学习day.70】
java·学习·算法·leetcode·图论
bohu836 小时前
sentinel学习笔记1-为什么需要服务降级
笔记·学习·sentinel·滑动窗口