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

JMeter配置和使用入门指南

🌈感谢大家的阅读、点赞、收藏和关注

💕希望大家喜欢我本次的讲解💕

性能测试工具jmeter可以用来做接口测试,广泛用于做性能测试(我们可以针对接口用postman来做功能测试,功能测试没有问题再来做性能测试)。

目录

✨jmeter的配置

打开jmeter的方式:

1、找到保存jmeter的路径,打卡bin文件夹 在里面找到jmeter.bat文件然后双击打开。

2、给jmeter的启动程序所在的文件配置环境变量,在终端执行命令 jmeter 打卡jmeter程序。

给jmeter设置成中文

字体调整

✨如何使用jmeter来配置一个基本的url请求?

1、创建线程组

2、创建请求

3、配置查看结果树

HTTP信息管理头器

元件作用域

HTTP请求默认值

JSON提取器

JSON断言


✨jmeter的配置

打开jmeter的方式:

1、找到保存jmeter的路径,打卡bin文件夹 在里面找到jmeter.bat文件然后双击打开。

就会弹出一个命令框和jmeter

注意,这两个任意一个关闭,jmeter都会退出关闭。

但是这种方法很麻烦 需要记住jmeter存放的位置再去点击jmeter.bat

2、给jmeter的启动程序所在的文件配置环境变量,在终端执行命令 jmeter 打卡jmeter程序。

需要先找到jmeter的bin所在路径复制

然后配置环境变量,找到path双击,然后新建环境变量,把刚刚复制的路径粘贴进去:

然后打卡cmd终端输入jmeter就能启动jmeter程序了

如果不配置环境变量的话,系统就识别不了jmeter命令不会启动程序。

给jmeter设置成中文

但是我们打开的jmeter是英文的,可以通过配置来设置成中文。

首先还是打开jmeter的bin文件,找到jmeter.properties文件

打开它找到langua=en这一行,把en换成zh_CN表示简体中文。

保存修改后,重新用命令打开jmeter就是中文了:

字体调整

默认打开jmeter后字体是比较小的

点击选项后有“放大”和“缩小”可调整字体大小。

针对接口进行性能测试首先需要对接口有一定的了解,比如接口的请求方法、url、有没有请求头的限制、请求参数的限制等。

✨如何使用jmeter来配置一个基本的url请求?

1、创建线程组

首先需要我们右键测试计划来添加一个线程组,

线程组中配置了多少个线程,就会有多少个线程同时请求我们的接口,进而达到并发的目的。

创建好了之后,如下图,这就是线程组的配置,

名称就是对这个线程组取一个名字,改了名字之后左侧“线程组”也会随之变化。

注释可以用来提醒我们这个线程组是用来干嘛的。

在取样器错误后要执行的动作,

继续——>比如 现在配置的线程组对我们的接口要发起5次请求,前2次成功,第3次失败了,“继续”就表示继续发起后续的2次请求。

我们一般都选择这个“继续”。

启动下一进程循环——>比如 线程循环2次,每次 5 请求。第 3 次请求失败 → 放弃本次循环的 4、5 请求 → 直接开始第 2 次循环的 5 个请求

停止线程——>表示 这个线程立刻停止,不再执行任何后续请求。其他线程不受影响。

停止测试是等待发起请求的线程结束了再停止,后续不再发起请求 、立即停止测试是不管现在线程是什么状态都立即停止。

线程数我们可以理解为并发数,也可以叫虚拟用户数我们需要同时发起多少个请求,就填几个线程数。

Ramp-Up时间是启动所有线程所需要花费的总时间。

JMeter会在Ramp-Up时间内,均匀地启动指定数量的线程。比如我们线程数是10,Ramp-Up时间是5,那么JMeter会每隔0.5秒(5秒/10个线程)启动1个线程。

Ramp-Up时间可以模拟用户逐渐增加的场景,更真实地反映服务器性能。

循环次数表示循环执行线程组多少次。比如线程数是3,循环次数是2,那么一共就会发起请求6次。

勾选了“永远”的话,必须打开“调度器”并配置。

如上图,这就表示在2s内3个虚拟用户不断的发起请求,具体请求多少次是不得而知的。

2、创建请求

接下来就是右键线程组添加HTTP请求。

添加HTTP请求,我们需要知道:url+方法+请求参数+请求头中有没有特殊配置。

如何判断请求头中有没有特殊配置呢?有一个简单的方法,就是把 url+方法+请求参数 这三个直接填写到postman中去进行接口测试看看能不能跑通,如果能,说明请求头中不需要额外配置。

