
1.部署JMeter
1.1 安装JMeter

下载 tar包,解压即可。

1.2 启动JMeter
方式一:点击bat文件


关闭jmeter,点击任意一个❌️即可。
方式二:命令行启动(推荐)
step1:添加JMeter系统环境变量


最后点击确定保存设置
step2:打开命令行工具, 输入命令jmeter即可启动JMeter工具。


1.3 基础配置
修改字体为中文

修改后需要保存 ,重启jmeter中文就会生效。
了解一下F12工具



2.基本使用流程
此处对自己的项目**即时通讯(网页聊天室)**进行性能测试
http://122.51.160.88:8080/login.html
2.1 启动JMeter
可以先把字体放大一点,也可以修改外观,改改界面颜色。

2.2 测试计划→线程→线程组

添加相关配置

2.3 线程组→取样器→HTTP请求

添加相关配置,以登录页面举例。




2.4 线程组 →监听器 →查看结果树
(用来查看接口请求的结果)

2.5 点击启动按钮运行
(查看接口测试结果)
先把循环次数改为1 次,关闭调度器

点击启动

启动前需要先保存测试计划,点击Yes,命名并保存到自己所需路径,点击Save。

2.6 查看结果树


若修改请求参数,需要重新启动
若想修改参数,也可以先清除历史请求 ,修改端口号为9090 后,重新启动。


发现请求失败 ,测试完将端口号改回8080。


3.元件作用域和执行顺序
作用域 :元件 放在哪个节点下,就对它 下面的所有 子孙节点生效。【由测试计划 树形结构中的父子关系决定】
执行顺序 :配置 → 前置处理 → 取样器 → 后置处理 → 断言 → 监听器 ,取样器功能独立但执行顺序固定。

4.重点组件介绍
4.1 线程组(测试计划-线程)
控制 JMeter将用于执行测试的线程(并发 用户**)** 数,设置发送的请求次数。
请求次数 = 线程数 × 循环次数 × 取样器数量


4.2 HTTP请求(取样器)
通过 HTTP 请求取样器 , 创建针对页面或 API 的 HTTP 请求。



4.3 查看结果树(监听器 )
用于查看每个取样器(请求) 的详细执行信息 ,主要包括取样器结果、请求、响应数据三部分。


取样器结果 :用于展示和统计 单个请求 的详细信息

4.4 HTTP请求默认值(配置元件)
在同一个系统 中,所有接口 的协议、IP、端口号、编码 基本都是相同的,路径、请求参数、请求头 会有所不同。
将相同 的内容单独抽取 出来,存放 在HTTP 请求默认值 中,这样所有接口 就可以使用同一套请求配置。


此时就可以将其他接口 中的协议、IP、端口号、编码 去掉了




修改参数后,也可以清除历史请求 ,重新启动,查看结果。


注 :JMeter 中配置的优先级规则 是:取样器 (HTTP 请求)中的设置会覆盖 配置元件 (HTTP 请求默认值)中的同名配置。

4.5 HTTP Cookie管理器(配置元件)


默认 是在线程组下面的所有接口生效
正常调用登录接口 ,服务器响应 中的 Set-Cookie 会被HTTP Cookie 管理器自动捕获并存储。
在后续所有业务接口 (如获取会话列表、发送消息等)的请求 中,Cookie 管理器会自动 将 Cookie 放入请求头,从而实现鉴权。

默认无需配置 ,但遇到多用户、跨域、固定 Cookie、策略不符等场景时,需要手动调整 Cookie 管理器的设置。


