使用JMeter(组件详细介绍+使用方式及步骤)

JSON操作符

在我们使用请求时,经常会遇到JSON格式的请求体,所以在介绍组件之前我会将介绍部分操作符,在进行操作时是很重要的

Operator

Description

$

表示根元素

@

当前元素

*

通配符,所有节点

..

选择所有符合条件的节点

.name

子元素,name是子元素名称

[start:end]

数组切片操作符

[?(<expression>)]

过滤器表达式,表达式要评估为布尔值

重要组件

在了解组件之前,我们要先了解,在JMeter中,元件的作用域以及执行顺序

作用域: 主要由测试计划的树形结构中的元件父子关系来确定

执行顺序:

  • 取样器中的元件内组件不依赖其他元件就可以执行,所以取样器不存在作用问题

  • 元件的作用域只对它的子节点有作用

  • 其他作用域默认根据测试计划中树形结构来决定

所以对于当进行测试时,如果出现了问题,在检查完请求体以及各项信息之后还有问题,那就可以检查一下组件的顺序

线程组

用来控制JMeter中要用来执行测试的线程数,也可以把一个线程理解为一个测试用户

HTTP取样器

用来设置 http 请求

如果我们要满足中文,可以在内容编码出填写 utf-8 

查看结果树

用来查看请求的结果以及请求和响应的详细信息

HTTP Cookie管理器

添加了 HTTP Cookie管理器 之后,就会自动存储并发送Cookie

可以像Web浏览器一样存储和发送Cookie,如果http请求中有Cookie,并会用来进行特定网址的请求

添加之后,就会自动获取cookie并添加入请求,并不需要额外的配置

HTTP 请求默认值

我们可以将所有请求的公共部分填在一起,之后进行每次请求的时候就会获取默认值

一般是填写: 协议、IP、端口号

继承这些默认值的请求就无需再填写对应的内容

用户定义的变量

有时我们只想在固定的场景下使用参数,并且改动后不希望影响其他的脚本

需要结合json操作符

使用方法: 在 HTTP 请求的取样器中引入定义的变量 ${参数名}

使用场景: 变量需要在多个脚本中使用,方便进行统一管理和修改,尤其是多个请求的变量都是同一变量时,就可以进行统一管理

 

JSON断言

接口发送请求成功,响应码为200(就是自己设置的请求成功的响应码)并不能完全代表接口请求成功,此时就需要关注接口响应数据是否符合预期

  • 针对某一HTTP请求接口添加JSON断言

  • 添加JSON配置: 和JSON提取器语法配置相同

具体设置:

  • 不选 Additionally assert value ,表示添加断言值,只会用来判断字段是否存在,不会对字段的值进行匹配

  • 选择 Additionally assert value ,表示必须添加 Expected Value 期望的断言值,如果此时没有勾选 Match as regular expression ,就会进行完整政正则匹配,即获得内容要和设置内容完全一致

  • 如果选择 Additionally assert value ,并且选 Match as regular expression 正则匹配,则Expected Value 只需要填写部分关键词就行,类似于模糊查询

其中正则表达式需要我们进行了解,我将对一些常见的正则表达符号进行介绍

字符

描述

[……]

匹配括号内的所有字符

[^……]

匹配除了括号内的所有字符

[A-Z]

匹配所有大写字母

[a-z]

匹配所有小写字母

.

匹配除换行符之外的任何单个字符

\s

匹配所有空白符

\S

匹配所有非空白符,不包括换行

\w

匹配字母、字母、下划线

\d

匹配任意一个阿拉伯数字

更多详细可以查看网页: https://www.runoob.com/regexp/regexp-syntax.html

JSON提取器

接口相应成功后,通过提取返回值对应的字段,可以用于其他接口的参数配置,尤其是 token 

那我们要怎么获取对应信息呢?这里也要我们结合json操作符

假设以下是我的json字段

{
    "code": 200,
    "data": null,
    "message": "æ\u0088\u0090å\u008A\u009F"
}

那么此时我要使用 code ,要怎么获取呢?

这里我们查询到了之后,就要去JSON提取器中设置了

配置完成之后,我们就要去 HTTP请求 中进行使用了

然后点击运行,我们就可以看到请求中带入了设置的JSON字段了

CSV数据文件设置 (CSV Data Set Config)

在实际使用中,对于一个接口,我们不可能一直只有一个用户会使用这个接口,更多时候是若干个用户同时使用,那么如果我们只测试一个账号,就会有很多问题无法完全体现,为了更加真实的模拟正常情况,我们就需要同时使用多个用户,这里就需要我们使用 数据文件设置了