我们再来看一下HTTP的基本配置,如图
比如这个url,http://47.108.157.13:8090/blog_login.html,协议就是http,服务器名称或IP是 47.108.157.13, 端口号是 8090, 路径是/blog_login.html

点击“启动”,就能运行这个测试计划

点击运行后会提示我们保存,需要我们保存一下文件。

运行起来之后我们感觉什么都没有发生 没看到效果,这就需要我们配置查看结果树

3、配置查看结果树

右键线程组,点击添加监听器,找到“查看结果树”。

这样配置好的 查看结果树 就和这个线程组下创建的HTTP请求在一个作用域,那么这个结果树就能查看到这个作用域中的所有请求结果。

现在我们再次点击运行,就能看到结果树中有请求

我们可以看到HTTP请求在取样器中,因此我们一般又会用取样器来代称HTTP请求。

通过接口请求前面的绿色盾牌、取样器结果中 Response code: 200都能判断出接口请求成功。



如图,这里的1-1、1-2、1-3前面的1指的是第一个线程组,1、2、3是线程的编号,这3个线程都在一个线程组中。

图中的Sample Start就是取样器(HTTP请求)的执行时间。

Load time是响应时间,单位是毫秒ms。

在请求中,我们可以看到请求头和请求体:

响应数据中,我们可以看到响应数据和响应体:

从图中响应头的信息我们可以看到响应体的格式是json格式。

但是jmeter默认的是text格式,我们可以自己手动切换

切换json格式后:

如下图,红色的一般就表示请求失败。
但是我们不能只通过盾牌颜色来判断成功与否,我们还需要检查接口返回的响应数据是否正确。


HTTP信息管理头器

未登录状态下请求某些接口会失败,需要我们携带用户的凭证。这就和我们在postman中进行某些接口测试是一样的,都需要在请求头中添加需要的信息才会执行成功。

但是在jmeter的HTTP请求中没有能添加请求头信息的地方,这就需要添加另外一个东西了——HTTP信息管理头器。

在HTTP信息头管理器中添加了配置后,线程组中的HTTP请求在发起请求之前都会给请求头添加上HTTP信息头管理器中添加的配置。

如果我只想让HTTP信息头管理器作用于某个HTTP请求,那么就在该HTTP请求下添加这个HTTP信息头管理器。我们也可以双击想要挪动的HTTP请求头管理器把它移动到想要作用的HTTP信息头管理器下面。

元件作用域

如果存在父子元件,则作用域是父子关系;

如果同一层级有多个HTTP请求,对于同一个线程按从上往下的顺序依次执行。

对于大多数配置元件,作用域在它所在的同一层级及子级。

HTTP请求默认值

我们还可以来添加HTTP请求默认值,

对于HTTP接口请求中的相同部分,我们可以填在HTTP请求默认值中,这样它作用的其它HTTP接口请求即使不填写这部分相同的内容也能成功发起请求。

因此当多个接口在发起请求时存在大量重复的http配置时,我们就可以将重复的这部分提取出来统一放进 HTTP请求默认值 中来管理,后续 HTTP取样器 中就不再需要填写这部分重复内容。(若HTTP请求中没有添加这部分配置才会从 HTTP请求默认值 中读取, 否则使用这个请求它自己的配置)

JSON提取器

用于提取 json返回数据 中的某个字段,需要用到json操作符。

操作符描述
$表示根元素
@当前元素
*通配符,匹配所有节点
..选择所有符合条件的节点
.<name>子元素
['<name>' (, '<name>')]括号表示子元素或子元素列表
[<number> (, <number>)]数组索引或索引列表
[start:end]数组切片操作符
[?(<expression>)]过滤器表达式,表达式必须评估为布尔值

例如提取下面这段json数据:

{
"code": 200,
"data": {
"user": {
"id": 10086,
"name": "测试君",
"tags": [
"Java",
"JMeter",
"测试开发"
]
},
"orders": [
{
"id": 1,
"price": 99.0
},
{
"id": 2,
"price": 199.0
}
]
},
"message": "success"
}

操作符作用示例表达式提取结果
$根节点入口$.code200
.子元素定位$.data.user.name测试君
..递归搜索 (穿透)$..id10086, 1, 2(提取所有 id)
*通配符$.data.orders[*].price99.0, 199.0
[]数组索引$.data.user.tags[1]JMeter(索引从 0 开始)
[,]索引列表$.data.user.tags[0,2]Java, 测试开发
[start:end]数组切片$.data.orders[0:1][{"id":1,"price":99.0}]
[?()]条件过滤$.data.orders[?(@.price>100)].id2
@过滤器内当前节点同上配合?使用

我们也能在jmeter中来验证json操作符有没有用对,

