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

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

 

image.gif 编辑

🌟 大家好,我是摘星! 🌟

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

目录

1. JMeter简介

2. JMeter安装与配置

2.1. 安装

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

3. JMeter核心概念

3.1. 测试计划

3.2. 线程组

3.3. 取样器

3.4. 监听器

3.5. 配置元件

3.6. 断言

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

4. JMeter 常用功能

4.1. 语言设置

4.2. 主题设置

4.3. 基本流程

4.3.1. 创建线程组

4.3.2. 添加取样器

4.4. 添加监听器


1. JMeter简介

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

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

2. JMeter安装与配置

2.1. 安装

image.gif 编辑

  • 解压:将压缩包解压到任意目录(路径中不要包含中文或空格),windows下,zip包解压缩即可使用,目录结构如下:

image.gif 编辑

  • 运行:其中的bin目录就是执行的脚本,其中包含启动脚本:

image.gif 编辑

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

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

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

  • JMETER_HOME 设置为 JMeter 解压路径。

image.gif 编辑

  • %JMETER_HOME%\bin 添加到系统 PATH 环境变量中。

image.gif 编辑

3. JMeter核心概念

3.1. 测试计划

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

3.2. 线程组

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

image.gif 编辑

3.3. 取样器

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

image.gif 编辑

3.4. 监听器

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

image.gif 编辑

3.5. 配置元件

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

3.6. 断言

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

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

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

4. JMeter 常用功能

4.1. 语言设置

  • JMeter默认语言是英文,可以在Opting选项中设置成简体中文

image.gif 编辑

  • 以上配置只针对当前运行程序,若要永久改动,则需要修改配置文件,路径在安装路径下的bin目录中的jmeter.properties文件,添加language=zh_CN到文件中即可

image.gif 编辑

4.2. 主题设置

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

image.gif 编辑

4.3. 基本流程

4.3.1. 创建线程组

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

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

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

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

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

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

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

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

image.gif 编辑

4.3.2. 添加取样器

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

image.gif 编辑

基本配置项

说明

名称

取样器的描述性名称(如 "登录接口"),便于后续结果分析。

注释

可选,添加备注信息。

协议

请求的协议类型,默认为 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请求上点鼠标右键,添加监听器:

image.gif 编辑

监听器名称

主要功能

适用场景

查看结果树

显示每个请求的详细请求/响应数据(Header、Body、状态码等)。

调试阶段,检查请求是否正确。

聚合报告

统计所有请求的响应时间、吞吐量、错误率等关键指标(平均值、中位数、90% Line等)。

性能测试分析,评估整体性能。

图形结果

以折线图形式展示响应时间、吞吐量随时间的变化趋势。

直观观察性能波动。

汇总报告

类似聚合报告,但更简洁,仅显示关键统计值(平均、最小、最大、错误率)。

快速查看测试概况。

响应时间图

绘制每个请求的响应时间变化曲线。

分析响应时间稳定性。

断言结果

显示断言(如状态码、内容匹配)是否通过。

验证接口功能是否符合预期。

后端监听器

将测试结果发送到外部系统(如InfluxDB + Grafana)。

实时监控 & 可视化大屏展示。

监听器核心指标解析

指标

含义

理想情况

样本数

总共发送的请求数量。

与预期并发量一致。

平均响应时间

所有请求的平均响应时间(毫秒)。

越低越好(取决于业务需求)。

中位数

50%的请求响应时间低于此值。

比平均值更稳定,不受极端值影响。

90% Line

90%的请求响应时间低于此值(反映绝大多数用户的体验)。

越接近平均值越好。

吞吐量

每秒处理的请求数(Requests/sec)。

越高越好(系统处理能力)。

错误率

失败请求的百分比。

**0%**(无错误)。

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

image.gif 编辑

image.gif 编辑

