JMeter 负载测试教程



JMeter 负载测试概述

每个网络应用都有其最大负载能力,超出该能力可能导致系统变慢、出错或整体失效。负载测试在评估网络应用性能中至关重要。这种测试是软件和应用开发生命周期的重要组成部分,特别是针对预计将处理大量用户流量的网络应用、网站或 API。为了确保您的应用能在高峰或持续高流量条件下运行,必须使用性能测试工具。Apache JMeter 是这种用途的流行选择,如果您是性能测试新手,您可能会问什么是 JMeter?以及 JMeter 是如何工作的?下面我们将介绍 JMeter 及其性能测试的使用方法。

什么是负载测试?

负载测试 是一种性能测试,用于确定您的网络应用在正常和高峰负载条件下的表现,甚至找到系统的崩溃点。它通过模拟现实使用情况或负载,对软件、网站、网络应用、API 或系统进行分析,识别响应能力、性能下降和可扩展性等因素。

负载测试工具

负载测试工具对简化负载测试需求和提升数字性能极其重要。市场上工具和平台种类繁多,功能丰富。常见的负载测试工具包括:

    • LoadView
    • Apache JMeter
    • WebLOAD
    • LoadRunner
    • Tricentis NeoLoad
    • LoadNinja

本指南将重点介绍 JMeter 负载测试。我们将解答诸如:什么是 JMeter,如何进行 JMeter 负载测试,以及如何使用 JMeter 进行 API 性能测试等问题。

什么是 JMeter 负载测试?

Apache JMeter,简称 JMeter,是一个广泛使用的开源软件,作为一个纯 Java 应用程序设计,用于进行功能行为的负载测试和性能评估。由于其详尽的文档、强大的社区支持和成熟的最佳实践,JMeter 被开发者和软件团队广泛选用。此外,它免费开源,具有成本效益,但由于完全基于 Java,团队可能需要额外的时间和资源来启动测试流程。

JMeter 支持多种协议,包括 HTTP、HTTPS、FTP 等,使其适用于测试不同类型的应用。用户可以创建和执行定义各种场景的测试计划,如模拟用户交互、监控服务器性能和分析响应时间。

JMeter 负载测试旨在对功能行为进行负载测试并测量其性能。您可以使用 JMeter 分析和测量网络应用或服务的性能。通过分析收集的数据并生成报告,您可以观察应用行为,识别性能瓶颈,从而提供提升应用的宝贵建议。

为什么使用 JMeter?

  • 开源免费:JMeter 完全免费,开发者可以访问源代码。
  • 平台独立:JMeter 100% Java 编写,可在多平台运行。
  • 支持多协议:JMeter 既支持网络应用测试,也支持数据库服务性能测试。支持所有基础协议如 HTTP、JDBC、LDAP、SOAP、JMS 和 FTP。
  • 录制与回放:JMeter 允许录制浏览器上的用户活动以模拟,随后可以回放录制内容。
  • 可定制报告:以图表、表格、树状图和日志文件等多种格式可视化测试结果。
  • 社区支持:拥有庞大社区,提供帮助、指导和教程。
  • 可扩展性:JMeter 可通过插件扩展功能,用户可根据需求定制工具。

JMeter 负载测试的优势

JMeter 是一个出色的负载测试工具,拥有众多优势,使其成为测试人员的首选。首先,它完全免费且开源,意味着您无需担心预算限制,且人人可用!此外,它功能强大,能模拟真实场景,清晰展示应用在不同负载下的表现。

JMeter 的一个显著特点是其可扩展性。无论您运行小型测试还是模拟大规模流量,它都能轻松应对。同时,其详细的报告和分析功能帮助您提前定位性能问题,更容易优化应用,保持稳定运行。