在使用之前,我们先来了解这些配置

遇到文件结束符再次循环: 若选择为 true ,当数据不够时就会从头开始重新取; 若选择为 false ,就需要勾选后续的配置,遇到文件结束符就会停止线程(不勾选就会报错)

那么我们要怎么编写 csv文件 呢? 使用 Excel ,编写表格完成之后保存为 .csv 文件

修改配置

修改完之后,当我们发送请求,程序就可以从 csv文件 中获取参数(从上往下依次获取)

同时,因为我们添加了多组数据,我们就需要修改线程数,一个线程用来对应一组数据

只有这样才能保证每次获得的数组不一样

运行结果

同步定时器(集合点)

我们虽然定义了多个线程,但是我们怎么能保证他们是同一时间进行呢?怎么保证线程不是一个一个进行呢?

我们可以通过右上角的三角符号查看线程的运行顺序,这里还可以查看运行时间以及未完成的线程个数

如果我们要让这些线程同时运行,就需要使用同步定时器

在使用之前,我们也要来查看它的配置

需要注意的是: 模拟用户组的数量是不能超过线程组里配置的线程数

在实际运行中, 当进行等待的 进程数>=设置数 时,就直接发送请求,我们举个例子:

在等红绿灯的时候,如果规定一个路口最多能经过5个行人,但是实际情况确是,你不知道什么时候能够到达5个人,还很有可能在到达5个人的时候,同时还达到了6个人,此时已经达到了经过条件,那么也是可以通过路口的

所以 当配置的数量小于线程数时,最好把循环打开,避免最后一次状态为准备好的线程数量达不到进行并发的数量 

事务控制器

主要是用来进行测试执行嵌套测试元素所花费的时间,用来模拟用户进行一系列操作的测试

可以更好的测试复杂环境

在没有添加事务控制器之前,一个接口就是一个事务

添加之后,就可以将多个接口放在一起表示一个业务

举例:

从这些测试结果中,我们要怎么来看具体性能怎么样呢?

指标

对应

说明

Sample

样本数

发起的HTTP请求调用数

Average

平均值

平均响应时间,单位为毫秒

Median

中位数

请求调用响应时间的中间值,也就是50%请求调用的响应时间,单位为毫秒

90%Line

90%百分位

90%请求调用的响应时间,单位为毫秒

95%Line

95%百分位

95%请求调用的响应时间,单位为毫秒

99%Line

99%百分位

99%请求调用的响应时间,单位为毫秒

Min

最小值

请求调用的最小响应时间,单位为毫秒

Max

最大值

请求调用的最大响应时间,单位为毫秒

Error%

异常%

调用失败的请求占比,调用失败一般指响应断言失败或者请求调用出错

Throughput

吞吐量

TPS/QPS 每秒处理的事务数

KB/sec

接收/发送

每秒网络传输的流量大小,单位为KB,这个指标是以网络传输的大小来衡量网络的吞吐量

插件

在真实情况下,我们经常需要一点一点的增加线程数,所以需要一些插件

在这之前,我们要为JMeter添加能够添加插件的功能

https://jmeter-plugins.org/install/Install/

下载完之后,放入 自己下载的JMeter文件下的lib/ext路径下 ,然后重启JMeter

重启之后,右上角就多了一个图标

点击,对以下常用插件进行下载

点击右下角下载,下载完成之后会自动重启

下载完成之后,就可以在线程和监听器中看到新的元件

Stepping Thread Group

让我们举一个例子

表示,总共有30个进程,从零开始,每一秒有5个进程做好准备,一组准备好之后,等三秒进行下一组准备,等线程数达到30之后,线程开始运行,并保持运行60秒就开始结束,一次结束5个线程,每隔1秒就会结束5个线程

Response Times Over Time

在测试过程中,它可以帮助测试人员观察并分析响应时间的实时平均值以及整体响应时间的走向。通过这一监听器,测试人员能够更直观地了解系统在不同时间点的响应性能,从而发现可能存在的性能问题或瓶颈。

横坐标通常代表运行时间,而纵坐标则代表响应时间(单位是毫秒)。测试人员可以根据图形中的趋势线来判断响应时间的稳定性以及是否存在大的波动。例如,如果响应时间在某个时间点突然增加,这可能意味着系统在该时间点遇到了性能问题。

Transactions per Second (TPS)

TPS监听器是一个用于分析系统吞吐量的重要工具。TPS,即每秒事务数,表示一个客户和向服务器发送请求后服务器做出反应的过程。这个指标反映了系统在同一时间内处理业务的最大能力。TPS值越高,说明系统的处理能力越强。

