JMeter 元素和组件:线程组、采样器

⚡ 智能摘要

JMeter 元素是每个测试计划的组成部分:线程组创建虚拟用户,采样器发送请求,监听器显示结果,配置元素提供这些请求所需的默认值和数据。

  • 🔘 主题组: 每个线程代表一个运行被测应用程序的虚拟用户。
  • ☑️ 采样器: 确定请求协议——FTP、HTTP、JDBC、SMTP 等。
  • 听众: 将结果渲染为图表、树状图、表格或日志文件。
  • 🧪 配置元素: 设置采样器在整个测试中重复使用的默认值和变量。
  • 🛠️ 数据驱动型运行: CSV 数据集配置为每个模拟用户提供不同的凭据。
  • 现代对应词: BSF Sampler 已被弃用;当前版本脚本通过 JSR223 和 Groovy.

JMeter 元素:线程组、采样器、监听器和配置元素

Element 是什么 JMeter?

的不同组成部分 JMeter 被称为元素。每个元素都有特定的用途。

下图给出了 JMeter 并展示了它们在线程组下的位置。

JMeter 元素层次结构图,线程组位于采样器、逻辑控制器、监听器、配置元素、断言、定时器和处理器之上。

一次性学习所有组成部分很容易让人感到困惑和厌倦。因此,我们将在此讨论开始学习之前必须了解的组成部分。 测试 in JMeter.

其余组件将在后续教程中使用时进行讨论。本教程中讨论的元素如下所示。

线程组

线程组是线程的集合。每个线程代表一个使用被测应用程序的用户。简而言之,每个线程模拟一个真实用户向服务器发出的请求。

线程组的控件允许您设置每个组的线程数。

例如,如果您将线程数设置为 100, JMeter 将创建并模拟 100 个用户向被测服务器发出的请求,如下图所示。

图解 JMeter 线程组模拟用户 1 到用户 100,每个用户都向被测应用程序发送请求。

线程组面板还具有启动阶段,可以将这些线程的启动时间分散到一段时间内,而不是一次性启动所有用户。

茶样系列

我们已经知道, JMeter 支持测试HTTP,FTP,JDBC等多种协议。

我们还知道,线程组可以模拟用户向服务器发出的请求。

但是线程组如何知道它需要发出哪种类型的请求(HTTP、FTP 等)呢?

答案是采样器。

用户请求可以是 FTP 请求、HTTP 请求、JDBC 请求等等。下图列出了本教程中涉及的示例程序。

树状图列表 JMeter 采样器:FTP 请求、HTTP 请求、JDBC 请求、BSF 采样器、访问日志采样器和 SMTP 采样器

FTP 请求

假设您想对 FTP 服务器进行性能测试。您可以使用 FTP 请求采样器。 JMeter 执行此任务。此控制器允许您向 FTP 服务器发送 FTP“下载文件”或“上传文件”请求。

该图显示 JMeter 向 FTP 服务器发送 FTP 请求以上传或下载文件

例如,如果你想从被测FTP服务器下载一个文件“Test.txt”,你需要在 JMeter 如下图所示。

FTP 请求示例面板,服务器地址为 ftp.example.com,端口为 21,远程文件为 Test.txt,并启用匿名登录

面板将服务器设置为 ftp.example.com端口 21,远程文件为 Test.txt,并使用 get(RETR) 选项,因此 JMeter 向该服务器发送 FTP 命令并下载文件。

HTTP请求

该采样器允许您向 Web 服务器发送 HTTP/HTTPS 请求。

考虑下面的例子。 JMeter 向目标发送HTTP请求 Google 网站并从中检索 HTML 文件或图像。

图 JMeter 向 Google 网站并接收 HTML 和图像作为返回

在教程中 JMeter 性能测试我们将详细解释这个HTTP请求。它是最常用的采样器。 Web应用程序测试 工作依赖于。

JDBC 请求

此采样器允许您执行数据库操作 性能测试。它向数据库发送 JDBC 请求(SQL 查询)。