我们喜欢 JMeter 的另一个原因是其用户友好性!您不必是编码高手也能创建复杂测试场景,JMeter 界面直观简洁。内置的报告和可视化功能方便分析测试结果,查找性能瓶颈。总体而言,JMeter 是一个可靠且易用的工具,帮助确保您的应用能应对各种挑战!

    如何进行 JMeter 负载测试

    让我们看看使用 JMeter 进行负载测试以及配置基本负载测试所涉及的一些步骤。
     

    步骤 1:验证系统兼容性以安装 JMeter

    在安装 JMeter 之前,确保系统满足要求非常重要。JMeter 基于 Java,因此您需要安装 Java 8 或更高版本。确认操作系统与 JMeter 兼容。JMeter 支持多种操作系统,包括 Windows、Linux 和 macOS。

    确认系统满足基本要求后,即可进行 JMeter 安装,确保安装顺利并在负载测试时发挥最佳性能。
     

    步骤 2:下载并安装适合您系统的 JMeter

    确认系统符合要求后,下载最新版本的 JMeter,可选择二进制或源码文件。二进制文件是预编译版本,可以直接运行;源码文件适合需要手动配置和编译的开发者或团队。一般推荐选择二进制版本,便于安装。提供 .zip 和 .tgz 等不同文件格式。

    选择版本后,下载到系统,解压到指定位置或新建文件夹。解压过程需要几分钟。安装步骤因操作系统不同而异,但安装完成后,JMeter 功能保持一致。
     

    步骤 3:创建负载测试计划

    JMeter 用户可以从零开始创建负载测试计划,或从 File 菜单选择各种测试计划模板。模板包括 SOAP WebService 测试计划、基础及高级 Web 测试计划、FTP(文件传输协议)测试计划、功能测试计划等。这些模板包含测试计划所需的特定元素、部分和字段。

    创建测试计划,可访问 File 并选择 New,或点击工具栏上的新建按钮。注意,必须在 GUI 模式下运行 JMeter 以创建测试计划。命令行界面(CLI)用于执行负载测试。接下来,我们将讨论如何指定负载测试的用户数量,即线程组。
     

    步骤 4:在 JMeter 中添加并配置线程组

    添加线程组的步骤:右键单击测试计划,悬停在 Threads(用户)上,点击 Thread Group。

    在弹出的线程组对话框中,您可以编辑线程属性,如线程数(用户数)、Ramp-up 时间(秒)、循环次数等。还可以设置延迟、测试启动和停止时间,以及对采样器错误的响应。线程属性包括:

      • 线程数:代表连接到服务器的虚拟用户数量。
      • Ramp-Up 时间:JMeter 使指定线程数进入运行状态所需的时间。
      • 循环次数:每个线程执行任务的次数。
      • 无限循环:启用后忽略循环次数,直到手动停止。
      • 延迟创建线程:直到指定秒数后才创建线程。
      • 调度器:启用后可配置特定时间启动和停止测试。

    此步骤允许您精细定制负载测试参数,控制并发人数、测试时长及特定条件。
     

    步骤 5:配置采样器

    在 JMeter 中,采样器允许发送不同类型的请求。例如 HTTP 请求(用于网站、应用或 API)、FTP 请求、SMTP 请求、TCP 请求等。您需要输入协议(HTTP/S)、服务器名称或 IP、路径(具体网页)、请求类型(GET、POST、HEAD、PUT 等),适合 API 负载测试。
     

    步骤 6:配置监听器

    为了分析采样器结果,需配置监听器。在 JMeter 测试计划窗口,您可以选择不同监听器,如 Summary Report、Aggregate Graph、View Results Tree、View Results in Table 等,用于深入检查和分析测试结果。可在测试计划中添加多个监听器。配置完成后,测试计划即准备就绪,可以执行测试。
     

    步骤 7:录制负载测试脚本

    若仅需基本 HTTP 或协议级负载测试,无需复杂配置。但若需模拟用户实际操作,您需使用 JMeter 的 HTTP(S) 测试脚本录制器。

    在线程组中添加录制控制器。该控制器能录制您在网站或应用上的操作,生成 HTTP/S 请求。可为每个页面添加多个录制控制器,节省手动输入请求时间。

    缺点是录制是基于 HTTP/S 请求,而非真实浏览器视角的录制。您也可使用 JMeter 代理服务器录制浏览器操作,但过程繁琐复杂。若需更简便直观的方案,可选择 LoadView 的 EveryStep 网页录制器。LoadView 提供点按脚本录制,使用真实浏览器,且不需 JMeter 的复杂配置。
     

    步骤 8:运行并执行负载测试

    配置完所有测试详情和设置后,保存测试计划。点击工具栏的运行按钮,测试将开始。建议使用命令行模式运行测试,以获得更佳结果。
     

    步骤 9:查看负载测试结果

    测试结果将显示在表格中,但具体内容取决于监听器。结果包括时间(毫秒)、状态(有效响应和错误)、字节数及发送字节数、延迟和连接时间等。通过分析结果,您可以定位错误位置或加载缓慢的环节。

    如何使用 JMeter 进行 API 负载测试

    之前,我们介绍了如何用 JMeter 对网站或应用进行协议级负载测试。现在我们讲述如何使用 JMeter 测试不同的 API,如 SOAP 和 REST API。安装和设置步骤与前述相同,重点介绍 API 测试的基本要点和关键注意事项。
     

    使用 JMeter 进行 REST API 测试

    RESTful API(表现层状态转移)在开发多种网络服务中发挥重要作用。与 SOAP API 不同,REST 不是协议,而是一种架构风格,依赖 URI(统一资源标识符)和 HTTP 协议。
     

    步骤 1:创建负载测试计划

    打开 JMeter,会自动打开新的测试计划窗口。若已打开 JMeter,亦可点击主工具栏的新建按钮创建新测试计划。
     

    步骤 2:添加并配置线程组

    与之前相同,线程组窗口可添加用户数(线程数)、设置 Ramp-up 时间、循环次数等,并可编辑其他属性。
     

    步骤 3:配置采样器

    接下来需要添加采样器。您可以选择 JMeter 预配置的采样器或自定义采样器。这里示范选用预配置选项。

    右键线程组弹出菜单,选择添加 → 采样器,出现采样器选项列表。API 测试选择 HTTP 请求,打开配置窗口,在此命名测试并设置 REST API 测试参数。HTTP 请求窗口分基础和高级两部分,本示例关注基础设置,包括协议、服务器名称或 IP、端口号、HTTP 请求方法(GET/POST/HEAD/PUT/DELETE 等)、参数等。

    首先,在服务器名称或 IP 处输入 API 的域名及协议,在路径字段输入 API 路径。

    若为 GET 请求,选择 HTTP 请求中的 GET。

    如有参数(如分页),可在参数字段填写。

    参数也可写在路径字段,但填写参数字段提供更多选项,如 URL 编码、内容类型、是否包含等号。

    部分请求需添加请求头,方法是右键 HTTP 请求,选择添加 → 配置元件 → HTTP 头管理器,打开窗口输入 API 头信息。配置完成后进入下一步。
     

    步骤 4:添加监听器

    右键线程组选择添加 → 监听器,从超过 15 种监听器中选用,常用的有查看结果树和查看结果表。注意,图形类监听器(如查看结果树)占用更多内存和 CPU 资源。添加完成后保存测试计划。
     

    步骤 5:运行测试并查看结果

    保存测试后,点击工具栏的运行按钮启动测试。窗口将显示采样器结果,包括各种指标数据,如延迟、响应码、连接时间等 REST API 测试细节。
     

    使用 JMeter 进行 SOAP API 测试

    SOAP(简单对象访问协议)与 REST API 不同,运行在独立协议下。对 SOAP API 负载测试需考虑安全和合规,带宽需求(SOAP API 通常资源占用更高)及功能特性,如重试逻辑(REST API 中无此特性)。
     

    步骤 1:创建负载测试计划

    JMeter 提供多种测试计划模板,菜单或主工具栏的模板图标中可找到“构建 SOAP WebService 测试计划”选项,选择后生成并打开对应测试计划。此模板包含占位字段,需填写相关数据。
     

    步骤 2:输入相关数据

    如同之前的 REST API 配置,需输入用户数(线程数)、Ramp-up 时间和循环次数。

    主线程组子组中有 HTTP 请求设置,布局与 REST API 差异,默认显示 SOAP 请求体。包含 HTTP 头管理器和响应断言等子部分。可根据需要添加授权管理器等配置元素。
     

    步骤 3:添加 HTTP 请求采样器

    进行 SOAP API 负载测试时,需添加 HTTP 请求采样器。填写服务器名称或 IP、路径、HTTP 请求类型、端口及 SOAP 请求体数据。
     

    步骤 4:添加监听器

    配置完测试计划后,添加监听器显示测试结果。可根据需要添加多个监听器以支持 SOAP API 负载测试。
     

    步骤 5:运行测试

    完成测试计划配置后,运行 SOAP API 负载测试,测试结束后查看结果。

    总结

    至此,您已经了解了什么是 JMeter、如何用 JMeter 进行负载测试,以及如何用 JMeter 对 API 进行负载测试。正如您所见,使用 JMeter 设置负载测试涉及许多不同步骤和配置选项,需花费大量时间准备测试,而非直接运行。尽管 JMeter 是免费开源解决方案,您或许还需寻求具备更好功能且符合业务需求的其他负载测试工具。

    LoadView:最佳 JMeter 替代方案

    LoadView 是当今卓越的付费性能测试解决方案之一,提供丰富功能,包括点按脚本录制器全球分布的负载注入服务器网络多种负载曲线配置场景,提升测试灵活性。与 JMeter 不同,LoadView 无需额外基础设施,一切通过平台自动管理。JMeter 仅支持协议级负载测试,而 LoadView 使用真实浏览器,实测关键网站、应用和 API 的实际性能。此外,LoadView 提供多种选项,如静态代理 IP 白名单与本地代理,允许测试在防火墙后应用,提供更大灵活性。

    LoadView 提供用户友好的性能报告和仪表盘,清晰展现影响性能的因素。配备网页和应用测试的参考视频,方便直观对比用户视角。LoadView 支持灵活的月付及年付计划,并为所有客户提供全天候支持,区别于市场上部分工具。

    将您的负载测试提升到
    新高度

    体验无与伦比的功能及无限的可扩展性。无需信用卡,无需合同。