面向初学者的JMeter实战手册:从环境搭建到组件解析

🌟 ​大家好,我是摘星!​ 🌟

今天为大家带来的是面向初学者的JMeter实战手册:从环境搭建到组件解析,废话不多说,让我们直接开始~

目录

[1. JMeter简介](#1. JMeter简介)

[2. JMeter安装与配置](#2. JMeter安装与配置)

[2.1. 安装](#2.1. 安装)

[2.2. 配置环境变量(可选)](#2.2. 配置环境变量(可选))

[3. JMeter核心概念](#3. JMeter核心概念)

[3.1. 测试计划](#3.1. 测试计划)

[3.2. 线程组](#3.2. 线程组)

[3.3. 取样器](#3.3. 取样器)

[3.4. 监听器](#3.4. 监听器)

[3.5. 配置元件](#3.5. 配置元件)

[3.6. 断言](#3.6. 断言)

[3.7. 前置处理器/后置处理器](#3.7. 前置处理器/后置处理器)

[4. JMeter 常用功能](#4. JMeter 常用功能)

[4.1. 语言设置](#4.1. 语言设置)

[4.2. 主题设置](#4.2. 主题设置)

[4.3. 基本流程](#4.3. 基本流程)

[4.3.1. 创建线程组](#4.3.1. 创建线程组)

[4.3.2. 添加取样器](#4.3.2. 添加取样器)

[4.4. 添加监听器](#4.4. 添加监听器)


1. JMeter简介

Apache JMeter 是 Apache 组织基于 Java 开发的压力测试工具,用于对软件做压力测试。

JMeter 最初被设计用于 Web 应用测试,但后来扩展到了其他测试领域,可用于测试静态和动态资源,如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库和 FTP 服务器等等。JMeter 可对服务器、网络或对象模拟巨大的负载,在不同压力类别下测试它们的强度和分析整体性能。另外,JMeter 能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证程序是否返回了期望结果。为了最大限度的灵活性,JMeter 允许使用正则表达式创建断言。

2. JMeter安装与配置

2.1. 安装

  • 解压:将压缩包解压到任意目录(路径中不要包含中文或空格),windows下,zip包解压缩即可使用,目录结构如下:
  • 运行:其中的bin目录就是执行的脚本,其中包含启动脚本:

双击即可运行,但是有两点注意:

  • 启动速度比较慢,要耐心等待
  • 启动后黑窗口不能关闭,否则Jmeter也跟着关闭了

2.2. 配置环境变量(可选)

  • JMETER_HOME 设置为 JMeter 解压路径。
  • %JMETER_HOME%\bin 添加到系统 PATH 环境变量中。

3. JMeter核心概念

3.1. 测试计划

  • 测试的顶层容器,所有测试元件(如线程组、监听器等)都需在测试计划下创建。

3.2. 线程组

  • 定义虚拟用户(线程)的数量、启动时间、循环次数等参数。
  • 右键测试计划 → 添加 → 线程(用户)→ 线程组。

3.3. 取样器

  • 用于发送请求(如 HTTP 请求、JDBC 请求等)。
  • 常用 Sampler:HTTP 请求JDBC RequestFTP 请求

3.4. 监听器

  • 用于收集和展示测试结果(如表格、图形、日志等)。
  • 常用监听器:查看结果树聚合报告图形结果

3.5. 配置元件

  • 配置测试参数(如 HTTP 请求头、CSV 数据文件等)。
  • 常用配置元件:HTTP 请求默认值CSV 数据集配置

3.6. 断言

  • 验证服务器响应是否符合预期(如检查状态码、响应内容等)。
  • 常用断言:响应断言JSON 断言

3.7. 前置处理器/后置处理器

  • 在发送请求前或处理响应后执行操作(如提取动态参数)。
  • 常用后置处理器:正则表达式提取器JSON 提取器

4. JMeter 常用功能

4.1. 语言设置

  • JMeter默认语言是英文,可以在Opting选项中设置成简体中文
  • 以上配置只针对当前运行程序,若要永久改动,则需要修改配置文件,路径在安装路径下的bin目录中的jmeter.properties文件,添加language=zh_CN到文件中即可

4.2. 主题设置

在选项中选择自己喜欢的主题即可,这里选择的是idea同款主题

4.3. 基本流程

4.3.1. 创建线程组

在测试计划上点鼠标右键,选择添加>线程(用户)>线程组,填写线程信息,以下是线程属性解读:

  • 线程数:模拟的并发用户数量,即同时发送请求的虚拟用户数,用于控制测试的并发压力,线程数越多,对服务器的负载压力越大。

例如:设置为 100**表示 JMeter 会模拟 100 个用户同时操作。

  • Ramp-Up时间:所有线程从启动到全部运行完成的时间间隔(单位:秒),模拟用户逐步增加的真实场景避免瞬间高并发导致服务器崩溃,观察系统在负载逐步上升时的性能表现。

例如:线程数=100,Ramp-Up=50,表示 JMeter 会在 50 秒内均匀启动 100 个线程(每秒约启动 2 个)。

  • 循环次数:每个线程重复执行测试计划的次数,延长测试时间,模拟用户持续操作,通过多次循环获取更稳定的性能数据(如平均响应时间)。

例如:设置为 5**表示每个线程会执行 5 次完整的测试计划。

勾选 永远*:线程会无限循环执行,直到手动停止或达到测试时长限制(需配合调度器使用)。*

4.3.2. 添加取样器

在已创建的HTTP请求上点鼠标右键,添加http取样器,并编写取样器内容,以下是属性解读:

|----------------------------|----------------------------------------------------------------------|
| 基本配置项 | 说明 |
| 名称 | 取样器的描述性名称(如 "登录接口"),便于后续结果分析。 |
| 注释 | 可选,添加备注信息。 |
| 协议 | 请求的协议类型,默认为 httphttps(需完整填写,如 https://)。 |
| 服务器名称或 IP | 目标服务器的域名或 IP 地址(如 api.example.com),⚠️ 如果测试计划中已配置 HTTP 请求默认值,此处可留空。 |
| 端口号 | 服务器的端口号(HTTP 默认为 80,HTTPS 默认为 443)。 |
| HTTP 请求方法 | 选择请求方法:GETPOSTPUTDELETE 等。 |
| 路径 | 请求的 URL 路径(如 /api/login),⚠️ 不要包含协议和域名(已在前面配置)。 |
| 内容编码 | 请求体的编码格式(如 UTF-8),通常保持默认。 |
| 自动重定向 | 若勾选,JMeter 会自动跟随 3xx 重定向(不记录重定向过程)。 |
| 跟随重定向 | 若勾选,JMeter 会记录重定向的每个步骤(在结果树中显示多次请求)。 |
| 使用 KeepAlive | 保持 HTTP 长连接,默认勾选(性能测试建议启)。 |
| 对POST使用multipart/form-data | 勾选后启用文件上传或表单提交(适用于POST请求) |
| 与浏览器兼容的头 | 兼容浏览器的头信息 |

4.4. 添加监听器

在已创建的HTTP请求上点鼠标右键,添加监听器:

|-------|----------------------------------------------|------------------|
| 监听器名称 | 主要功能 | 适用场景 |
| 查看结果树 | 显示每个请求的详细请求/响应数据(Header、Body、状态码等)。 | 调试阶段,检查请求是否正确。 |
| 聚合报告 | 统计所有请求的响应时间、吞吐量、错误率等关键指标(平均值、中位数、90% Line等)。 | 性能测试分析,评估整体性能。 |
| 图形结果 | 以折线图形式展示响应时间、吞吐量随时间的变化趋势。 | 直观观察性能波动。 |
| 汇总报告 | 类似聚合报告,但更简洁,仅显示关键统计值(平均、最小、最大、错误率)。 | 快速查看测试概况。 |
| 响应时间图 | 绘制每个请求的响应时间变化曲线。 | 分析响应时间稳定性。 |
| 断言结果 | 显示断言(如状态码、内容匹配)是否通过。 | 验证接口功能是否符合预期。 |
| 后端监听器 | 将测试结果发送到外部系统(如InfluxDB + Grafana)。 | 实时监控 & 可视化大屏展示。 |

监听器核心指标解析

|----------|------------------------------|------------------|
| 指标 | 含义 | 理想情况 |
| 样本数 | 总共发送的请求数量。 | 与预期并发量一致。 |
| 平均响应时间 | 所有请求的平均响应时间(毫秒)。 | 越低越好(取决于业务需求)。 |
| 中位数 | 50%的请求响应时间低于此值。 | 比平均值更稳定,不受极端值影响。 |
| 90% Line | 90%的请求响应时间低于此值(反映绝大多数用户的体验)。 | 越接近平均值越好。 |
| 吞吐量 | 每秒处理的请求数(Requests/sec)。 | 越高越好(系统处理能力)。 |
| 错误率 | 失败请求的百分比。 | **0%**(无错误)。 |

以下是部分监听器显示效果:

相关推荐
熊大如如4 小时前
Java 反射
java·开发语言
猿来入此小猿4 小时前
基于SSM实现的健身房系统功能实现十六
java·毕业设计·ssm·毕业源码·免费学习·猿来入此·健身平台
goTsHgo5 小时前
Spring Boot 自动装配原理详解
java·spring boot
卑微的Coder5 小时前
JMeter同步定时器 模拟多用户并发访问场景
java·jmeter·压力测试
pjx9875 小时前
微服务的“导航系统”:使用Spring Cloud Eureka实现服务注册与发现
java·spring cloud·微服务·eureka
乐言3615 小时前
如何解决Jmeter中的乱码问题?
jmeter
多多*6 小时前
算法竞赛相关 Java 二分模版
java·开发语言·数据结构·数据库·sql·算法·oracle
爱喝酸奶的桃酥6 小时前
MYSQL数据库集群高可用和数据监控平台
java·数据库·mysql
唐僧洗头爱飘柔95276 小时前
【SSM-SSM整合】将Spring、SpringMVC、Mybatis三者进行整合;本文阐述了几个核心原理知识点,附带对应的源码以及描述解析
java·spring·mybatis·springmvc·动态代理·ioc容器·视图控制器
骑牛小道士7 小时前
Java基础 集合框架 Collection接口和抽象类AbstractCollection
java