把查看结果树的格式换成 JSON Path Tester,然后就会出现如下图这样的一个框,我们可以在里面输入我们想要提取的数据,如果写正确了,那么点击 Test 后下面就会出现对应的数据。

比如 我们给登录请求接口添加一个JSON提取器,

因为后续接口的请求头需要带上token才能成功请求,但token是有失效的,而登录接口的响应数据是返回了其它接口需要的token,

因此这个数据我们就可以用 json提取器 提取出来,由图可知,我们需要提取的数据的json表达式是 $.data

(登录接口的响应数据)

(给登录请求接口添加一个JSON提取器)

然后再通过 ${变量名} 的方式来获取提取到的数据,
HTTP信息管理头中的内容就可以写成 ${token}


在详情页接口请求中使用了具体的blogId,如果恰好这个id对应的博客被删除了,那么我们执行这个接口请求就会有问题。

但是列表页接口请求返回的数据中就包含了所有的博客id,只要列表中还有博客,就一定能返回博客id数据,因此我们也可以给 列表页接口请求 添加一个json提取器 来获取一个id。

我们就只获取第一个id,

然后就可以把 详情页接口请求 路径中的具体id换成 ${blogId)

JSON断言

前面我们判断接口请求有没有成功是根据绿色盾牌的图标+响应数据中的信息来判断的,

但是当接口请求非常多的时候,比如有100个、1000个,我们不可能挨着去判断是否成功。

因此我们可以使用到JSON断言。

比如在登录接口请求的响应数据中有一个code字段 值为SUCCESS

假如只要有code就能判断这个接口请求成功了,

我们先给这个接口添加一个json断言,

Assert JSON Path exists 这里就填我们需要json断言判定的字段,

假如我们给json表达式设置为 $.codeaaa,json断言发现响应数据不存在这个codeaaa字段就报错了。

下图是JSON断言中其它部分的用法,当我们勾选上Additionally assert value的时候,我们就可以在Expcted Value框内输入想要给json表达式判断的值。

运行后如果这个字段存在且值和我们预期填写的一样就没有报错,否则就会报错。

我们填写的是FAIL,但实际code字段是SUCCESS就报错了。


💖感谢观看🌹

http://www.jsqmd.com/news/483617/

相关文章:

  • 22 | 别再复制粘贴那 80% 的代码了:给你的流程装个“标准模具”——模板方法模式
  • GTE中文嵌入模型部署案例:中小企业文档检索系统低成本构建
  • AI进阶 | 多模态视觉:从 CLIP 到 LLaVA —— 它是如何看懂这个世界的?
  • Qwen3-Reranker-0.6B实战教程:使用FastAPI封装重排序服务并支持批量请求
  • java蓝桥小记
  • 嵌入式高频接口:FPGA I2C 总线从机 / 主机模式开发实战
  • 洛谷八级题单绿题题解
  • 【AUTOSAR开发实战】(3)Data Type及Constants
  • Fish Speech 1.5高算力适配:4–6GB显存高效运行CUDA 12.4优化方案
  • 小白也能用:Qwen3本地字幕生成工具部署指南,纯离线保护隐私
  • 通过测试-时强化学习实现即时VLA自适应
  • Python学习(二)接(一)
  • 基于 Hardhat + OpenZeppelin + MetaMask 钱包 开发的极简去中心化应用(DApp)demo
  • Z-Image-Turbo极速引擎揭秘:Jimeng AI Studio中Diffusers定制化改造
  • WindTerm 分窗功能:终端多任务的神器
  • 【临床数据挖掘黄金法则】:20年三甲医院R语言实战总结的7个避坑指南
  • OpenClaw对接飞书全攻略:手把手教你做个 AI 助手
  • Windows11系统下如何将Chrome设置为默认浏览器的完整指南
  • Janus-Pro-7B部署案例:中小企业低成本接入多模态AI能力
  • 香橙派5的开发测试(三)
  • 威联通QNAP通过Container快速部署Tranmission及美化UI实战
  • 服务拆分策略与领域驱动设计
  • 伏羲天气预报国产软件栈:全栈国产化(OpenEuler+MindSpore)适配
  • 手机隐藏技巧|解锁90%人不知道的实用功能,用机效率翻倍
  • OpenClaw 快速上手:1 分钟玩转你的专属 AI 助手
  • 泰山派OpenClaw飞书通道配置实战:从应用创建到机器人对话全流程
  • OpenClaw从入门到精通:25 个 Tools + 53 个 Skills 完整指南
  • R 4.5新时空引擎深度解析:如何用sf + stars + tmap 3步生成可交互时空热力图?
  • 海康摄像头SDK跨平台开发实战:Linux与Windows兼容性深度解析
  • Servlet工作原理与注解