JMeter 组件详解-Samplers 采样器
JMeter 组件详解-Samplers 采样器
Metadata
title: JMeter 组件详解-Samplers 采样器
date: 2022-12-13 13:20
tags:
- 行动阶段/完成
- 主题场景/工具
- 笔记空间/KnowladgeSpace/ToolSpace
- 细化主题/JMeter
- 细化主题/组件
- 细化主题/采样器
categories:
- JMeter
keywords:
- JMeter
- 组件
- 采样器
description: 采样器执行JMeter的实际工作。每个采样器(流量控制动作除外)产生一个或多个采样结果。示例结果具有各种属性(成功/失败、运行时间、数据大小等),可以在各种侦听器中查看。
Samplers 采样器
采样器执行JMeter的实际工作。每个采样器(流量控制动作除外)产生一个或多个采样结果。示例结果具有各种属性(成功/失败、运行时间、数据大小等),可以在各种侦听器中查看。
FTP Request | FTP请求
这个控制器允许你向FTP服务器发送一个FTP”检索文件”或”上传文件”请求。如果你打算向同一个FTP服务器发送多个请求,考虑使用FTP请求默认配置元素,这样你就不必为每个FTP请求生成控制器输入相同的信息。当下载一个文件时,它可以存储在磁盘(本地文件)或响应数据中,或两者都有。
延迟时间设置为登录所需的时间。
界面
参数说明
Attribute | Description | Required |
---|---|---|
Name | 树中显示的这个采样器的描述性名称。 | No |
Server Name or IP | FTP服务器的域名或IP地址。 | Yes |
Port | 端口使用。如果是>0,则使用这个特定的端口,否则JMeter使用默认的FTP端口。 | No |
Remote File: | 要检索的文件或要上传的目标文件的名称。 | Yes |
Local File: | 要上传的文件或下载的目标文件(默认为远程文件名)。 | "Yes, if uploading (*)" |
Local File Contents: | 提供上传的内容,重写"本地文件"属性。 | "Yes, if uploading (*)" |
get(RETR) / put(STOR) | 是否检索或上传文件。 | Yes |
Use Binary mode? | 检查此选项以使用二进制模式(默认ASCII) | Yes |
Save File in Response? | 是否在响应数据中存储检索到的文件的内容。如果模式是ASCII,则内容将在视图结果树中可见。 | "Yes, if downloading" |
Username | FTP帐户的用户名。 | Usually |
Password | FTP帐户密码。注意:这将在测试计划中可见。 | Usually |
HTTP Request | HTTP请求
这个示例程序允许您向web服务器发送HTTP/HTTPS请求。它还允许您控制JMeter是否解析图像和其他嵌入资源的HTML文件,并发送HTTP请求来检索它们。可以检索以下类型的嵌入式资源:
- 图片
- 小应用程序
- 样式表(CSS)和从这些文件引用的资源
- 外部脚本
- 框架,iframes
- 背景图片(主体,表,TD, TR)
- 背景声音
默认的解析器是 org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
。这可以通过使用 htmlparser.className
属性来改变。-参见jmeter.properties 的细节。
如果你打算向同一个web服务器发送多个请求,考虑使用HTTP请求默认配置元素,这样你就不必为每个HTTP请求输入相同的信息。
或者,代替手动添加HTTP请求,您可能想使用JMeter的HTTP(S)测试脚本记录器来创建它们。如果您有很多HTTP请求或带有许多参数的请求,这可以节省您的时间。
界面
Screenshot of Control-Panel of HTTP Request
HTTP Request Advanced config fields
参数说明
Attribute | Description | Required |
---|---|---|
Name | 树中显示的这个采样器的描述性名称。 | No |
Server | web服务器的域名或IP地址,如 www.example.com 。不包含http:// 前缀。注意:如果"Host"头是在header Manager中定义的,那么它将被用作虚拟主机名。 |
No |
Port | web服务器正在监听的端口。默认值:80 | No |
Connect Timeout | 连接超时。等待连接打开的毫秒数。 | No |
Response Timeout | 响应超时。等待响应的毫秒数。注意,这适用于每次等待响应。如果服务器响应是在几个块中发送的,那么总的运行时间可能会比超时时间长。</br> 持续时间断言可用于检测需要太长时间才能完成的响应。 | No |
Server (proxy) | 执行请求的代理服务器的主机名或IP地址。不包含http://前缀。 | No |
Port (proxy) | 代理服务器正在监听的端口。 | No, unless proxy hostname is specified |
Username | 代理服务器的用户名(可选)。 | No |
Password | 代理服务器密码(可选)。(注意,此数据未加密存储在测试计划中) | No |
Implementation | Java, HttpClient4。如果没有指定(也没有由HTTP请求默认值定义),默认值取决于JMeter属性JMeter的值。httpsampler,如果失败,就使用HttpClient4实现。 | No |
Protocol | HTTP, HTTPS或文件。默认值:HTTP | No |
Method | GET, POST, HEAD, TRACE, OPTIONS, PUT, DELETE, PATCH (JAVA实现不支持)。使用HttpClient4,以下与WebDav相关的方法也被允许:COPY, LOCK, MKCOL, MOVE, PROPFIND, PROPPATCH, UNLOCK, REPORT, MKCALENDAR, SEARCH。 </br> 通过使用JMeter属性httpsampler.user_defined_methods,可以为HttpClient4预定义更多方法。 | Yes |
Content Encoding | 要使用的内容编码(用于POST、PUT、PATCH和FILE)。这是要使用的字符编码,与内容编码HTTP报头无关。 | No |
Redirect Automatically | 将底层http协议处理程序设置为自动遵循重定向,因此它们不会被JMeter看到,因此不会显示为示例。应该只用于GET和HEAD请求。HttpClient采样器将拒绝将其用于POST或PUT的尝试。 | No |
Follow Redirects | 这只有在"自动重定向"未启用的情况下才有效。如果设置了,JMeter采样器将检查响应是否是重定向,如果是,则跟踪它。初始重定向和进一步的响应将作为额外的样本显示。父样例的URL和数据字段将取自最终样例(未重定向),但父样例的字节计数和运行时间包括所有样例。延迟是从初始响应中提取的。注意HttpClient采样器可能会记录以下消息: </br> "Redirect requested but followRedirects is disabled" |
No |
Use KeepAlive | JMeter设置Connection: keep-alive头。这在默认HTTP实现中不能正常工作,因为连接重用不在用户控制之下。它与Apache HttpComponents HttpClient实现一起工作。 | No |
Use multipart/form-data for HTTP POST | 使用multipart/form-data或application/x-www-form-urlencoded post请求 | No |
Browser-compatible headers | 当使用multipart/form-data时,这会抑制Content-Type和Content-Transfer-Encoding头;只发送Content-Disposition头部。 | No |
Path | 资源的路径(例如/servlets/myServlet)。如果资源需要查询字符串参数,在下面的"发送请求参数"部分添加它们。 </br> 在这种情况下,服务器、端口和协议字段被忽略;参数对于GET和DELETE方法也会被忽略。另外请注意,该路径没有被编码——除了用%20替换空格之外——因此可能需要对不安全字符进行编码,以避免出现URISyntaxException等错误。 | No |
Send Parameters With the Request | 查询字符串将从您提供的参数列表中生成。每个参数都有一个名称和值,编码参数的选项,以及包含或排除等号的选项(一些应用程序在值为空字符串时不希望有等号)。查询字符串将以正确的方式生成,取决于你所做的"方法"的选择(即,如果你选择了GET或DELETE,查询字符串将被附加到URL,如果POST或PUT,那么它将被单独发送)。此外,如果您正在使用多部分表单发送文件,那么查询字符串将使用多部分表单规范创建。 | No |
File Path | 要发送的文件的名称。如果留空,JMeter不发送文件,如果填写,JMeter自动发送请求作为一个多部分表单请求。 | No |
Parameter name | "name"web请求参数的值。 | No |
MIME Type | MIME类型(例如,文本/普通)。如果是一个POST、PUT或PATCH请求,并且省略了"name"属性(下面)或者请求正文仅由参数值构造,那么该字段的值将被用作内容类型请求头的值。 | No |
从HTML文件中检索所有嵌入式资源 | 告诉JMeter解析HTML文件,并对文件中引用的所有图像、Java小程序、JavaScript文件、css等发送HTTP/HTTPS请求。详见下文。 | No |
Save response as MD5 hash? | 如果选择此选项,则响应不会存储在示例结果中。相反,计算并存储数据的32个字符的MD5哈希值。这是为了测试大量数据。 | No |
URLs must match | 如果存在,则必须是一个正则表达式,用于匹配找到的任何嵌入式url。因此,如果您只想从http://example.invalid/ 下载嵌入式资源,请使用表达式:http://example\.invalid/.* |
No |
URLs must not match | 如果存在,则必须是一个正则表达式,用于过滤掉找到的任何嵌入的url。所以,如果你不想从任何来源下载PNG或SVG文件,使用表达式:.*\.(?i: SVG | PNG) |
No |
Use concurrent pool | 使用并发连接池来获得嵌入式资源。 | No |
Size | 用于获取嵌入式资源的并发连接的池大小。 | No |
Source address type | 只适用于HTTPClient实现的HTTP请求 </br>要区分源地址值 | No |
Source address field | 只适用于HTTPClient实现的HTTP请求</br>此属性用于启用IP欺骗。它覆盖了这个示例的默认本地IP地址。JMeter主机必须有多个IP地址(即IP别名、网络接口、设备)。取值为主机名、IP地址或网口设备,如"eth0"、"lo"、"wlan0"。</br>如果属性httpclient。定义了localaddress,用于所有HttpClient请求。 | No |
JDBC Request | JDBC 请求
这个示例程序允许向数据库发送JDBC请求(一个SQL查询)。
在使用它之前,您需要设置一个[JDBC Connection Configuration] Configuration元素
如果提供了Variable Names列表,那么对于Select语句返回的每一行,将使用相应列的值设置变量(如果提供了变量名),并设置行数。
界面
Screenshot of Control-Panel of JDBC Request
参数说明
Attribute | Description | Required |
---|---|---|
Name | 树中显示的这个采样器的描述性名称。 | No |
Variable Name of Pool declared in JDBC Connection Configuration | 连接池绑定到的JMeter变量的名称。这必须与 [JDBC Connection Configuration] 中的 Variable Name 字段一致。 |
No |
Query Type | 根据语句类型设置 </br> - Select Statement</br> - Update Statement - use this for Inserts and Deletes as well</br> - Callable Statement</br>Prepared Select Statement</br> - Prepared Update Statement - use this for Inserts and Deletes as well</br> - Commit</br> - Rollback</br> - Autocommit(false)</br> - Autocommit(true)</br> - Edit - this should be a variable reference that evaluates to one of the above </br> </br> Commit、Rollback、Autocommit(false)和Autocommit(true)类型是特殊的,因为它们只会忽略给定的SQL语句并改变连接的状态。 | Yes |
SQL Query | SQL query. </br></br> Do not enter a trailing semi-colon. | Yes |
Parameter values | 逗号分隔的参数值列表。使用]NULL[ 来表示NULL 参数。(如果需要,可以通过定义属性"jdbcsampler.nullmarker "来更改空字符串。)例如,如果任何值包含逗号或双引号,列表必须用双引号括起来,并且任何嵌入的双引号必须是双引号 |
Yes, if a prepared or callable statement has parameters |
Parameter types | 逗号分隔的SQL参数类型列表(例如INTEGER, DATE, VARCHAR, DOUBLE)或Constants的整数值。当您使用驱动程序建议的自定义数据库类型(例如OracleTypes。CURSOR可以用其整数值-10表示)。 它们被定义为java.sql类中的字段。 | Yes, if a prepared or callable statement has parameters |
Variable Names | 逗号分隔的变量名列表,用于保存Select语句、Prepared Select语句或CallableStatement返回的值。注意,当与CallableStatement一起使用时,变量列表必须与调用返回的OUT参数的顺序相同。如果变量名比OUT参数少,那么在线程上下文变量中存储的结果与提供的变量名相同。如果存在比OUT参数更多的变量名,则会忽略额外的变量 | No |
Result Variable Name | 如果指定,这将创建一个包含行映射列表的Object变量。每个映射都包含列名作为键,列数据作为值。 | No |
Query timeout(s) | 设置以秒为单位的查询超时时间,空值表示0,表示无穷大。-1意味着不设置任何查询超时,这可能需要用例或当某些驱动程序不支持超时。默认值为0。 | No |
Limit ResultSet | 限制遍历ResultSet的行数。空值意味着-1,例如没有限制,这也是默认值。这可以帮助减少通过JDBC驱动程序从数据库中获取的数据量,但会分别影响Handle ResultSet的所有可能选项——例如:incomplete ResultSet和记录计数≤限制。 | No |
Handle ResultSet | 定义如何处理可调用语句返回的ResultSet </br> </br> - Store As String (默认)——变量名列表中的所有变量都存储为字符串,当出现在列表中时,不会遍历ResultSet。clob将被转换为string。blob将被转换为string,就像它们是UTF-8编码的字节数组一样。在jdbcsampler之后,clob和blob都将被切断。max_retain_result_size字节。 </br> - Store As Object——变量名称列表中的ResultSet类型的变量将存储为对象,可以在后续的测试/脚本中访问和迭代,不会遍历ResultSet。将像选择Store as String一样处理clob。blob将存储为字节数组。在jdbcsampler之后,clob和blob都将被切断。max_retain_result_size字节。 </br> - Count Records——ResultSet类型的变量将通过显示作为结果的记录计数进行迭代。变量将被存储为string。对于blob,将存储对象的大小。 | No |
Java Request | Java 请求
这个采样器允许您控制一个实现org.apache.jmeter.protocol.java.sampler.JavaSamplerClient
接口的java类。通过编写您自己的这个接口的实现,您可以使用JMeter来利用多线程、输入参数控制和数据收集。
下拉菜单提供了JMeter在其类路径中找到的所有此类实现的列表。然后可以在下表中指定参数—由您的实现定义。提供了两个简单的示例(JavaTest和SleepTest)。
JavaTest示例采样器对于检查测试计划很有用,因为它允许在几乎所有字段中设置值。然后,断言等可以使用它们。字段允许使用变量,因此可以很容易地看到这些变量的值。
如果方法teardownTest没有被AbstractJavaSamplerClient的子类覆盖,它的teardownTest方法将不会被调用。这减少了JMeter的内存需求。这不会对现有的Test计划产生任何影响。
添加/删除按钮目前没有任何作用。
界面
参数说明
Attribute | Description | Required |
---|---|---|
Name | 树中显示的这个采样器的描述性名称。 | No |
Classname | 要采样的JavaSamplerClient接口的具体实现。 | Yes |
Send Parameters with Request | 将传递给采样类的参数列表。所有参数都作为字符串发送。具体设置见下文。 | No |
BeanShell Sampler | BeanShell 采样器
这个采样器允许您使用BeanShell脚本语言编写一个采样器。
test元素支持ThreadListener和TestListener接口方法。它们必须在初始化文件中定义。请参阅文件BeanShellListeners。示例定义为BSHRC。BeanShell采样器还支持可中断接口。可以在脚本或init文件中定义interrupt()方法。
界面
参数说明
Attribute | Description | Required |
---|---|---|
Name | 树中显示的这个采样器的描述性名称。名称存储在脚本变量Label中 | No |
Reset bsh.Interpreter before each call | 如果选择此选项,则将为每个示例重新创建解释器。对于一些长期运行的脚本来说,这可能是必要的。有关更多信息,请参阅最佳实践—BeanShell脚本。 | Yes |
Parameters | 传递给BeanShell脚本的参数。这是为了与脚本文件一起使用;对于在GUI中定义的脚本,您可以使用脚本本身中需要的任何变量和函数引用。 | No |
Script file | 包含要运行的BeanShell脚本的文件。文件名存储在脚本变量FileName中 | No |
Script | 要运行的BeanShell脚本。返回值(如果不是null)存储为采样结果。 | Yes (unless script file is provided) |
TCP Sampler | TCP采样器
TCP采样器打开一个TCP/IP连接到指定的服务器。然后它发送文本,并等待响应。
如果选择 “Re-use connection”,在相同线程中的sampler之间共享连接,前提是使用完全相同的主机名字符串和端口。不同的主机/端口组合将使用不同的连接,就像不同的线程一样。如果”Re-use connection”和 “Close connection” 都被选中,套接字将在运行采样器后关闭。在下一个采样器上,将创建另一个 socket。您可能希望在每个线程循环结束时关闭一个 socket。
以下属性可用于控制其操作:
tcp.status.prefix
文本在状态号之前tcp.status.suffix
文本在状态号之后tcp.status.properties
属性文件的名称,用于将状态码转换为消息tcp.handler
TCP处理程序类的名称(默认TCPClientImpl) -仅在GUI上没有指定时使用
界面
参数说明
Attribute | Description | Required |
---|---|---|
Name | 树中显示的这个元素的描述性名称。 | No |
TCPClient classname | TCPClient类的名称。默认为 tcp.handler 。处理程序,TCPClientImpl 失败。 |
Yes |
ServerName or IP | TCP服务器的名称或IP | Yes |
Port Number | 使用的端口 | Yes |
Re-use connection | 如果选中,连接将保持打开状态。否则在读取数据时关闭。 | Yes |
Close connection | 如果选择,则在运行采样器后将关闭连接。 | No |
SO_LINGER | 在创建 socket 时使用指定的延迟时间(秒)启用/禁用SO_LINGER。如果你设置"SO_LINGER"值为0,你可能会阻止大量带有TIME_WAIT状态的套接字闲置。 |
No |
End of line(EOL) byte value | 行尾的字节值,将其设置为范围-128 到+127 以外的值,以跳过eol 检查。你可以在 jmeter.properties 中设置这个以及eolByte属性。如果你在TCP采样配置和jmeter中设置这个。属性文件的同时,将使用TCP采样器配置中的设置值。 |
No |
Connect Timeout | 连接超时(毫秒,0禁用)。 | No |
Response Timeout | 响应超时(毫秒,0禁用)。 | Yes |
Set NoDelay | 看java.net.Socket.setTcpNoDelay() 。如果选中,将禁用Nagle的算法,否则将使用Nagle的算法。 |
Yes |
Text to Send | 要发送的文本 | Yes |
Login User | 用户名-默认实现中未使用 | No |
Password | 密码-默认实现中不使用(注意,这个未加密存储在测试计划中) | No |
Mail Reader Sampler | 邮件阅读采样器
邮件阅读器采样器可以使用POP3(S)或IMAP(S)协议读取(并可选地删除)邮件消息。
界面