① 若使用Postman,推荐开启自动管理 Cookie (Settings → Automatically manage cookies),发送登录请求 后,Postman 会自动保存返回的 Cookie**;** 也可手动从浏览器 F12 的登录接口的响应头(Response Headers )中复制 Set-Cookie 字段里的JSESSIONID=xxx, 或者 也可以从任意一个业务请求的请求头中拿Cookie。
【登录接口:指一个完整的 API 端点,包含请求和响应】
② 开启自动 管理后,后续请求会自动携带该 Cookie****凭证访问业务接口,无需手动设置**;** 若采用手动 调试,则需在后续请求的Headers 中添加 `Cookie: JSESSIONID=xxx` 字段。
注意:① 在使用自动管理 Cookie时,需确保登录接口的响应头中包含 Set-Cookie字段 ,Postman 会自动 处理,无需手动编写脚本。
②手动 从浏览器复制 Cookie 的方式是静态的,仅适用于临时调试,一旦会话过期 需重新复制 ,不推荐用于持续集成或自动化测试;自动化测试务必开启自动管理 Cookie。


4.6****HTTP信息头管理(配置元件)

此处借用博客 系统进行演示
(1) 先调用登录接口,从它的响应数据中提取出最新的 user_token_heade。

(2) 通过HTTP 信息头管理器 将获取到的登录凭证(如 token)设置到请求头字段 `user_token_header` 中,后续所有需要 鉴权的业务接口 即可自动携带该凭证进行访问。


默认 是在线程组下面的所有接口 生效,如果我们只想让他在列表页接口 中生效,只需要拖拽进去即可。

①若使用 Postman ,推荐通过登录接口 的 Tests 脚本动态提取 token 并设为环境变量
(如 user_token_header);也可手动从浏览器F12 登录接口的响应体(Response Body )中复制 data 字段里的 token 值,或者 也可以 从任意一个业务请求的请求头中拿 token。
【登录接口:指一个完整的 API 端点,包含请求和响应】
②然后在后续接口的 Headers 中添加 user_token_header: {{user_token_header}},即可携带凭证访问业务接口。
注意: ①在使用 Tests 脚本动态提取 token 时,需确保登录接口的响应体 中包含 token 字段,且脚本正确解析并赋值给环境变量。
②手动从浏览器 F12 复制 token 的方式是静态的,仅适用于 token 长期不变 或临时调试 ;一旦 token 过期,仍需重新 复制;自动化测试****务必采用 动态提取。


4.7 JSON提取器(登录接口-后置处理器)

此处仍然 借用博客 系统进行演示
(1) 在登录接口 中添加JSON提取器

(2)调用登录接口 ,获取它的响应数据。

(3) 怎么从响应数据**(** JSON****格式 ) 中提取 出 data字段呢?
先了解一下JSON操作符
参考文档:https://github.com/json-path/JsonPath
可以对JSON路径 进行验证

举例:


(4)添加JSON配置

(5) 在HTTP信息头管理中配置JSON提取的参数

4.8 JSON断言(xx接口-断言)

在取样器中添加 JSON 断言 ,可自动校验响应数据是否符合预期 ,从而实现对接口的自动化测试。
此处仍然 借用博客 系统进行演示
(1)针对某个HTTP请求接口(取样器) 添加JSON断言

只作用于登录接口
(2) 添加JSON配置




清除历史请求 ,重新启动。
4.9 用户定义的变量(配置元件)
用于定义一组静态、可重复使用的常量 (如 IP、端口、账号),供整个测试计划中的元件引用 ,实现一处 修改、处处生效,从而提高脚本的可维护性。
引用语法:${变量名} 区分大小写
此处仍然 借用博客 系统进行演示

当测试计划 中有多个接口 (如多个详情页 接口)需要用到同一个参数 (如 blog id)时,如果直接在每个接口中写死,后续修改时就需要逐个更改,非常繁琐。
使用用户定义的变量 可以只在一个地方定义 ,所有引用 的地方自动生效,实现"一处修改,处处生效"。




4.10 CSV数据文件设置(配置元件)
可以模拟用户 的真实行为
以登陆接口 为例,对登录接口进行性能测试 时,不能仅使用固定 的用户名和密码。应准备 多组不同 的用户名和密码,以实现****真实场景中多用户****同时登录场景,从而更贴近实际使用情况。
【CSV是一种纯文本格式,用于存储表格数据】

