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.测试
相关推荐
自强的小白38 分钟前
vlan(局部虚拟网)
网络·学习
一只乔哇噻1 小时前
java后端工程师进修ing(研一版 || day41)
java·开发语言·学习·算法
知识分享小能手1 小时前
React学习教程,从入门到精通,React 使用属性(Props)创建组件语法知识点与案例详解(15)
前端·javascript·vue.js·学习·react.js·前端框架·vue
知识分享小能手7 小时前
React学习教程,从入门到精通, React 属性(Props)语法知识点与案例详解(14)
前端·javascript·vue.js·学习·react.js·vue·react
茯苓gao10 小时前
STM32G4 速度环开环,电流环闭环 IF模式建模
笔记·stm32·单片机·嵌入式硬件·学习
是誰萆微了承諾10 小时前
【golang学习笔记 gin 】1.2 redis 的使用
笔记·学习·golang
DKPT11 小时前
Java内存区域与内存溢出
java·开发语言·jvm·笔记·学习
aaaweiaaaaaa11 小时前
HTML和CSS学习
前端·css·学习·html
看海天一色听风起雨落12 小时前
Python学习之装饰器
开发语言·python·学习
speop13 小时前
llm的一点学习笔记
笔记·学习