在使用TPS监听器时,横坐标通常代表运行时间,而纵坐标则代表TPS值。通过监听器展示的图表,可以清晰地看到TPS值随时间的变化情况。在图表中,红色通常表示通过的TPS,而绿色可能表示失败的TPS。这有助于我们快速识别系统性能的变化和瓶颈。

测试报告

JMeter的测试报告是一个非常详细的文档,它提供了测试执行结果的详细信息

我们需要在控制台使用对应指令来生成报告

jmeter -n -t 脚本文件名(加后缀) -l 日志文件名 -e -o 目录(被保存的地方)

-n : 无图形化运行(后台运行,不需要打开JMeter运行)
-t : 被运行的脚本
-l : 将运行信息写入日志文件,后缀必须要为 jtl 的日志文件
-e : 生成日志报告
-o : 指定报告的输出目录
注意: 日志文件和目录可以不存在,若为已经存在的情况下需要保证内容为空,否则会出现错误

打开 index.html ,就可以看到测试报告了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/983069.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AI编程工具-(六)

25030607 这两天依然是用通义灵码做数据分析建模&#xff0c;流程没有改进想法。阻塞感明显&#xff0c;需要更多的动脑了。 数据依然是之前的数据。时序数据B预测时序数据A。 准备工作1 问模型思路&#xff0c;但是我没想出新思路&#xff0c;所以没看出啥。 数据分析1 分…

deepseek使用记录18——艺术的追问

一 好的&#xff0c;基于前面学习结果&#xff0c;再写一篇有艺术美的文章 《美的起义》 凌晨四点的茶摊在电子支付二维码下苏醒&#xff0c;蒸腾的水汽中浮动着八百年前建盏的釉色。老板娘把栀子花插在共享单车车筐里&#xff0c;花瓣的弧度与北宋汝窑青瓷的冰裂纹暗合&…

【接口封装】——18、添加目录项列表响应

解释&#xff1a; 1、封装内容&#xff1a;列表显示 2、Qt::UserRole&#xff1a;设置不同的值&#xff0c;以此区分多级目录项 函数定义&#xff1a; void onTreeItemClicked(QTreeWidgetItem* item);void onTreeItemDoubleClicked(QTreeWidgetItem* item);void onTreeItemExp…

基于大数据挖掘与机器学习的家政行业整体素质提升因素分析

目录 ✨摘要 ✨一、绪论 ✨二、研究内容与方法 ✨三、数据处理 ✨四、客户对家政从业者的需求——基于词频分析和词云图 ✨五、家政从业者综合评估因子分析 ✨六、人员专业水平与预期工资的关系——回归分析 ✨七、基于机器学习的预测——BP 神经网络 ✨八、根据因素对…

利用 requestrepo 工具验证 XML外部实体注入漏洞

1. 前言 在数字化浪潮席卷的当下&#xff0c;网络安全的重要性愈发凸显。应用程序在便捷生活与工作的同时&#xff0c;也可能暗藏安全风险。XXE&#xff08;XML外部实体&#xff09;漏洞作为其中的典型代表&#xff0c;攻击者一旦利用它&#xff0c;便能窃取敏感信息、掌控服务…

从 Faith 与 Belief 的语义与语境辨析中解析其宗教哲学内涵

注&#xff1a;本文是对 《信仰与理性&#xff1a;信仰的认识论》 中 “Part 5. Faith as belieff” 的 “咬文嚼字”的语义辨析。 第二篇涉及 bible&#xff0c;不看 religion &#xff0c;只看语义解析。 机翻&#xff0c;未校。 Main Difference – Faith vs Belief July…

TypeError: Cannot read properties of undefined (reading ‘xxx‘)

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 &#x1f35a; 蓝桥云课签约作者、…

【无人机三维路径规划】基于CPO冠豪猪优化算法的无人机三维路径规划Maltab

代码获取基于CPO冠豪猪优化算法的无人机三维路径规划Maltab 基于CPO冠豪猪优化算法的无人机三维路径规划 一、CPO算法的基本原理与核心优势 冠豪猪优化算法&#xff08;Crested Porcupine Optimizer, CPO&#xff09;是一种新型元启发式算法&#xff0c;其灵感来源于冠豪猪的…

阿里推出全新推理模型(因果语言模型),仅1/20参数媲美DeepSeek R1

阿里Qwen 团队正式发布了他们最新的研究成果——QwQ-32B大语言模型&#xff01;这款模型不仅名字萌萌哒(QwQ)&#xff0c;实力更是不容小觑&#xff01;&#x1f60e; QwQ-32B 已在 Hugging Face 和 ModelScope 开源&#xff0c;采用了 Apache 2.0 开源协议。大家可通过 Qwen C…