操作步骤:
(1)编写test.csv 文件,可以在**.jmx同级目录**下创建。

(2)CSV数据文件设置


(3) 修改登陆接口 及其他涉及到username和password获取的参数
修改完该配置后,登陆接口 发起请求时将从csv文件中获取配置好的username和password参数,获取顺序为从上往下依次获取。

(4) 修改线程组中线程数 ,使得每次取到的username和password都不一样。

(5)清除历史记录,重新运行。

4.11 同步定时器(定时器)
模拟多用户并发访问 的场景,确保多个线程 能够同时****执行某个操作 ,达到真正的并发效果。
【较 真实模拟多个用户同时进行操作以度量服务器的处理能力】


未添加 同步定时器,重新运行,查看日志 结果,发现三个线程并不是同时 发起请求的(暂时禁用了除登录以外的接口)

添加同步定时器 ,重新运行,再次查看日志 结果,发现三个线程是同时 发起请求的,达到了真正的并发效果。

4.12 事务控制器(逻辑控制器)




4.13 聚合报告(监听器)
可以看到性能测试 过程中整体的数据变化



4.14 Jmeter插件
下载Jmeter插件管理工具 :https://jmeter-plugins.org/install/Install/

将下载好的文件放到 jmeter 下 lib/ext 文件夹下,并重启JMeter。

jmeter界面右上角将会有一个小蝴蝶 ,该工具即jmeter插件管理工具 ,点击后 可以下载jmeter中支持的各种插件。


在真实企业压测场景 中,我们通常是一点一点的逐步增加线程数,因此需要安装新的插件来支持线程数的配置。
通过插件管理工具(蝴蝶)下载其他监听器、线程组插件
先选中 所需插件,再点击右下角 ,等待下载完成,并重启JMeter。

下载完可以在 测试计划-线程中看到新增的元件

4.15 Stepping Thread Group(测试计划-线程)
梯度压测****线程组 的主要作用是模拟负载逐步增加的过程 ,用于观察系统在不同压力阶段下的性能表现。




4.16 Response Times Over Time(监听器)
主要用于观察并分析响应时间 的实时平均值及其整体变化趋势, 可以更直观地了解系统在不同时间点 的响应性能,从而发现潜在的性能问题或瓶颈。

横坐标:运行 时间,纵坐标:响应时间(单位:毫秒)
测试人员可根据趋势线 判断响应时间的稳定性 及是否存在大幅波动。
例如,若响应时间 在某时间点突然增加 ,可能意味着系统在该时刻遇到了性能问题。
4.17 Transactions per Second-TPS(监听器)
吞吐量 :单位时间 内处理的并发数 ,反映系统的负载承受能力,常用**TPS(每秒处理事务数)**衡量。
TPS = 总的请求成功的事务数 / 总运行时间

横坐标:运行 时间,纵坐标:TPS 值
观察 TPS 随时间的变化 趋势,红色:通过 的 TPS,绿色:失败的 TPS

5.测试报告
JMeter 测试报告是一个全面而详细 的文档,提供测试执行结果的详细信息 ,帮助用户评估系统性能 并进行优化。
生成性能测试报告的命令如下:

注意:日志文件 和目录 可以不存在,若为已经存在 的情况下需要保证内容为空 ,否则会出现错误!


jmeter -n -t 即时通讯性能测试计划.jmx**-l** test.jtl**-e -o**./reports/.



双击 index.html 文件,查看性能测试报告。

6.性能分析
通过三大指标 来分析性能问题
(1)**吞吐量:吞吐量越大**性能越好,其变化规律可反映系统稳定性及是否达到瓶颈
(2)响应时间 :超标 说明系统出现瓶颈 ,需关注达到超标时 的线程数,且也可能因系统不稳定 或并发压力 增大而变慢。
(3)****错误率(可靠性):高并发下需保证极低错误率,错误率高可能源于 接口请求失败、服务器瓶颈、限流/熔断/降级策略。

