Jmeter学习深入

embedded/2024/10/21 22:33:06/

Jmeter学习深入

jmeter_4">一、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.ppmy.cn/embedded/129380.html

相关文章

10 django管理系统 - 管理员管理 - 新建管理员(通过模态框和ajax实现)

在文章“04 django管理系统 - 部门管理 - 新增部门”中&#xff0c;我们通过传统的新增页面来实现部门的添加。 在本文中&#xff0c;我们通过模态框和ajax来实现管理员的新增。 首先在admin_list.html中新建入口&#xff0c;使用按钮 <div class"panel-heading&quo…

全方面熟悉Maven项目管理工具(一)认识Maven、Maven如何安装?

1. Maven 1.1 应用场景&#xff1a; 本地仓库&#xff1a; 我们使用的jar依赖于maven的本地仓库 自动部署&#xff1a; 本地仓库推送到远程仓库&#xff0c; 远程库通知 Jenkins工具&#xff0c;Jenkins 调用Maven构建war包&#xff0c;Jenkins 再调用准备好的脚本程序&…

C++11 异常处理:优势、劣势与规范

目录 一、传统错误处理方式 二、C11 异常处理机制 三、C11 异常处理的优点 四、C11 异常处理的缺点 五、总结 在 C 编程中&#xff0c;异常处理是一种重要的错误处理机制。C11 对异常处理进行了一些改进和规范&#xff0c;本文将详细介绍 C11 异常处理的特点、优势、劣势以…

建筑智能化:为你打造智能生活

在当今科技迅猛发展的时代&#xff0c;建筑智能化成为了现代社会中不可或缺的一环。它让我们的生活更加便利舒适&#xff0c;也提高了工作效率和安全性。视频监控、系统集成、智能照明、安防管理、消防管理、停车场管理、电梯管理以及信息发布&#xff0c;这些都是建筑智能化的…

AWS账号的费用结构与使用指南

亚马逊网络服务&#xff08;AWS&#xff09;是全球领先的云计算平台&#xff0c;提供各种服务&#xff0c;包括计算、存储、数据库、人工智能等。对于许多新用户来说&#xff0c;在创建AWS账号时&#xff0c;常常会有一个疑问&#xff1a;AWS账号需要费用吗&#xff1f;我们九河…

生成式人工智能如何帮助我们更有效地传达信息

来源&#xff1a;Graves, C. (2023, February 16). Generative AI can help you tailor messaging to specific audiences. Harvard Business Review. https://hbr.org/2023/02/generative-ai-can-help-you-tailor-messaging-to-specific-audiences 想象一下&#xff0c;你是一…

面向带宽受限网络的端到端IP头部压缩数据包转发框架

论文标题&#xff1a;An End-to-End IP Header Compressed Packet Forwarding Framework for Bandwidth-Constrained Networks 中文标题&#xff1a;面向带宽受限网络的端到端IP头部压缩数据包转发框架 作者信息&#xff1a;Wen-Kang Jia&#xff08;高级会员&#xff0c;IEE…

C++ string(2)

文章目录 1.初识迭代器和范围for1.1迭代器1.2范围for1.3 aout关键字 2.字符串长度相关计算1.size 和 length2. capacity 和 reserve 3.例题演示1. [917. 仅仅反转字母 - 力扣&#xff08;LeetCode&#xff09;](https://leetcode.cn/problems/reverse-only-letters/description…