电脑总显示串口正在被占用处理方法

1.现象 在嵌入式开发过程中&#xff0c;有很多情况下要使用串口调试&#xff0c;其中485/422/232转usb串口是非常常见的做法。 根据协议&#xff0c;接口芯片不同&#xff0c;需要安装对应的驱动程序&#xff0c;比如ch340&#xff0c;cp2102&#xff0c;CDM212364等驱动。可…

记录片《遇见大连》

目录标题 遇见大连1、项目基本信息2、内容特色与创作理念 一、蓝色的浪漫星空摄影师“修船诗人”荧光海爱情 | “有一座城叫大连”风光摄影师银沙滩 | 潜水 | 赵大千&#xff1a;海洋生物科普乌蟒岛 | 海鸟野外攀岩 | 积极乐观赶海萨克斯熊洞街风电场 遇见大连 1、项目基本信息…

双足机器狗开发:Rider - Pi

双足机器狗开发:Rider - Pi https://github.com/YahboomTechnology/Rider-Pi-Robot 项目介绍 Rider - Pi是一款为开发者、教育工作者和机器人爱好者设计的桌面双轮腿式机器人,它基于树莓派CM4核心模块构建,具备多种先进功能和特点: 硬件特性 核心模块:采用树莓派CM4核…

BUUCTF——[GYCTF2020]FlaskApp1 SSTI模板注入/PIN学习

目录 一、网页功能探索 二、SSTI注入 三、方法一 四、方法二 使用PIN码 &#xff08;1&#xff09;服务器运行flask登录所需的用户名 &#xff08;2&#xff09;modename &#xff08;3&#xff09;flask库下app.py的绝对路径 &#xff08;4&#xff09;当前网络的mac地…

ESP32S3N16R8驱动ST7701S屏幕(vscode+PlatfoemIO)

1.开发板配置 本人开发板使用ESP32S3-wroom1-n16r8最小系统板 由于基于vscode与PlatformIO框架开发&#xff0c;无espidf框架&#xff0c;因此无法直接烧录程序&#xff0c;配置开发板参数如下&#xff1a; 在platformio.ini文件中&#xff0c;配置使用esp32-s3-devkitc-1开发…

掌握Kubernetes Network Policy,构建安全的容器网络

在 Kubernetes 集群中&#xff0c;默认情况下&#xff0c;所有 Pod 之间都是可以相互通信的&#xff0c;这在某些场景下可能会带来安全隐患。为了实现更精细的网络访问控制&#xff0c;Kubernetes 提供了 Network Policy 机制。Network Policy 允许我们定义一组规则&#xff0c…

清华北大推出的 DeepSeek 教程(附 PDF 下载链接)

清华和北大分别都有关于DeepSeek的分享文档&#xff0c;内容非常全面&#xff0c;从原理和具体的应用&#xff0c;大家可以认真看看。 北大 DeepSeek 系列 1&#xff1a;提示词工程和落地场景.pdf  北大 DeepSeek 系列 2&#xff1a;DeepSeek 与 AIGC 应用.pdf  清华 Deep…

【GoTeams】-4:为项目引入etcd

本文目录 1. 书接上回2. 引入etcddiscoverystruct{}{} resolverserver 3. 将服务注册到etcd中4. 梳理下etcd调用逻辑 1. 书接上回 本节是为项目引入etcd这个环节&#xff0c;然后我们来看看具体该怎么实现。 首先来谈谈为什么要引入服务发现&#xff1f; 动态服务注册与发现…

ReferenceError: assignment to undeclared variable xxx

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 &#x1f35a; 蓝桥云课签约作者、…

如何在WPS中接入DeepSeek并使用OfficeAI助手(超细!成功版本)

目录 第一步&#xff1a;下载并安装OfficeAI助手 第二步&#xff1a;申请API Key 第三步:两种方式导入WPS 第一种:本地大模型Ollama 第二种APIKey接入 第四步&#xff1a;探索OfficeAI的创作功能 工作进展汇报 PPT大纲设计 第五步&#xff1a;我的使用体验(体验建议) …

fiddler everywhere 绿色永久版

目录&#xff1a; 1. 下载并安装 FiddlerEverywhere v5.16.02. 下载并安装 FiddlerEverywherePatcher 补丁3. 修改 FiddlerEverywhere 版本号4. 再打开 FiddlerEverywhere 即可正常使用 亲测有效&#xff01;&#xff01;&#xff01;以 Windows 10 FiddlerEverywhere v5.16.0 …