图 JMeter 向数据库服务器发送 SQL 查询并接收结果

例如,数据库服务器上有一个名为 test_tbl 的表中存储了一个名为 test_result 的字段。您希望从数据库服务器查询此数据,因此您可以进行配置。 JMeter 发送一个 SQL 向该服务器发出查询以检索数据。

JDBC 请求面板,查询类型设置为 SELECT 语句,查询语句为 SELECT test_result FROM test_tbl WHERE id = 1

此处的查询类型为 SELECT 语句,查询语句如下: select test_result from test_tbl where id = 1JDBC 连接配置元素必须提供变量名称字段指向的连接池。

BSF 采样器

该采样器允许您使用 BSF 脚本语言。

以下是 BSF 采样器的一个示例 JMeter包含脚本语言、传递给脚本的参数以及内联脚本或外部脚本文件的字段。

BSF 采样器面板,包含脚本语言、参数、外部脚本文件和内联脚本主体等字段。

弃用说明: BSF系列元件已被弃用,取而代之的是JSR223元件,并且不再出现在…… JMeter 组件参考在当前版本中,请使用 JSR223采样器 - Groovy它会编译脚本,并且在负载下性能更佳。上面的面板保留在此处,因为旧的测试计划中仍然包含它。

访问日志采样器

此采样器允许您读取访问日志并生成 HTTP 请求。日志条目可以包含图像、HTML、CSS 等内容。

访问日志采样器面板显示默认服务器和端口字段、TCLogParser 插件类以及日志文件位置

解析器字段默认值为 org.apache.jmeter.protocol.http.util.accesslog.TCLogParser以及“日志文件位置”字段指向 JMeter 在您想要重放的日志中。

SMTP 采样器

如果您想测试邮件服务器,可以使用SMTP采样器。该采样器用于使用SMTP协议发送电子邮件。

SMTP 示例面板,包含服务器设置、邮件地址、身份验证和安全选项以及邮件设置。

该面板将服务器设置、邮件地址、身份验证和消息设置分组显示,并在“端口”字段旁边打印默认端口:SMTP 25、SSL 465 和 StartTLS 587。

听众

监听器会显示测试执行结果。它们可以以不同的格式呈现结果,例如树状图、表格、图表或日志文件。

图示展示了监听器如何将结果以图表、树状图、表格和报表视图的形式呈现。

图表结果 监听器以图表形式显示服务器响应时间,并在图表下方打印样本计数、平均值、偏差、吞吐量和中位数。

图表结果监听器绘制响应时间数据,包括平均值、中位数、偏差和吞吐量系列

查看结果树 以基本 HTML 格式显示每个用户请求的结果,其中包含一个 Sampler 结果选项卡,用于报告加载时间、延迟、大小和响应代码。

查看结果树监听器,左侧是请求列表,采样器结果选项卡显示响应代码 200

在表格中查看结果 以表格形式显示测试结果摘要,每行代表一个样本。

在表格监听器中查看结果,表格包含样本编号、开始时间、线程名称、标签和样本时间等列。

日志文件以文本形式记录相同的摘要,这是在不使用 GUI 运行测试时保留的内容。

汇总日志摘要列表,包含采样器标签、样本计数、平均值和总计行

最佳实践: GUI 监听器会消耗内存并使结果产生偏差,因此请在非 GUI 模式下运行真正的负载测试,然后打开保存的结果文件。

配置元素

配置元素设置默认值和变量,供采样器稍后使用。

下图显示了 JMeter.

树状图 JMeter 配置元素:CSV 数据集配置、HTTP Cookie 管理器、登录配置元素、HTTP 请求默认值和 FTP 请求默认值

CSV 数据集配置

假设你想测试一个网站,让 100 个用户使用不同的凭据登录。你不需要录制 100 次脚本。你可以对脚本进行参数化,使其能够输入不同的登录凭据。这些登录信息(例如用户名和密码)可以存储在一个文本文件中。 JMeter 它包含一个允许您从该文本文件中读取不同参数的元素,即“CSV 数据集配置”。该元素用于从文件中读取行并将其拆分为变量。

