JMeter 负载测试教程
JMeter 负载测试概述
每个 Web 应用程序都有一个最大负载能力,超过它可能会导致速度变慢、错误或整体效率低下。 负载测试对于评估 Web 应用程序的性能至关重要。 这种类型的测试是软件和应用程序开发生命周期的重要组成部分,尤其是在处理预计会处理大量用户流量的 Web 应用程序、网站或 API 时。 为了确保您的应用程序能够在高峰或持续的高流量条件下运行,必须采用性能测试工具。 Apache JMeter 是实现此目的的热门选择,如果您不熟悉性能测试,您可能会问自己什么是 JMeter? 杰米特是如何工作的? 我们将了解 JMeter 以及如何使用 JMeter 进行性能测试。
什么是负载测试?
负载测试是一种性能测试,用于确定 Web 应用程序在正常和峰值负载条件下的行为方式,甚至查找中断点。 它是在任何软件、网站、Web 应用程序、API 或系统上模拟真实世界的使用或加载,以分析和识别响应能力、降级和可伸缩性等因素的做法。
负载测试工具
负载测试工具对于简化负载测试需求和提高数字性能非常重要。 当今市场上具有多种功能的工具和平台的数量和种类是无止色的。 有很多负载测试工具,例如:
-
- LoadView
- 阿帕奇 · 杰米
- 网络负载
- 负载运行器
- Tricentis NeoLoad(特里森提斯新加载)
在本指南中,我们将介绍 JMeter 负载测试。 我们将回答一些问题,例如:什么是 JMeter,如何进行 JMeter 负载测试,以及如何使用 JMeter 进行 API 性能测试。
什么是 Jmeter?
Apache JMeter,也称为 JMeter,是一种广泛使用的开源软件,设计为 100% 纯 Java 应用程序,用于对功能行为进行负载测试并评估性能。 由于其广泛的文档、强大的社区支持和既定的最佳实践,它是开发人员和软件开发团队进行性能测试的首选工具。 此外,免费和开源使其成为一个具有成本效益的选择,但由于它是 100% Java,因此您的团队可能需要额外的时间和资源来启动测试过程。
JMeter 负载测试旨在对功能行为进行负载测试并衡量其性能。 您可以使用 JMeter 来分析和衡量 Web 应用程序或服务的性能。 通过分析收集的数据并生成报告,您可以观察应用程序的行为并识别性能瓶颈,从而为需要应用程序增强功能的领域提供有价值的见解。
为什么使用 JMeter?
- 开源: JMeter 是完全免费的,开发人员可以使用源代码。
- 平台独立: JMeter 是 100% 的,可以在多个平台上运行。
- 支持多协议: JMeter 同时支持 Web 应用程序测试和数据库服务性能。 它支持所有基本协议,例如 HTTP、JDBC、LDAP、SOAP、JMS 和 FTP。
- 录制和回放: JMeter 允许您在要模拟的浏览器上记录用户活动,然后您可以回放录制。
- 可定制的报告: 以不同的格式可视化测试结果,例如图表、表格或树和日志文件。
- 社区支持: 有一个大型社区,提供帮助、指导和教程。
如何执行 JMeter 负载测试
让我们看一下如何使用 JMeter 进行负载测试以及如何配置基本负载测试所涉及的一些步骤。
步骤 1:验证 JMeter 安装的系统兼容性
在继续安装 JMeter 之前,确保您的系统满足要求至关重要。 JMeter 是基于 Java 的,因此您需要在系统上安装 Java 8 或更高版本。 确认您的操作系统与 JMeter 兼容。 JMeter 旨在适用于各种操作系统,包括 Windows、Linux 和 macOS。
确认系统满足这些基本要求后,就可以继续安装 JMeter。 这确保了负载测试期间的顺利设置和最佳性能。
第 2 步:为您的系统下载并安装 JMeter
确保您的系统满足所有必要的要求后,继续下载最新的 JMeter 版本——根据您的特定需求在二进制文件或源文件之间进行选择。二进制文件(由预编译的 JMeter 版本组成)可以立即运行,而源文件则为开发人员或团队的手动配置和编译提供了灵活性。通常,为了便于安装,首选二进制版本。可以使用不同的文件下载类型,例如 .zip 和 .tgz。
选择首选版本后,将其下载到您的系统。 然后,您可以打开文件,将其移动到指定位置,或创建一个新文件夹以供将来访问。 开始提取过程,这可能需要几分钟时间。 请注意,安装步骤可能因操作系统而异,但安装后,JMeter 的功能将保持一致。
步骤 3:创建负载测试计划
JMeter 用户可以从头开始创建负载测试计划,也可以从文件下拉菜单中的各种测试计划模板中进行选择。 模板包括 SOAP WebService 测试计划、基本和高级 Web 测试计划、FTP(文件传输协议)测试计划、功能测试计划等。 这些测试模板将包括所有必要的特定元素、部分和字段,用于创建和构建负载测试计划。
若要创建测试计划,只需导航到“文件”,然后选择“新建”,或从工具栏中选择“新建”按钮。 请务必注意,您必须在GUI模式下运行JMeter才能创建测试计划。 CLI 或命令行接口用于执行负载测试。 接下来,我们将讨论如何指定负载测试的用户数,也称为线程组。
步骤 4:在 JMeter 中添加和配置线程组
若要合并线程组,请按照下列步骤操作: 右键单击“测试计划”,将鼠标悬停在“线程(用户)”上,然后单击“线程组”。
在随后的“线程组”对话框中,您可以编辑各种线程属性,例如线程数(用户数)、加速周期(以秒为单位)和循环计数(测试迭代)。 此外,指定延迟等操作,设置测试开始和停止时间,并定义对 Sampler 错误的响应。 线程属性包括:
-
- 线程数:表示连接到服务器的虚拟用户数。
- Ramp-Up Period:表示 JMeter 将指定数量的线程转换为运行状态所需的时间。
- 循环计数:指示每个线程执行任务的次数。
- 循环计数无限:激活后,它会忽略循环计数,导致无限循环,直到手动停止。
- 延迟线程创建直到需要:延迟线程创建,直到达到指定值(以秒为单位)。
- 计划程序:启用计划程序配置,以便在激活时在特定时间安排测试。
此步骤可以对负载测试参数进行细致的自定义,使用户能够控制并发性、持续时间和特定测试条件。
步骤 5:在 JMeter 中配置示例
在 JMeter 中,采样器允许 JMeter 发送不同类型的请求。 例如,这些可以是 HTTP 请求(针对网站、应用程序或 API)、FTP 请求、SMTP 请求、TCP 请求等。 在这里,您可以输入其他详细信息,例如协议 (HTTP/S)、服务器名称或 IP、路径(用于特定网页)以及可用于 API 负载测试的请求类型,例如 GET、POST、HEAD、PUT 等。
步骤 6:配置侦听器
要在 JMeter 中分析 Sampler 结果,下一步涉及配置所谓的侦听器。 在 JMeter Test Plan 窗口中,您可以从各种侦听器中进行选择,包括摘要报告、聚合图、查看结果树、在表中查看结果等,以彻底检查和分析您的测试结果。 此外,您可以灵活地将多个侦听器添加到 JMeter 测试计划中。 完成此操作后,测试计划已准备就绪,您可以继续执行测试。
步骤 7:记录负载测试脚本
如果目标是在不进行大量配置的情况下执行基本的 HTTP 或协议级负载测试,则无需其他设置。 但是,如果您需要与用户操作非常相似的测试,则需要使用 JMeter 中的 HTTP(S) 测试脚本记录器。
在线程组中,应添加录制控制器。 此控制器允许您导航站点或应用程序,通过 HTTP/S 请求记录您的操作。 您还可以在每页包含多个录制控制器,这样可以节省您的时间,因此您不必手动添加每个请求。
这样做的缺点是,您的记录是使用 HTTP/S 请求完成的,并且从用户的角度来看,它不是在真正的浏览器中记录的。 您还可以使用 JMeter 代理服务器录制浏览器,但这可能是一个繁琐而困难的过程。 如果您正在寻找一种更简单、更直观的解决方案,您可以选择使用具有 EveryStep Web Recorder 的 LoadView。 LoadView 的记录器使用真实浏览器提供点击式脚本,而无需在 JMeter 中进行复杂且耗时的设置。
步骤 8:运行并执行负载测试
配置所有负载测试详细信息和设置后,保存测试计划。 然后,您只需选择工具栏中的“运行”按钮,您的测试就会开始。 请记住,要在 CLI 模式下运行测试以获得更好的结果。
步骤 9:查看负载测试结果
您将在表中看到测试结果,但这可能取决于您的侦听器。 您的结果将包括其他指标,例如时间(以毫秒为单位)、状态(显示有效的响应和错误)、发送的字节数和字节数、延迟和连接时间。 通过检查这些结果,您可以确定任何错误的位置或加载时间缓慢的实例。
如何使用 JMeter 执行 API 负载测试
之前,我们讨论了有关如何使用 JMeter 在网站或应用程序上设置基于协议的负载测试的分步说明。 现在,我们将介绍如何使用 JMeter 测试不同的 API,例如 SOAP 和 REST API。 安装和设置过程与前面提到的步骤保持一致。 但是,我们将重点关注 API 测试的基本方面,并讨论使用 JMeter 进行 API 测试时的重要注意事项。
使用 JMeter 进行 Rest API 测试
RESTful API 是 Representational State Transfer API 的缩写,在开发各种 Web 服务方面发挥着至关重要的作用。 与SOAP API相比,REST不是一种协议,而是一种依赖于URI(统一资源标识符)和HTTP协议的架构风格。
步骤 1:创建负载测试计划
首先,打开JMeter。 您将看到将打开一个新的“测试计划”窗口。 如果已打开 JMeter,还可以从主工具栏中选择“新建”按钮以创建新的测试计划。
步骤 2:在 JMeter 中添加和配置线程组
与上一节类似,您可以在“线程组”窗口中添加用户数 (Threads)、设置启动时间和测试迭代次数 (Loop Count) 以及编辑更多属性。
步骤 3:配置采样器
接下来,我们需要添加采样器。 您可以从 JMeter 中的一些预配置采样器中进行选择,也可以从您自己的采样器中进行选择。 在此示例中,我们将使用预配置的选项。
若要启动此过程,请右键单击“线程组”,从而触发下拉窗口。 选择“添加”,然后选择“采样器”。 将出现 Sampler 选项列表。 对于 API 测试,请选择 HTTP 请求,打开配置窗口,您可以在其中命名测试并设置 REST API 测试的参数。 值得一提的是,“HTTP 请求”窗口分为“基本”和“高级”部分。 对于此测试,我们将专注于基本设置。 各种字段,包括协议、服务器名称或 IP、端口号、HTTP 请求(GET/POST/HEAD/PUT/DELETE 等)、参数等,可供配置。
首先,在“服务器名称”或“IP”字段中输入 API URL(仅输入域名)以及相应的协议,然后在“路径”字段中添加 API 的路径。
如果这是 GET 请求,请从“HTTP 请求”列表中选择“GET”。
如果您有某些参数(如特定页面),则可以在参数字段中添加 URL 的这一部分。
您也可以将其包含在“路径”字段中,但是,通过将其添加到“参数”字段,您有其他字段选项,例如“URL Encode?”、“Content-Type”和“Include Equals?
对于某些请求,必须包含请求标头。 为此,请转到“测试计划”窗口中的“HTTP 请求”。 右键单击将显示一个下拉菜单;选择“添加”,然后选择“配置元素”。 此操作将打开可用选项。 在这种情况下,请选择 HTTP 标头管理器。 随后的 HTTP Header Manager 窗口允许您输入 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 配置中讨论的内容类似,您需要输入用于 SOAP API 测试的用户数 (Threads)、启动期和循环 (test 迭代)。
在主线程组的子组中,您可以访问 HTTP 请求设置,类似于我们之前介绍的 REST API 设置。 但是,此部分的布局有所不同,默认显示 SOAP API 请求正文。 本部分还包括 HTTP 标头管理器和响应断言的子部分。 与 REST API 配置类似,如果需要包含特定的授权详细信息,您可以合并其他配置元素,例如 HTTP 授权管理器。
步骤 3:添加 HTTP 请求采样器
对于 SOAP API 负载测试,您需要添加 HTTP 请求采样器。 在此窗口中,您需要输入相关详细信息,包括服务器名称或 IP、路径、HTTP 请求、端口号和 SOAP 请求的正文数据。
第 4 步:添加侦听器
配置测试计划后,需要添加侦听器,这将显示测试结果。 同样,您可以添加尽可能多的听众,只要你喜欢和适当的肥皂API负载测试。
步骤 5:运行测试
设置测试计划配置和设置后,您最终可以运行 SOAP API 负载测试,并在完成后查看结果。
结论
到现在为止,您应该已经了解了 JMeter 是什么,如何进行 JMeter 负载测试,以及如何使用 JMeter 对 API 执行负载测试。 正如你所看到的,使用 JMeter 设置负载测试带有许多不同的步骤和配置选项,这相当于花费大量时间设置测试,而不是运行测试。 尽管 JMeter 是一个开源和免费的解决方案,但您可能需要寻找其他负载测试工具,以提供更好的功能并满足您的业务需求。
LoadView:最好的 JMeter 替代品
LoadView 是当今首屈一指的付费性能测试解决方案之一,提供一系列功能。 其中包括点击式脚本记录器、访问负载注入器服务器的全球网络,以及配置各种负载曲线场景以增强测试灵活性的能力。 与 JMeter 相比,LoadView 不需要额外的基础结构或注意事项,因为一切都是无缝管理的。 与仅限于协议级负载测试的 JMeter 不同,LoadView 使用真实的浏览器,允许您评估关键站点、应用程序和 API 的实际性能。 此外,LoadView 还提供了多个选项,例如将静态代理 IP 列入白名单或利用现场代理,从而在防火墙后面的应用程序上进行测试,并为性能测试提供更大的灵活性。
LoadView 提供用户友好的性能报告和仪表板,提供对导致性能欠佳的因素的清晰见解。 此外,它还包括用于网页和 Web 应用程序测试的参考视频,可以与报表直接比较以可视化用户的观点。 LoadView 提供灵活的月度和年度计划,并为所有客户提供 24×7 全天候支持,无论他们选择的计划如何,将其与市场上的其他一些工具区分开来。
下一级
体验无与伦比的功能,具有无限的可扩展性。 没有信用卡,没有合同。