当前位置: 首页 > article >正文

Jmeter学习深入

Jmeter学习深入

一、jmeter接口关联

提取器:
。 CS5:给网页使用
。JSON:给JSON数据使用
。 边界:给字符串使用
。正则:更加高级的字符使用
。XPath:给网页使用

必须掌握:
JSON+边界
JSON + 正则

1.边界提取器

给定两边取中间

image-20241016202311541

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 响应:

{
  "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.普通断言

image-20241016204751282

对提取结果进行断言

3.自定义断言

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

使用 JSR223 断言

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

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

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

示例脚本:

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

// 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.创建公共元件

image-20241016210548426

3.补全取样器和子级辅助元件
4.测试

http://www.kler.cn/news/358928.html

相关文章:

  • Django学习- ORM基础操作_创建数据
  • 【Conda】解决 Conda 安装包时遇到的 `Collecting package metadata` 问题
  • 建筑智能化:为你打造智能生活
  • RISC-V笔记——RVWMO基本体
  • ArkTs学习笔记
  • 清空redo导致oracle故障恢复---惜分飞
  • 【存储设备专栏 2.8 -- linux 下挂载命令 mount 与 gio mount】
  • 构建高效在线考试平台:Spring Boot与JavaWeb的融合
  • 浅谈数据库选型
  • 简单易用的分类任务开源项目 :classification
  • Adobe的反击,传统大厂全面AI化,正面激战OpenAI!
  • React 进阶阶段学习计划
  • 数据结构(七大排序)
  • XML\XXE漏洞基本原理
  • list转map常用方法
  • curl支持ssl错误:curl: (60) SSL certificate problem: certificate is not yet valid
  • 科研绘图系列:R语言象限热图(quadrant heatmap)
  • Pandas分组与分箱
  • 【jQuery】jQuery 处理 Ajax 以及解决跨域问题的方式
  • 【重学 MySQL】七十、揭秘数据库对象,打造高效数据管理之旅