目录
相关文章
|
13天前
|
Java 测试技术 容器
Jmeter工具使用:HTTP接口性能测试实战
希望这篇文章能够帮助你初步理解如何使用JMeter进行HTTP接口性能测试,有兴趣的话,你可以研究更多关于JMeter的内容。记住,只有理解并掌握了这些工具,你才能充分利用它们发挥其应有的价值。+
198 23
|
JSON JavaScript 测试技术
掌握JMeter:深入解析如何提取和利用JSON数据
Apache JMeter教程展示了如何提取和使用JSON数据。创建测试计划,包括HTTP请求和JSON Extractor,设置变量前缀和JSON路径表达式来提取数据。通过Debug Sampler和View Results Tree监听器验证提取结果,然后在后续请求和断言中使用这些数据。此方法适用于复杂测试场景,提升性能和自动化测试效率。
|
7月前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
189 1
|
8月前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
【10月更文挑战第1天】告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
200 4
|
8月前
|
监控 测试技术
【问题实战】Jmeter中jtl格式转换图片后如何分开展示各个性能指标?
在使用JMeter进行性能测试时,若希望将不同性能指标(如CPU、DiskIO、Mem)分别显示在不同图片中,需在测试计划中为每个指标添加独立的`jp@gc - PerfMon Metrics Collector`监控器,并设置各自的数据保存路径。通过命令行模式执行压测并使用`JMeterPluginsCMD`工具针对每个生成的`.jtl`文件转换为单独的图片,从而实现分指标展示的效果。这解决了默认情况下所有监控指标显示在同一张图片上的问题。
200 0
【问题实战】Jmeter中jtl格式转换图片后如何分开展示各个性能指标?
|
9月前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
【9月更文挑战第5天】性能测试是确保应用在高负载下稳定运行的关键。本文介绍Apache JMeter和Locust两款常用性能测试工具,帮助识别并解决性能瓶颈。JMeter适用于测试静态和动态资源,而Locust则通过Python脚本模拟HTTP请求。文章详细讲解了安装、配置及使用方法,并提供了实战案例,帮助你掌握性能测试技巧,提升应用性能。通过分析测试结果、模拟并发、检查资源使用情况及代码优化,确保应用在高并发环境下表现优异。
168 5
|
9月前
|
测试技术 Apache 数据库
从慢如蜗牛到飞一般的感觉!Python性能测试实战,JMeter&Locust助你加速🏃‍♂️
【9月更文挑战第6天】你的Python应用是否曾因响应缓慢而让用户望而却步?借助JMeter与Locust,这一切将迎刃而解。JMeter作为Apache基金会的明星项目,以其强大的跨平台和多协议支持能力,成为性能测试领域的魔法师;而Locust则以Python的简洁与高效,让性能测试更加灵活。通过实战演练,你可以利用这两款工具轻松识别并解决性能瓶颈,优化数据库查询、网络配置等,最终使应用变得敏捷高效,轻松应对高并发挑战。
61 1
|
10月前
|
监控 测试技术 数据库
从慢如蜗牛到飞一般的感觉!Python性能测试实战,JMeter&Locust助你加速🏃‍♂️
【8月更文挑战第4天】曾几何时,Python应用响应缓慢,用户体验大打折扣。但有了JMeter与Locust,一切迎刃而解!JMeter,跨平台的性能魔法师,助你轻松模拟高并发场景,揪出性能瓶颈。Locust,则是Python世界的性能小能手,以简洁的Python代码实现高效测试。两者联手,让你的应用摆脱蜗牛速度,迎接流畅体验的新篇章!
52 0
深入解析 JMeter TPS 测试:从理论到实践
本文档介绍了如何使用Apache JMeter进行TPS测试。TPS(Transactions Per Second)是衡量系统性能的关键指标,表示每秒处理的事务数。在JMeter中,创建测试计划包括配置线程组、HTTP请求、定时器和监听器。运行测试后,通过聚合报告分析吞吐量、平均响应时间和错误率来计算TPS。当TPS不足时,可优化服务器资源、应用程序代码、数据库查询或引入缓存来提升性能。掌握TPS测试有助于系统性能优化。
|
XML JSON 监控
深入解析JMeter HTTP 请求头:实战技巧
在深入研究 JMeter 的过程中,任何涉及性能测试或接口验证的专业人员都会认识到,合理配置HTTP请求头部信息是实现精确测试的关键步骤之一。不同情景下,如数据提交形式的不同(例如 JSON、XML 等),或是需要通过 HTTP 头传递特定的认证信息(如使用 JWT 或 OAuth 2.0 令牌)时,了解如何在 JMeter 中灵活设置请求头显得尤为重要。