JMeter 测试计划树,其中在登录控制器下选择了 CSV 数据集配置,以及 HTTP 请求默认值

这是一个CSV数据示例。它是一个文本文件,其中包含用于登录目标网站的用户名和密码。

文本文件 csv_data.txt 包含四行以逗号分隔的用户名、密码和 cookie 长度值。

HTTP Cookie 管理器

让我们通过一个例子来理解这一点。

您使用了浏览器 (Firefox(例如 Chrome 等)浏览 www.google.com.

您可以使用用户名和密码登录。

您的用户名和密码将以 cookie 的形式存储在您的计算机上。

下次您访问时 www.google.com您无需再次登录,因为您的浏览器将使用您的 cookie 作为用户数据进行登录。

HTTP Cookie 管理器与 Web 浏览器的功能相同。如果您发出 HTTP 请求且响应中包含 Cookie,Cookie 管理器会自动存储该 Cookie,并将其用于以后对该特定网站的所有请求。

HTTP 请求默认值

此元素允许您设置 HTTP 请求控制器使用的默认值。

例如,

您正在向服务器 google.com 发送 100 个 HTTP 请求。

您需要在所有 100 个请求中手动输入服务器名称 google.com。

或者,您可以添加一个 HTTP 请求默认值元素,并将“服务器名称或 IP”字段设置为 google.com,如下所示。

HTTP 请求默认值面板,服务器名称为 google.com,端口为 80,并设置连接和响应超时时间。

无需输入100次。教程中会详细解释这一部分。 JMeter 性能测试.

登录配置元素

登录配置元素允许您在采样器中添加或覆盖用户名和密码设置。

例如,你想模拟一个用户登录网站。 www.facebook.com 使用用户名和密码。您可以使用登录配置元素在用户请求中添加此用户名和密码设置。

登录配置元素面板,用户名输入为 guru99,密码字段已屏蔽。

登录配置元素与 CSV 数据集配置

登录配置元素 CSV 数据集配置
用于模拟一次用户登录 用于模拟多个用户登录
仅适用于登录参数(用户名和密码) 适用于大量参数

这两个要素加起来几乎涵盖了你遇到的所有证书申请场景。 性能测试工具 工作。

常见问题

它说 JMeter 所有线程启动完成所需的时间。假设有十个线程,每个线程有 100 秒的启动时间,并且每个线程之间间隔十秒启动。启动时间过短会导致服务器过载,并产生正常用户永远不会遇到的故障。

定时器会在请求之间插入暂停,使模拟负载更接近真实的浏览体验,而不是请求过载。断言会检查每个响应,如果状态码、文本或持续时间与指定不符,则将样本标记为失败。

它们对下级请求进行分组和分支。循环控制器会重复执行其子项,条件控制器会根据条件运行子项,而事务控制器则会将整个组作为一个定时步骤报告到结果中。

不。像“查看结果树”这样的监听器会缓存每个样本,从而扭曲它们报告的数据。请在非图形界面模式下运行测试,将结果写入文件,然后在运行结束后将该文件加载到监听器中。

配置元素和预处理器会首先应用,然后运行采样器,最后是后处理器、断言和监听器。作用域也很重要:放置在计划级别的元素会应用于其下的所有请求。

它有助于发现规律。将结果文件提供给助手,可以比逐行读取数据更快地显示最慢的标签、错误簇和响应时间趋势。在采取行动之前,务必先用原始样本验证结果。

是的。它起草了。 Groovy 对于前trac在 JSR223 元素内设置值、构建有效负载和设置变量。请检查每一条建议,因为它经常会调用已弃用的 BeanShell API 或变量。 JMeter 不暴露。

一个线程组和一个采样器。其他所有组件都是可选的。实际上,我们会添加一个监听器以便显示结果,并且一旦相同的值开始在多个请求中重复出现,就会添加默认值或数据文件。

总结一下这篇文章: