JMeter 负载测试教程



JMeter 负载测试概述

每个 web 应用程序都有最大负载容量,超过此容量可能导致性能变慢、错误或整体无效。负载测试对于评估 web 应用程序的性能至关重要。这种测试是软件和应用程序开发生命周期中的重要组成部分,尤其是在处理预计将承载大量用户流量的 web 应用程序、网站或 API 时。为了确保您的应用能在高峰或持续高流量条件下正常运行,必须使用性能测试工具。Apache JMeter 是常用的选择之一,如果您是性能测试的新手,可能会问自己:什么是 JMeter?JMeter 如何工作?我们将探讨 JMeter 及其在性能测试中的使用方法。

什么是负载测试?

负载测试 是一种性能测试,用于确定您的 web 应用程序在正常和峰值负载条件下的表现,甚至查找其极限点。它模拟真实世界的使用负载,针对任何软件、网站、web 应用程序、API 或系统,分析并识别响应能力、性能下降和可扩展性等因素。

负载测试工具

负载测试工具对于简化您的负载测试需求和提升数字性能极其重要。当前市场上工具种类繁多,功能各异。常用的负载测试工具包括:

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

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

什么是 JMeter 负载测试?

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

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

JMeter 负载测试设计用于对功能行为进行负载测试并测量其性能。许多团队还将 JMeter 测试集成到 CI/CD 管道中,以在构建和部署期间运行性能检查。您可使用 JMeter 分析并衡量 web 应用程序或服务的性能。通过分析收集的数据并生成报告,您能够观察应用行为,识别性能瓶颈,提供宝贵的应用优化方向。

为什么使用 JMeter?

  • 开源:JMeter 完全免费,开发者可以使用其源代码。
  • 平台独立:JMeter 可在多个平台上运行。
  • 支持多协议:JMeter 支持 web 应用测试和数据库服务性能测试,支持所有基本协议,如 HTTP、JDBC、LDAP、SOAP、JMS 和 FTP。
  • 录制与回放:JMeter 可录制浏览器中的用户活动以模拟,再进行回放。
  • 可定制报告:以图表、表格、树形和日志文件等多种格式可视化测试结果。
  • 社区支持:拥有庞大的社区,提供帮助、指导和教程。
  • 可扩展性: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 用户可从零开始创建负载测试计划,也可以从文件下拉菜单选择各种测试计划模板。模板包括 SOAP WebService 测试计划、基础和高级 Web 测试计划、FTP(文件传输协议)测试计划、功能测试计划等。这些模板包含创建及构建负载测试计划所需的所有特定元素、部分和字段。

    要创建测试计划,只需导航至文件并选择新建,或点击工具栏上的新建按钮。请注意,必须以 GUI 模式运行 JMeter 来创建测试计划。CLI(命令行界面)用于执行负载测试。接下来,我们将讲述如何指定负载测试用户数,即线程组。
     

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

    添加线程组的步骤:右键点击测试计划,悬停 Threads (Users),点击线程组。

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

      • 线程数:代表连接到服务器的虚拟用户数量。
      • Ramp-Up 时间:JMeter 将指定线程数增加到运行状态所需时间。
      • 循环计数:每个线程执行任务的次数。
      • 无限循环计数:启用时忽略循环计数,造成无限循环,直到手动停止。
      • 延迟线程创建至需用时:推迟线程创建,直到指定秒数达到。
      • 计划器:启用调度器配置,在启用时可安排测试特定时间运行。

    此步骤允许精细定制负载测试参数,使用户能控制并发数、持续时间及具体测试条件。
     

    步骤 5:在 JMeter 中配置采样器

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

    步骤 6:配置监听器

    为分析采样器结果,下一步是配置监听器。在 JMeter 测试计划窗口,可选择多种监听器,如摘要报告、聚合图、结果树、表格视图等,以全面检查和分析测试结果。且可添加多个监听器。配置完成后,测试计划便可运行。
     

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

    若目标为进行基础 HTTP 或协议级负载测试,无需额外设置。但若需测试更贴近用户操作,需用 JMeter 中的 HTTP(S) 测试脚本录制器。

    在线程组中添加录制控制器。该控制器能跟随用户浏览网站或应用,录制 HTTP/S 请求。可为每个页面添加多个录制控制器,节省手工添加请求时间。

    缺点是录制的请求为 HTTP/S 请求,非真实浏览器视角。也可用 JMeter 代理服务器录制浏览器,但过程较繁琐。如果想要更简单直观的方法,可选择 LoadView,其具备 EveryStep Web Recorder,即点选脚本录制器。LoadView 使用真实浏览器,无需配置繁琐的 JMeter 环境,操作更便捷。
     

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

    配置完成测试计划后,保存,然后点击工具栏上的运行按钮,测试随即开始。建议使用 CLI 模式运行以获得更优结果。
     

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

    测试结果将显示在表格中,具体取决于监听器。结果包含时间(毫秒)、状态(有效响应与错误)、字节数和发送字节数、延迟和连接时间等指标。通过分析这些结果,可以定位错误位置或载入缓慢的场景。

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

    之前我们讲述了如何使用 JMeter 设置基于协议的网站或应用负载测试。现在,我们将讨论如何使用 JMeter 测试不同类型的 API,如 SOAP 和 REST API。安装及设置过程与之前相同,但将重点介绍 API 测试的基本方面及要点。
     

    使用 JMeter 进行 REST API 测试

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

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

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

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

    与前述部分类似,在线程组窗口中可设置用户数(线程数)、Ramp-up 时间和测试迭代次数(循环次数)等属性。
     

    步骤 3:配置采样器

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

    右键点击线程组,选择添加,再选择采样器。出现采样器选项列表,API 测试选择 HTTP 请求,打开配置窗口,在此命名测试并设置 REST API 测试参数。HTTP 请求窗口分为基础和高级部分,此处以基础配置为主。您可配置协议、服务器名或 IP、端口号、HTTP 请求类型(GET/POST/HEAD/PUT/DELETE 等)、参数等。

    首先,在服务器名或 IP 字段输入 API 域名,选择合适协议,在路径字段输入 API 路径。

    若为 GET 请求,则 HTTP 请求类型选择 GET。

    如果有特定参数,如指定页面,可在参数字段添加。

    也可在路径字段填写,但放参数字段则有编码、内容类型等更多选项。

    某些请求需包含请求头,进入测试计划中的 HTTP 请求,右键选择添加,然后配置元素,选取 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 时间和循环次数,用于 SOAP API 测试。

    主线程组的子组中可访问 HTTP 请求设置,布局与之前 REST API 不同,默认显示 SOAP API 请求体。该部分还包括 HTTP 头管理器和响应断言子部分。可添加其他配置元素,如 HTTP 授权管理器,包含特定授权信息。
     

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

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

    步骤 4:添加监听器

    配置完成后添加监听器,显示测试结果。可根据需要添加多个监听器。
     

    步骤 5:运行测试

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

    结论

    到目前为止,您应该了解了什么是 JMeter、如何进行 JMeter 负载测试以及如何用 JMeter 执行 API 负载测试。正如您所见,设置 JMeter 负载测试涉及许多步骤和配置选项,这意味着您需要花费大量时间搭建测试,而非直接运行。尽管 JMeter 是开源且免费的解决方案,但您也许需要寻找其他提供更丰富功能且更适合业务需求的负载测试工具。

    LoadView:最佳 JMeter 替代方案

    LoadView 是当今领先的付费性能测试解决方案之一,拥有丰富功能。包括点选脚本 EveryStep 录制器全球分布式负载注入服务器网络,及灵活配置多种负载曲线方案,增强测试灵活性。与 JMeter 不同,LoadView 无需额外基础设施配置,一切均无缝管理。JMeter 仅支持协议级负载测试,LoadView 使用真实浏览器,让您可评估关键网站、应用和 API 的实际性能。此外,LoadView 提供多种选项,如将静态代理 IP 白名单或使用现场代理,支持防火墙后应用测试,为性能测试带来更大灵活性。

    LoadView 提供用户友好的性能报告和仪表盘,清晰展示影响性能的因素。还包含网页和应用测试的参考视频,可与报告直接对比,真实呈现用户视角。LoadView 提供灵活的月付和年付计划,并为所有客户提供 24×7 支持,无论选择何种计划,区别于市场上部分其他工具。

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

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