JMeter 负载测试教程



JMeter 负载测试概述

每个 Web 应用程序都有最大负载容量,超过该容量可能导致响应变慢、错误或整体无效。负载测试对于评估 Web 应用的性能至关重要。这种测试是软件和应用开发生命周期中的重要组成部分,尤其是针对预计需要处理大量用户流量的 Web 应用、网站或 API。为了确保您的应用能够在峰值或持续高流量条件下正常运行,必须使用性能测试工具。Apache JMeter 是此目的的热门选择。如果您是性能测试新手,您可能会问什么是 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 是一款可靠且易用的工具,帮助确保您的应用能应对各种挑战!

    如何执行 JMeter 负载测试

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

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

    在安装 JMeter 之前,务必确保您的系统符合要求。JMeter 基于 Java,因此需要安装 Java 8 或更高版本。确认操作系统与 JMeter 兼容。JMeter 可在 Windows、Linux 和 macOS 等多种操作系统上运行。

    确认系统满足基本要求后,即可继续安装 JMeter。这确保了安装过程顺利且负载测试性能最佳。
     

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

    确认系统满足要求后,下载最新版本 JMeter,可根据需求选择二进制文件或源码文件。二进制文件是预编译版本,可直接运行;源码则适合开发人员自定义配置和编译。通常推荐使用二进制版本以便安装。下载格式多样,如 .zip 和 .tgz。

    下载后,将文件保存至系统,您可以直接打开或移动至指定位置,或创建新文件夹存放。开始解压,可能需要几分钟。安装步骤根据操作系统略有不同,但安装完成后功能一致。
     

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

    JMeter 用户可从零开始创建负载测试计划,或从文件下拉菜单选择各种测试计划模板。模板包括 SOAP WebService 测试计划、基础和高级 Web 测试计划、FTP 测试计划、功能测试计划等。这些模板包含所有构建负载测试计划所需的特定元素、章节和字段。

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

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

    添加线程组操作步骤如下:右键点击测试计划,悬停至线程(用户),点击线程组。

    在生成的线程组对话框中,您可以编辑线程属性,如线程数(用户数)、启动周期(秒)和循环次数(测试迭代)。此外,还可指定延迟、设置测试开始和停止时间,以及定义采样器错误的响应。线程属性包括:

      • 线程数:表示连接到服务器的虚拟用户数。
      • 启动周期: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 支持真实浏览器的点选录制,无需复杂且耗时的设置。
     

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

    配置完所有负载测试细节和设置后,保存测试计划。然后点击工具栏的运行按钮,测试即开始。建议使用 CLI 模式运行测试,结果更佳。
     

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

    您将看到表格中的测试结果,但具体表现视监听器而定。结果包括时间(毫秒)、状态(有效响应和错误)、发送和接收字节数、延迟和连接时间等指标。通过查看这些结果,您可识别错误位置或加载缓慢情况。

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

    之前,我们介绍了如何使用 JMeter 设置基于协议的网站或应用负载测试的步骤。现在,我们将讲解如何用 JMeter 测试不同类型的 API,如 SOAP 和 REST API。安装和设置过程与前述步骤保持一致,但我们将重点讲解 API 测试的基本方面,并讨论用 JMeter 进行 API 测试时的重要注意事项。
     

    JMeter 进行 REST API 测试

    RESTful API(表述性状态转移 API)在开发各种 Web 服务中发挥着关键作用。不同于 SOAP API,REST 不是协议,而是一种建筑风格,依赖 URI(统一资源标识符)和 HTTP 协议。
     

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

    打开 JMeter,您会看到一个新的测试计划窗口。如果已经打开 JMeter,也可以点击主工具栏的新建按钮创建新测试计划。
     

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

    与前文类似,线程组窗口用于添加用户数(线程数)、设置启动时间和测试循环次数,并编辑更多属性。
     

    步骤 3:配置采样器

    接下来,需添加采样器。您可选择 JMeter 中预设采样器或自定义采样器。此例选用预设 HTTP 请求采样器。

    右键点击线程组,弹出下拉菜单,选择添加,再选择采样器。API 测试选择 HTTP 请求,打开配置窗口,可设置测试名称和 REST API 参数。HTTP 请求窗口分基础和高级两部分,此处重点基础设置。包括协议、服务器名称或 IP、端口号、HTTP 请求(GET/POST/HEAD/PUT/DELETE 等)、参数等。

    在服务器名称或 IP 字段输入 API URL(只需域名),协议选择相应选项,路径字段添加 API 路径。

    如果是 GET 请求,HTTP 请求选 GET。

    如有参数(如特定页面),在参数字段添加。这也可放在路径字段中,但参数字段额外支持 URL 编码、内容类型及等号包含选项。

    某些请求需添加请求头。右键点击 HTTP 请求,选择添加 -> 配置元素,选择 HTTP 头管理器。打开的窗口允许您填写 API 头信息。完成配置后进入下一步。
     

    步骤 4:添加监听器

    右键线程组,选择添加 -> 监听器。弹出菜单包含 15 多种选择,常用的有查看结果树和结果表格。需注意,图形化监听器如查看结果树会占用更多内存和 CPU。添加完监听器后保存测试计划。
     

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

    配置并保存测试计划后,点击工具栏的运行按钮开始测试。窗口显示采样器结果,包含各种详情、数据和指标,如延迟、响应码、连接时间等,针对 REST API 测试的数据。
     

    JMeter 进行 SOAP API 测试

    SOAP(简单对象访问协议)不同于 REST API,因其遵循自身协议。负载测试 SOAP API 时需考虑安全合规性、带宽需求(SOAP 通常要求更高)以及重试逻辑等功能,后者 REST API 通常无此功能。
     

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

    JMeter 提供多种测试计划模板,可在菜单或主工具栏的模板图标访问。其中一个是“构建 SOAP WebService 测试计划”,选择此模板将生成对应测试计划。作为模板,某些字段会有占位符,需要您填写相关实际信息。
     

    步骤 2:输入数据

    同 REST API 配置,您需输入用户数(线程数)、启动时间和循环次数。

    在主线程组子组中,有类似 REST API 的 HTTP 请求设置,但布局不同,默认显示 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 是当前领先的付费性能测试解决方案之一,提供丰富功能,包括点选脚本录制全球分布式负载注入服务器网络,以及多种负载曲线配置能力,灵活性极高。相比 JMeter,LoadView 无需额外基础设施或复杂配置,全部管理一体化。与仅限协议级负载测试的 JMeter 不同,LoadView 采用真实浏览器,可测试关键网站、应用和 API 的真实性能。此外,LoadView 提供多种方案,如白名单静态代理 IP 或本地代理,使得可测试防火墙后的应用,性能测试更灵活。

    LoadView 提供用户友好的性能报告和仪表盘,清晰展示性能瓶颈因素。还包含网页和应用测试的参考视频,可与报告直接对比,直观呈现用户视角。LoadView 支持灵活的按月和按年付费计划,并向所有客户全天候提供支持,这一点区别于市场上部分其它工具。

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

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