jmeter测试使用方法

1 JMeter 概述

1.1 JMeter 是什么

Apache JMeter 是 Apache 软件基金会开源的性能测试工具,基于纯 Java 开发,最初用于 Web 应用的接口与服务压测,现已广泛支持 HTTP/HTTPS、FTP、JDBC、TCP 等多种协议,可用于接口功能验证、并发压力测试与性能报告输出。

本指南按实际操作顺序编排:先完成下载安装(第 2 章)、界面中文化(第 3 章),随后安装插件管理器与中文报告模板(第 4、5 章),再编写测试计划脚本(第 6 章),最后执行压测并导出 HTML 报告(第 7、8 章)。其中第 2 章对应原始笔记的下载与基础配置,第 4、5、7 章分别对应插件管理器(plugins-manager.jar)、中文报告模板与 HTML 报告导出三个环节。

1.2 环境要求

JMeter 要求 Java 8 或更高版本,并建议正确配置 JAVA_HOME 环境变量。安装或解压前,可先在命令行执行以下命令确认环境:

|---------------|
| java -version |

命令行能正常输出版本信息(如 java version "1.8.0_xxx")即表示环境就绪;若提示不是内部或外部命令,请先安装 JDK 并配置环境变量后再继续。

2 JMeter 下载与安装

2.1 下载安装包

JMeter 为绿色软件,下载解压后即可使用,无需安装。访问官网下载页 Apache JMeter - Download Apache JMeter,在 Binaries 分组下下载 apache-jmeter-x.x.x.zip(Windows)或 .tgz(Linux/Mac)压缩包,解压到本地目录即可。建议解压路径不含中文与空格,例如 D:\tools\apache-jmeter-5.6.3。

2.2 启动 JMeter

进入解压目录下的 bin 子目录,按操作系统选择以下任一方式启动:

  1. 直接启动:直接启动 bin 目录下的 ApacheJMeter.jar,即可弹出 GUI 页面;
  2. Windows:双击 bin\jmeter.bat,弹出的黑色 CMD 窗口不要关闭,稍等几秒 GUI 界面会自动启动;
  3. Linux / Mac:在 bin 目录下执行 ./jmeter.sh。

**注意:**jmeter.bat / jmeter.sh 启动时弹出的命令行窗口是 JMeter 的宿主进程,关闭该窗口 GUI 也会随之退出。

3 界面中文化

3.1 临时切换

菜单栏依次选择 Options → Choose Language → Chinese(Simplified),界面立即切换为简体中文。该设置只对当前运行有效,重启后恢复英文。

3.2 永久切换

编辑 bin 目录下的 jmeter.properties 文件,新增一行 language=zh_CN,保存后重启 JMeter,界面即为中文。该方式对后续所有启动均生效。

4 安装插件管理器(Plugins Manager)

插件管理器用于在线安装各类扩展插件(如阶梯加压线程组、服务器资源监控、图形化报告等),建议在编写脚本之前先完成安装。

4.1 下载

访问 Install :: JMeter-Plugins.org,下载 plugins-manager.jar 文件。

4.2 安装步骤

  1. 将 plugins-manager.jar 复制到 JMeter 解压目录下的 lib\ext\ 文件夹;
  2. 完全退出并重新启动 JMeter;
  3. 菜单栏出现 Options → Plugins Manager 菜单,即表示安装成功。

4.3 常用插件推荐

打开 Options → Plugins Manager,切换到 Available Plugins 标签页,搜索并勾选以下常用插件,点击 Apply Changes and Restart JMeter 完成安装并重启:

插件 用途
Custom Thread Groups 提供阶梯加压(Stepping Thread Group)等更灵活的并发模型
3 Basic Graphs 响应时间、吞吐量、活跃线程数等基础图形监听器
PerfMon (Servers Performance Monitoring) 监控被测服务器的 CPU、内存、磁盘、网络等资源指标
Throughput Shaping Timer 按预设吞吐量曲线精确控制压测节奏

5 配置中文版 HTML 报告模板

JMeter 自带的 HTML 报告为英文界面,可通过国内维护的中文汉化模板替换。建议在编写脚本前提前配置好模板,压测结束后即可直接生成中文报告;替换过程不改动 JMeter 的其他文件。

5.1 下载模板

模板下载地址:https://gitee.com/smooth00/jmeter-cn-report-template。打开页面后下载 jmeter-cn-report-template 压缩包并解压备用。

5.2 使用方法

将 jmeter-cn-report-template 中的所有 .html.fmkr 文件覆盖到 JMeter 安装目录下的 bin\report-template\ 中,目录内原本的其他文件保持不变。

5.3 编码说明

模板目前为 UTF-8(无 BOM)格式,可同时兼容 Windows 与 Linux 环境下的中文显示。如果生成的 HTML 报告出现中文乱码,可自行将模板文件转存为合适的编码格式:Windows 下可将所有文件(包括 content/pages 目录下的 .fmkr 文件)另存为 ANSI/ASCII 格式。

