1. 概述

本文将使用 Apache JMeter 配置和运行性能测试。JMeter 是一款强大的性能测试工具,特别适合模拟高并发场景下的系统压力测试。

2. JMeter 环境搭建

⚠️ 操作步骤:

  1. 下载 JMeter(当前稳定版为 3.3,最新版本查看这里
  2. 解压文件
  3. 进入 bin 目录
  4. 运行可执行文件:
    • Windows:jmeter.bat
    • Linux/Unix:jmeter.sh
  5. 将 JMeter 目录添加到系统环境变量 PATH

验证安装: 命令行输入 jmeter -v 能显示版本信息即表示成功

3. 创建 JMeter 脚本

现在开始编写第一个 JMeter 脚本(包含测试技术描述的文件)。我们将测试一个简单的 SpringBoot REST API。

3.1 基础配置

  1. 重命名测试计划(Test Plan)
  2. 添加线程组(Thread Group):
    • 右键测试计划 → 添加 → Threads(Users) → 线程组

线程组菜单

3.2 线程组参数配置

在线程组配置界面设置并发参数:

线程组配置

关键参数说明:

  • 名称:线程组标识(如"用户模拟组")
  • 线程数:并发用户数(示例设为5)
  • Ramp-Up 时间:达到最大并发所需时间(秒)
  • 循环次数:每个线程的请求重复次数

3.3 添加 HTTP 请求

在线程组下添加 HTTP 请求:

  1. 右键线程组 → 添加 → Sampler → HTTP 请求
  2. 填写 API 信息:
    • 服务器名称/IP:如 api.example.com
    • 端口号:如 8080
    • 路径:如 /students

HTTP请求配置

3.4 添加结果监听器

为查看测试结果添加监听器:

  1. 右键线程组 → 添加 → 监听器 → 查看结果树
    • ✅ 适合查看详细响应数据
    • ❌ 大量并发时建议改用"用表格查看结果"

点击工具栏绿色箭头运行测试,查看响应数据:

HTTP请求结果

采样器结果 标签页可查看更详细的响应信息

3.5 添加断言

为验证响应时间添加断言:

  1. 右键 HTTP 请求 → 添加 → 断言 → 持续时间断言
  2. 设置最大允许时间(如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

控制台输出示例: Maven运行日志

⚠️ 目录说明:

  • 未指定脚本目录时默认:${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 获取。性能测试是保障系统稳定性的关键环节,建议在项目早期就纳入测试流程。


原始标题:Intro to Performance Testing using JMeter