1. 概述
本文将使用 Apache JMeter 配置和运行性能测试。JMeter 是一款强大的性能测试工具,特别适合模拟高并发场景下的系统压力测试。
2. JMeter 环境搭建
⚠️ 操作步骤:
- 下载 JMeter(当前稳定版为 3.3,最新版本查看这里)
- 解压文件
- 进入
bin
目录 - 运行可执行文件:
- Windows:
jmeter.bat
- Linux/Unix:
jmeter.sh
- Windows:
- 将 JMeter 目录添加到系统环境变量
PATH
中
✅ 验证安装: 命令行输入 jmeter -v
能显示版本信息即表示成功
3. 创建 JMeter 脚本
现在开始编写第一个 JMeter 脚本(包含测试技术描述的文件)。我们将测试一个简单的 SpringBoot REST API。
3.1 基础配置
- 重命名测试计划(Test Plan)
- 添加线程组(Thread Group):
- 右键测试计划 → 添加 → Threads(Users) → 线程组
3.2 线程组参数配置
在线程组配置界面设置并发参数:
关键参数说明:
- 名称:线程组标识(如"用户模拟组")
- 线程数:并发用户数(示例设为5)
- Ramp-Up 时间:达到最大并发所需时间(秒)
- 循环次数:每个线程的请求重复次数
3.3 添加 HTTP 请求
在线程组下添加 HTTP 请求:
- 右键线程组 → 添加 → Sampler → HTTP 请求
- 填写 API 信息:
- 服务器名称/IP:如
api.example.com
- 端口号:如
8080
- 路径:如
/students
- 服务器名称/IP:如
3.4 添加结果监听器
为查看测试结果添加监听器:
- 右键线程组 → 添加 → 监听器 → 查看结果树
- ✅ 适合查看详细响应数据
- ❌ 大量并发时建议改用"用表格查看结果"
点击工具栏绿色箭头运行测试,查看响应数据:
采样器结果 标签页可查看更详细的响应信息
3.5 添加断言
为验证响应时间添加断言:
- 右键 HTTP 请求 → 添加 → 断言 → 持续时间断言
- 设置最大允许时间(如10毫秒)
重新运行测试,超时请求将标记为失败(示例中3个用户未在10ms内获取学生列表):
3.6 保存脚本
将脚本保存为 .jmx
文件(建议存放在项目 resources
目录)
3.7 其他有用组件
- JDBC 请求:数据库性能测试(需先配置 JDBC 连接配置)
- XML 断言:验证 XML 响应格式
- 大小断言:验证响应数据字节数
- JMS 发布者:发送 JMS 消息(遵循 J2EE 规范)
更多组件参考 官方手册
4. 运行 JMeter 测试
有两种主流运行方式,都需要提前准备好 .jmx
脚本文件。
4.1 使用 Maven 插件
JMeter Maven Plugin 可将测试集成到构建流程(当前最新版 3.7.0,兼容 JMeter 3.3)。
在 pom.xml
添加配置:
<plugin>
<groupId>com.lazerycode.jmeter</groupId>
<artifactId>jmeter-maven-plugin</artifactId>
<version>3.7.0</version>
<executions>
<execution>
<id>jmeter-tests</id>
<goals>
<goal>jmeter</goal>
</goals>
</execution>
</executions>
<configuration>
<testFilesDirectory>${project.basedir}/src/main/resources</testFilesDirectory>
<resultsDirectory>${project.basedir}/src/main/resources</resultsDirectory>
</configuration>
</plugin>
运行命令:
- 执行所有测试:
mvn verify
- 仅执行 JMeter 测试:
mvn jmeter:jmeter
⚠️ 目录说明:
- 未指定脚本目录时默认:
${project.basedir}/src/test/jmeter
- 未指定结果目录时默认:
${project.basedir}/target/jmeter/results
插件完整文档见 GitHub
4.2 非图形界面模式
直接通过命令行运行(需确保 JMeter 已添加到 PATH):
jmeter -Jjmeter.save.saveservice.output_format=xml \
-n -t src/main/resources/JMeter.jmx \
-l src/main/resources/JMeter.jtl
参数说明:
-n
:非 GUI 模式-t
:指定测试脚本-l
:指定结果输出文件-Jjmeter.save.saveservice.output_format=xml
:设置输出格式为 XML
⚠️ 重要提醒: 性能测试绝对不要使用 GUI 模式!图形界面会消耗大量资源,导致测试结果失真。GUI 仅用于脚本创建和调试。
5. 总结
本文快速演示了如何使用 JMeter 对 SpringBoot 应用进行性能测试,包括:
- 脚本创建与配置
- 断言添加
- 两种运行方式(Maven 插件/命令行)
完整源码可在 GitHub 获取。性能测试是保障系统稳定性的关键环节,建议在项目早期就纳入测试流程。