6 编写测试计划(脚本开发)

JMeter 的测试计划按 线程组 → 取样器 → 监听器 的层级组织,必要时配合断言与配置元件。基本流程为:添加线程组 → 添加 HTTP 请求 →(需要登录时配置 Cookie)→ 添加监听器 → 调试运行并保存。

6.1 添加并配置线程组

在左侧测试计划节点上右键,选择 添加 → 线程(用户)→ 线程组。线程组用于模拟并发用户,首次调试推荐按下表初值设置:

参数 含义 推荐初值(用于首次调试)
线程数(Number of Threads) 模拟的并发用户数 10
Ramp-Up 时间(秒) 在多少秒内启动完所有线程;0 表示瞬间并发 10
循环次数(Loop Count) 每个线程发送请求的次数;勾选"永远"则持续运行 1(调试),正式压测配合调度器持续运行
调度器 设定持续时间与启动延迟 调试阶段不勾选

举例:线程数 100、Ramp-Up 60 秒,表示每秒启动约 1.67 个用户;线程数 100、循环次数 2,则总计发送 200 次请求。

6.2 添加 HTTP 请求(取样器)

在线程组节点上右键,选择 添加 → 取样器 → HTTP 请求,按被测接口信息填写以下参数:

参数 说明 示例
协议(Protocol) http 或 https,留空默认 http https
服务器名称或 IP 被测服务的主机名或 IP 地址 www.example.com
端口号 http 默认 80,https 默认 443 443
HTTP 方法 GET、POST、PUT、DELETE 等 POST
路径(Path) 接口地址中域名之后的部分,可带查询参数 /api/v1/login
内容编码 请求报文编码,建议显式指定,避免中文乱码 UTF-8
Parameters / 消息体数据 GET 参数填写在 Parameters;POST 的表单或 JSON 报文填写在消息体数据(Body Data) {"username":"admin","password":"123456"}

发送 JSON 报文时,还需在线程组下添加 HTTP 信息头管理器(添加 → 配置元件 → HTTP 信息头管理器),新增一条 Content-Type: application/json,否则服务端可能无法正确解析请求体。

多数业务系统需登录后才能访问业务接口,压测此类接口时必须让请求携带登录态。JMeter 中常用以下两种方式添加 Cookie。

方式一:HTTP Cookie **管理器(自动携带,推荐)。**在线程组节点上右键,选择 添加 → 配置元件 → HTTP Cookie 管理器,并将登录接口的 HTTP 请求放在业务请求之前。登录成功后,服务端返回的 Set-Cookie 会被自动保存,后续业务请求会像浏览器一样自动携带 Cookie,无需手动填写。若每个循环都需要重新登录,可勾选管理器中的 Clear cookies each iteration(每次迭代清空 Cookie)。

方式二:HTTP 信息头管理器手动填写。 若已从浏览器或登录响应中获取到固定的 Cookie 值,可右键 线程组 → 添加 → 配置元件 → HTTP 信息头管理器,新增一条信息头:名称填 Cookie,值填完整的 Cookie 字符串(多个键值对用分号分隔),例如:

|-----------------------------------------------------|
| Cookie: JSESSIONID=3A5F8C21D6E9; token=abc123def456 |

Cookie **值的获取方法:**① 浏览器登录后按 F12 打开开发者工具,切换到 Network(网络)标签页,选中任意请求,在 Request Headers(请求标头)中复制 Cookie 的完整值;② 先在 JMeter 中运行一次登录请求,通过查看结果树查看登录响应的 Set-Cookie 内容,将各键值对用分号拼接后填入。

**注意:**Cookie 管理器、登录请求与业务请求应放在同一线程组内,各虚拟线程各自维护独立会话;若接口采用 Token 鉴权(如登录响应 JSON 中的 token,后续请求需放在 Authorization: Bearer xxx 请求头中),同样通过 HTTP 信息头管理器添加对应请求头即可。

6.4 添加监听器

在线程组节点上右键,选择 添加 → 监听器。监听器负责收集与展示压测数据,调试与压测阶段推荐使用以下两个:

监听器 主要用途
查看结果树 逐条查看请求与响应明细,用于调试;批量压测时应禁用,避免占用内存
聚合报告(Aggregate Report) 汇总平均响应时间、中位数、90% 线、错误率、吞吐量等核心指标
汇总报告(Summary Report) 以更简洁的表格实时汇总各请求的执行情况

6.5 添加响应断言(可选)

为让工具自动判断接口是否返回预期内容,可在 HTTP 请求节点上右键,选择 添加 → 断言 → 响应断言,填写需匹配的响应内容(如返回码 200 或响应文本中的关键字)。断言失败的请求会在查看结果树中标红。

6.6 调试运行与保存脚本

