精通JMeter:性能测试实战 | AI生成和翻译

Home 2025.02

Apache JMeter 是一款功能强大的开源工具,主要设计用于性能测试,但也可用于功能测试。它通过模拟多用户并测量系统在负载下的响应情况,被广泛用于测试 Web 应用程序、API、数据库和其他服务的性能。以下是从安装到运行基本测试及分析结果的分步指南。


步骤 1:安装 JMeter

在使用 JMeter 之前,您需要将其安装到计算机上。具体步骤如下:

  1. 先决条件
    JMeter 是基于 Java 的应用程序,因此必须安装 Java 开发工具包(JDK)或 Java 运行时环境(JRE)。推荐使用版本 8 或更高。您可以在终端或命令提示符中运行 java -version 来验证。如果未安装 Java,请从 Java 官网 下载并安装。

  2. 下载 JMeter
    访问 Apache JMeter 网站,下载最新的二进制版本(通常是 .zip.tgz 文件)。

  3. 解压文件
    将下载的文件解压到您选择的目录(例如,Windows 系统为 C:\JMeter,基于 Unix 的系统为 ~/JMeter)。解压后的文件夹包含运行 JMeter 所需的所有文件。

  4. 启动 JMeter

    • 进入解压目录中的 bin 文件夹(例如 C:\JMeter\apache-jmeter-5.x\bin)。
    • 运行相应的可执行文件:
      • Windows:双击 jmeter.bat 或在命令提示符中运行。
      • Unix/Linux/macOS:在终端中执行 ./jmeter.sh
    • 这将打开 JMeter 图形用户界面(GUI),您可以在其中创建和管理测试计划。

步骤 2:创建测试计划

JMeter 中的测试计划定义了您要测试的内容和方式。它是性能测试的蓝图。以下是设置基本测试计划的方法:

添加线程组

  1. 在 JMeter GUI 中,右键单击左侧窗格中的测试计划节点,选择添加 > 线程(用户) > 线程组
  2. 配置线程组:
    • 线程数(用户数):要模拟的虚拟用户数(例如 10)。
    • Ramp-Up 时间(秒):JMeter 启动所有线程所需的时间(例如 10 秒表示 10 个线程每秒启动 1 个)。
    • 循环次数:每个线程重复测试的次数(例如 1 表示单次运行,或勾选“永远”以持续循环)。

线程组模拟用户流量。例如,10 个线程、10 秒 Ramp-Up 时间和 1 次循环意味着 10 个用户将在 10 秒内访问应用程序,每个用户执行一次测试。

添加取样器

取样器定义 JMeter 发送到目标系统的请求。对于 Web 测试,最常用的是 HTTP 请求取样器:

  1. 右键单击线程组,选择添加 > 取样器 > HTTP 请求
  2. 配置 HTTP 请求:
    • 协议httphttps
    • 服务器名称或 IP:目标系统的域名或 IP(例如 example.com)。
    • 端口号:通常 HTTP 为 80,HTTPS 为 443(如果是标准端口,可留空)。
    • 方法GETPOST 等,取决于请求类型。
    • 路径:特定端点或页面(例如 / 表示主页)。
    • 如果需要,添加参数或请求体(例如用于 POST 请求)。

此取样器告诉 JMeter 每个虚拟用户应执行的操作。

添加监听器

监听器收集并显示测试结果:

  1. 右键单击线程组,选择添加 > 监听器 > 查看结果树(或其他监听器,如汇总报告)。
  2. 查看结果树显示每个请求的详细结果,包括响应时间、状态码和响应数据。

监听器对于分析应用程序在测试期间的性能至关重要。

保存测试计划

单击文件 > 将测试计划另存为,保存您的 .jmx 文件(例如 mytest.jmx)。这使您可以稍后重用或修改它。


步骤 3:运行测试

执行测试:

  1. 在 JMeter GUI 中,单击工具栏中的绿色播放按钮(▶),或选择运行 > 启动
  2. JMeter 将模拟线程组中定义的用户,发送配置的 HTTP 请求。
  3. 在测试运行时,观察监听器(例如查看结果树)中填充的结果。

对于小型测试,通过 GUI 运行即可。对于大型测试,请参阅下面的“高级用法”部分了解非 GUI 模式。


步骤 4:分析结果

测试完成后,使用监听器查看结果:

这些指标帮助您评估应用程序的性能(例如,在负载下响应速度如何,或在特定用户数下是否失败)。


示例:测试简单网页

让我们用 10 个用户测试 example.com

  1. 启动 JMeter。
  2. 添加线程组:
    • 线程数:10
    • Ramp-Up 时间:10 秒
    • 循环次数:1
  3. 添加 HTTP 请求取样器:
    • 协议:http
    • 服务器名称:example.com
    • 方法:GET
    • 路径:/
  4. 添加查看结果树监听器。
  5. 保存并运行测试。
  6. 在查看结果树中检查结果,查看响应时间和状态码(例如 200 OK)。

此简单测试测量 example.com 在 10 个并发用户下的性能。


高级用法

对于更复杂的场景,JMeter 提供了额外功能:

参数化

使用 CSV 数据设置配置 从 CSV 文件向测试输入不同数据(例如用户名、密码):

  1. 向线程组添加配置元件 > CSV 数据设置配置
  2. 指定文件路径和变量名(例如 ${username}),然后在 HTTP 请求中使用这些变量。

关联

处理动态值(例如会话 ID、令牌):

  1. 在请求后添加后置处理器 > 正则表达式提取器JSON 提取器
  2. 将值(例如令牌)提取到变量中(例如 ${token})。
  3. 在后续请求中使用 ${token}(例如在标头或参数中)。

断言

验证响应:

  1. 向取样器添加断言 > 响应断言
  2. 检查特定文本、响应代码(例如 200),或使用 JSONPath 进行 API 测试。

非 GUI 模式

用于大型测试或自动化:

分布式测试

用于高负载:

  1. 在不同机器上设置多个 JMeter 实例。
  2. 配置主机的 jmeter.properties 文件以包含从机 IP。
  3. 从主机运行测试以协调负载生成。

额外提示


结论

使用 JMeter 的步骤:

  1. 安装 Java 并启动 GUI。
  2. 创建包含线程组、取样器和监听器的测试计划。
  3. 配置测试元素(用户、请求等)。
  4. 运行测试并分析结果。

对于简单入门,可以如上所述测试 example.com 等网页。随着经验积累,探索参数化、关联和分布式测试等高级功能,以处理复杂的真实场景。JMeter 的灵活性和广泛文档使其成为初学者和高级测试人员的宝贵工具。


Back Donate