点击工具栏绿色启动按钮运行测试,通过查看结果树确认请求全部为绿色(成功)。调试通过后,选择 文件 → 另存测试计划为,将脚本保存为 .jmx 文件(如 demo_test.jmx),供后续压测与报告生成使用。

**注意:**调试阶段线程数建议不超过 10、循环次数保持 1,避免误触发大量请求。

7 执行压测并导出 HTML 报告

HTML 报告由测试过程中各监听器收集的数据汇总生成,可通过 GUI 界面或命令行两种方式导出。

7.1 方式一:GUI 界面生成报告

先完整运行一次测试,并在聚合报告等监听器中指定结果文件(.jtl)的保存路径;然后通过菜单 " 工具" → "Generate HTML report" 打开报告生成对话框,依次填写:

  1. Result file(结果文件):选择上一步生成的 .jtl 结果文件;
  2. user.properties:保持默认即可;
  3. Output directory(输出目录):指定一个空目录用于存放报告;
  4. 点击 Generate report 生成报告,完成后用浏览器打开输出目录中的 index.html 查看。

7.2 方式二:命令行非 GUI 模式生成

正式压测推荐使用非 GUI 模式:资源占用低、结果更稳定,且可在压测结束后自动生成报告。在 bin 目录执行以下命令:

|----------------------------------------------------|
| jmeter -n -t test.jmx -l result.jtl -e -o ./report |

参数 含义
-n 以非 GUI 模式运行
-t 指定测试计划(.jmx)文件
-l 指定压测结果记录文件(.jtl / .csv)
-e 压测结束后生成 HTML 报告
-o 指定报告输出目录(必须为空或不存在)

7.3 压测与报告生成注意事项

GUI **模式仅用于脚本调试;**并发量大时务必使用非 GUI 模式,否则界面渲染本身会消耗大量资源、影响压测结果。生成报告时,输出目录必须为空或不存在,结果文件(如 result.jtl)不能已存在,否则命令会报错退出。压测前建议先用小并发(如 10 线程、循环 1 次)验证脚本正确性,再逐步加压到目标并发。

8 HTML 报告解读与常见问题

8.1 报告关键指标

打开报告输出目录中的 index.html,Dashboard 页顶部的 APDEX 应用性能指数综合反映用户满意度(满意阈值默认 500ms、可容忍阈值 1500ms,可在配置中调整);Statistics 统计表列出每个请求的详细数据,主要列含义如下:

指标 含义
Samples 请求总次数
Average 平均响应时间(毫秒)
Median 响应时间中位数(毫秒)
90th Line(90th pct) 90% 的请求响应时间不超过该值(毫秒)
Min / Max 最小 / 最大响应时间(毫秒)
Error % 请求错误率
Throughput 吞吐量,即每秒处理的请求数(TPS)
Received / Sent KB/sec 每秒接收 / 发送的数据量

评估接口性能时,建议综合关注三点:90th Line 与 Average 的差距(差距越大说明响应时间波动越大)、Error % 是否为 0,以及吞吐量是否达到业务预期目标。

8.2 常见问题与解决

问题现象 原因与解决
双击 jmeter.bat 后窗口闪退 未安装 Java 8 及以上版本或未配置 JAVA_HOME,先执行 java -version 排查环境
误关黑色 CMD 窗口导致 JMeter 退出 CMD 窗口是 GUI 的宿主进程,操作过程中保持窗口开启即可
HTML 报告中文乱码 参见 5.3 节,将模板 .fmkr 文件转存为对应平台的编码格式后重新生成
业务请求提示未登录或跳转到登录页 请求未携带有效登录态:参见 6.3 节,添加 HTTP Cookie 管理器,或通过信息头管理器手动填写 Cookie
生成报告时报错,提示目录无法写入 输出目录已存在且非空,或结果文件已存在,更换或清空后重试
GUI 压测越跑越卡 查看结果树等监听器占用大量内存,压测时应禁用监听器并改用非 GUI 模式
相关推荐
汪汪88888814 小时前
jmeter压测下载功能影响本地内存的方案
jmeter
跨境数据猎手1 天前
跨境电商系统JMeter 和 Gatling 分工
jmeter
han68892 天前
jmeter操作数据库
数据库·jmeter
川石课堂软件测试5 天前
涨薪技术|0到1学会性能测试第8课-Analysis分析图
服务器·数据库·python·sql·jmeter·mysql·容器
川石课堂软件测试5 天前
JMeter异步接口测试实战
数据库·python·jmeter·mysql·kubernetes·测试用例·prometheus
zuozewei7 天前
第02篇-k6-脚本结构与生命周期
软件测试·jmeter·性能测试·k6·ai 编程
fen_fen7 天前
Jmeter5.1.1连接oracle数据库的错误复盘
数据库·jmeter·oracle
川石课堂软件测试11 天前
自动化测试|持续集成Git使用详解
git·python·jmeter·mysql·ci/cd·容器·kubernetes
wuhuhuan12 天前
JMeter 连接数据库并取值(JDBC 实战)
数据库·jmeter