每周读书与学习->初识JMeter 元件(三)
每周读书与学习是由清华大学出书社出书的《JMeter焦点技能、性能测试与性能分析》一书的作者推出,分享作者多年的IT从业履历,渴望对许多盘算机科学技能IT类专业毕业生以及IT从业者有所资助。1、取样器
在Jmeter中,取样器通常用来模仿并发用户发出现实哀求的操纵,向待性能压测的对象发送哀求以及罗致相应的相应数据。取样器是Jmeter 性能压测的焦点组件,如下图所示,通常环境下,如果须要完成一个性能测试场景,那么肯定是离不开取样器的。
从图中可以看到取样器告急包罗:
[*]测试活动:是一种用于条件控制的取样器,该取样器不是用于发出哀求,而是用于停息大概克制取样活动,该取样器包罗如下功能:
[*]Logical Action on Thread-Pause:停息线程发出取样哀求,支持设置停息的时长,单元为毫秒。
[*]Logical Action on Thread-Start Next Thread Loop:直接启动下一个线程循环的操纵。
[*]Logical Action on Thread-Go to next iteration of Current Loop:直接转到当前循环的下一次迭代操纵。
[*]Logical Action on Thread-Break Current Loop:直接停息当前循环的操纵。
[*]Logical Action on Thread/Test-Stop:等候线程完成相应的操纵后,克制当火线程大概全部线程。
[*]Logical Action on Thread/Test-Stop Now:直接克制当火线程大概全部线程。
https://img2024.cnblogs.com/blog/1200756/202509/1200756-20250929111336488-305615441.png
[*]HTTP哀求:HTTP哀求取样器是指可以向指定的Web服务发送HTTP大概HTTPS哀求,如果须要对一个HTTP大概HTTPS协议的服务做性能压测,就须要用到该取样器,由于Web服务是一种最常见的服务,以是HTTP哀求取样器通常是利用频率最高的取样器。HTTP取样器界面中告急包罗如下参数:
[*]协议:默以为HTTP,支持填入HTTP、HTTPS 大概 FILE,FILE协议告急用于访问本地盘算机中的文件。
[*]服务器名称或IP:用于设置服务端的IP大概域名地点。
[*]端标语:用于设置服务端的端标语,如果不设置的话,当协议为HTTP时,端标语默以为80,当协议为HTTPS的时间,端标语默以为443。
[*]HTTP大概FILE哀求的范例:可以通过下拉框来选择HTTP哀求的范例,HTTP协议支持的哀求范例包罗GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE、PATCH。FILE协议支持的哀求范例包罗PROPFIND、PROPPATCH、MKCOL、COPY、MOVE、LOCK、UNLOCK、REPORT、MKCALENDAR、SEARCH,此中最常用的HTTP哀求范例就是GET和POST,我们平常在欣赏器中的大部分Web操纵根本也都是这两种范例的哀求居多。
[*]路径:通常指的是HTTP哀求地点路径,但是该地点路径不包罗协议名和服务器地点,好比服务端的服务地点http://www.baidu.com/context/url ,那此时路径就应该是/context/url。
[*]内容编码:指的是对发送HTTP哀求的内容设置编码字符集,通常用于POST、PUT、PATCH哀求,而且此处的内容编码不会与HTTP 哀求头中的Content-Encoding有任何的关联关系。
[*]自动重定向:重定向是指HTTP哀求会自动重定向到下一个HTTP哀求,好比当客户端向服务端发出哀求后,服务端可以发送和返回一个特殊的HTTP 相应码来告诉客户端须要重定向到一个新的服务端地点来获取终极的相应,如下图所示。
https://img2024.cnblogs.com/blog/1200756/202509/1200756-20250929112415387-2088472690.png
当重定向为自动重定向时,如果Jmeter收到了重定向后将会自动举行重定向,但是自动重定向只针对POST和GET哀求,在Jmeter的日记中是不会特殊纪录重定向过程的。
[*]
[*]跟随重定向:如果须要利用跟随重定向,那就不能勾选自动重定向,当同时了勾选了自动重定向和跟随重定向时,只有自动重定向会收效。Jmeter会纪录跟随重定向过程中的全部哀求相应,此时可以通过Jmeter监听器中的检察结果树这个元件来检察跟随重定向的哀求与相应内容,通常来说,当HTTP 相应的CODE码为302大概301时,须要利用跟随重定向来举行处理处罚。在HTTP 相应的CODE中,当CODE为以3开头时,通常表现的是一个重定向相应。
[*]利用KeepAlive:是指Jmeter在发出HTTP的取样器哀求时,会在HTTP的哀求头中添加Connection:keep-alive,表现保持当前的毗连为活动状态,让当前毗连可以复用,在高并发的压测场景中启用 Keep-Alive 模式肯定通常会更高效,性能会更,由于可以克制创建/开释毗连的带来的开销。
[*]对POST利用multipart/form-data:表现利用multipart/form-data的方式来提交HTTP POST表单哀求(即将 HTTP 哀求头的Content-Type设置为multipart/form-data),multipart通常表现答应客户端在一次HTTP POST 哀求中,通过多个Part的方式来向服务端发送数据,如下图所示的HTTP的POST哀求中,包罗了多个DATA,而每个DATA都可以有本身单独的Content-Type,客户端利用multipart的方式将这些DATA 一次都提交给服务端。
[*]与欣赏器兼容的头:通常会与multipart/form-data搭配利用,当利用multipart/form-data来提交POST表单哀求时,会屏蔽HTTP哀求头中的原有Content-Type和Content-Transfer-Encoding设置,让Content-Type和Content-Transfer-Encoding不起作用,发送HTTP哀求时会仅仅在哀求头到场Content-Disposition这个哀求头。
https://img2024.cnblogs.com/blog/1200756/202509/1200756-20250929112415574-1922956322.png
[*]
[*]参数:用于设置HTTP 哀求的参数,支持以Key(参数名) Value(参数值)的情势来设置HTTP哀求的参数,而且每个参数还可以设置其编码范例和内容范例,常见的内容范比方下所示。
[*]文本范例:
[*]text/plain:表现纯文本文件。
[*]text/xml:表现XML格式的数据。
[*]text/html:表现HTML网页文件格式的数据。
[*]text/css:表现CSS样式表文件。
[*]text/javascript:表现JavaScript脚本文件。
[*]text/csv:表现CSV格式数据。
[*]应用步伐范例:
[*]application/xml:表现XML数据文件。
[*]application/json:表现JSON数据格式。
[*]application/pdf:表现PDF文档文件。
[*]application/zip:表现ZIP压缩文件。
[*]application/x-gzip:表现GZip压缩文件。
[*]application/x-tar:表现TAR压缩文件。
[*]application/octet-stream:表现二进制数据流,通常用于未知文件范例。
[*]multipart范例:
[*]multipart/form-data:通常用于HTML表单的方式上传,可以包罗文本和二进制数据。
[*]multipart/mixed:表现包罗多个独立部分的混淆体,每个部分可以有差别的范例。
[*]multipart/alternative:表现包罗同一内容的多个版本,通常是文本和HTML格式的邮件正文。
[*]multipart/related:表现包罗相互依靠的部分,好比同时包罗HTML页面和内嵌的图片或样式表等。
[*]multipart/byteranges:表现当相应中包罗多个字节范围时利用,通常用于部分内容哀求。
[*]multipart/report:表现用于邮件陈诉,通常包罗消息和干系的错误陈诉等。
[*]multipart/x-mixed-replace:通常用于表现连续更新的数据流,好比及时图片流等。
[*]图像范例:
[*]image/png:表现PNG图像文件。
[*]image/jpeg:表现JPEG图像文件。
[*]image/gif:表现GIF动绘图像文件。
[*]image/bmp:表现BMP图像文件。
[*]image/svg+xml:表现SVG矢量图像文件。
[*]音频范例:
[*]audio/wav:表现WAV音频文件。
[*]audio/mpeg:表现MP3音频文件。
[*]audio/ogg:表现OGG音频文件。
[*]audio/webm:表现WebM音频文件。
[*]视频范例:
[*]video/avi:表现AVI视频文件。
[*]video/mp4:表现MP4视频文件。
[*]video/quicktime:表现QuickTime视频文件。
[*]video/webm:表现WebM视频文件。
[*]消息体数据:用于设置POST 哀求的消息体(通常又叫HTTP Body),这个通常仅用于POST 哀求,在HTTP协议规范中,好比像GET等其他哀求是没用消息体这一说的。
[*]文件上传:用于设置文件上传的参数,当利用Jmeter做性能压测时,如果是对一个文件上传接口做性能压测,那么就须要用到文件上传这个选项了,设置文件上传时,文件名称通常填入文件的绝对路径,好比须要上传D盘根目次下的1.jpg文件,那么就应该填入d:\1.jpg,参数名称填入HTTP哀求接口中要求的参数名即可。
[*]客户端实现:客户端实现位于HTTP 取样器哀求的高级选项中,用于选择客户端的实现方式,在Jmeter中客户端的实现包罗Java和HttpClient4两个选项,HttpClient4指的是利用外部第三方封装好的JAR包来直接发送HTTP取样器哀求,而Java表现Jmeter利用Java原生底层JDK的方式来发送HTTP取样器哀求,当没用指定该选项时,会从Jmeter 认识设置文件中读取JMeter.httpsampler的值来决定利用哪种客户端实现,如果属性设置文件中也没有举行设置,那么会直接利用HttpClient4。
[*]超时毗连:用于设置打开毗连的超时的时长,单元为毫秒。
[*]相应超时:用于设置相应超时的时长,单元为毫秒。
[*]从HTML文件获取全部内在的资源:用于设置让Jmeter从HTML文件中分析此中被引用到的图片、Java小步伐、JavaScrip文件等其他资源文件,可以同时通过正则表达式的方式来设置网址必须匹配和URLS must not match 来自界说确定须要分析哪些资源文件。
[*]源地点:用于设置Jmeter发送哀求时的源地点,该源地点通常可以为某个IP大概电脑的主机名,也可以为某个网卡的装备等。
[*]署理服务器:用于设置网络署理服务器的IP、端标语、用户名和暗码等信息。通常当发送HTTP取样器哀求须要用到网络署理时,才须要设置署理服务器的干系信息。
[*]调试取样器:用于天生一个包罗全部JMeter变量和属性值的取样器哀求,可以通过Jmeter监听器中的检察结果树这个元件来检察到具体获取到的变量和属性值,通常在调试Jmeter性能测试脚本时才会用到。
[*]JSR223 Sampler:指的是利用JSR223(全称为Java Specification Request 223,是一个Java语言平台发布的规范)脚本语言来天生取样器哀求,支持BeanShell、Bash、EcmaScript、Groovy、Java、JavaScript、Jexl、Jexl2等脚本语言,同时也支持将外部参数转达给脚本作为参数来利用。
[*]AJP/1.3 取样器:该取样器和HTTP哀求取样器很雷同,该取样器利用Tomcat mod_jk协议,而且当须要文件上传时,不支持多文件上传,仅仅利用第一个文件,该取样器的其他设置和HTTP哀求取样器险些同等,可以参考HTTP哀求取样器举行设置。
[*]Access Log Sampler:用于通过读取访问日记的方式来天生HTTP哀求,支持的访问日记应用包罗Tomcat(Java语言编写的应用服务容器)、Resin(CAUCHO公司下的应用服务容器,同样接纳Java语言编写)、Weblogic(Oracle公司下的一个应用服务容器)等,好比某个Tomcat的访问日记如下:
127.0.0.1 - - "GET /index.jsp?%2Findex.jsp= HTTP/1.1" 200 8343
通过Access Log Sampler即可读取这条日记中的哀求范例、哀求地点等信息来天生一个新的 HTTP哀求。
[*]BeanShell 取样器:通过编写BeanShell脚本语言的方式来天生取样器哀求,支持将外部参数转达给脚本作为参数来利用。
[*]Bolt Request:该取样器用于通过Bolt网络应用协议运行Cypher(一种专门为查询图而优化筹划的尺度查询语言)查询,通常与设置元件中的Bolt Connection Configuration元件搭配利用,好比对Neo4j数据库(一个高性能的NOSQL图形数据库)举行性能压测时,就可以接纳该取样器。
[*]FTP哀求:FTP哀求取样器用于向FTP协议的服务器发起哀求,支持向FTP服务器发送检索文件大概上传文件、下载文件等哀求,该哀求取样器在界面中包罗的参数如下:
[*]服务器名称或IP:设置FTP服务器的域名大概IP地点。
[*]端标语:设置FTP服务器的端标语。
[*]远程文件:要检索的文件或要上传的目的文件的名称。
[*]本地文件:要上传的文件或下载的目的(通常默以为远程文件中填写的文件名称)。
[*]本地文件内容:设置须要上传的文件内容,该设置会覆盖本地文件的设置,即当设置了本地文件内容后,本地文件设置就不收效。
[*]选择哀求范例:选择是检索获取文件照旧上传文件。
[*]利用二进制模式:设置是否利用二进制模式来传输文件,默以为ASCII模式。
[*]生存文件相应:是否将检索到的文件内容存储到相应数据中,如果传输模式为ASCII,则内容将在Jmeter监听器中的检察结果树这个元件中可检察到。
[*]登录设置:指设置FTP服务器的用户名和暗码,如果FTP服务器支持匿名访问,可以不设置登录设置。
[*]GraphQL HTTP Request:GraphQL HTTP Request取样器是HTTP哀求取样器的一种特殊情势,用于通过HTTP哀求的方式对GraphQL API举行查询大概编辑等操纵,GraphQL 是一种API服务的查询的语言,与传统的 RESTful API差别,GraphQL API 对数据提供了一套简单而且轻易明白的完备形貌,使得客户端哀求可以大概更加准确的获取其须要的数据。GraphQL HTTP Request取样器的界面参数和HTTP哀求取样器非常雷同,但是GraphQL HTTP Request取样器中新增了如下参数:
[*]Query:用于设置GraphQL查询语句,是一个必填参数。
[*]Variables:用于以JSON字符串的方式来设置GraphQL查询变量,非必填参数。
如下图所示是一个Query语句和Variables之间的对应关系,在查询语句中须要用到id变量,然后在Variables中通过JSON字符串的方式来设置了id的值。
https://img2024.cnblogs.com/blog/1200756/202509/1200756-20250929112415952-976568807.png
[*]JDBC Request:JDBC Request取样器是通过JDBC传输协议的方式向数据库发起查询、修改、删除等哀求,只要是支持JDBC协议的数据库都可以通过JDBC Request取样器来举行性能压测。JDBC Request取样器通常与设置元件中的JDBC Connection Configuration元件一起搭配利用,在JDBC Connection Configuration元件中设置待举行性能压测的JDBC数据服务器的干系毗连等设置信息,然后通过JDBC Request取样器向数据库发起哀求,JDBC Request取样器包罗的参数如下:
[*]Variable Name of Pool declared in JDBC Connection Configuration:用于设置在JDBC Connection Configuration元件中设置的名称,如许JDBC Request取样器就知道应该从哪个Connection Configuration元件中读取设置信息了。
[*]Query Type:选择查询的范例,支持Select(查询)、Update(更新)、Callable(调用)、Commit(提交)、Rollback(回滚)等范例。
[*]SQL Query:用于设置须要实行的SQL语句。
[*]Parameter values:设置SQL语句中用到的参数。
[*]Parameter types:设置SQL语句中用到的参数范例。
如下图所示是一个在SQL查询语句中怎样设置SQL语句中用到的参数和参数范例的示例,在SQL语句中用两个问号来界说了须要传入的两个变量,而在Parameter values中通过逗号分割的方式按照次序传入了两个现实的参数值,而且在Parameter types中通过逗号分割的方式按照次序的方式界说了这两个现实的参数值的数据范例,数据范例通常是指的Java开发语言中的根本数据范例,这些根本数据范例被界说在Java JDK的java.sql.Types这个class类中,可以通过访问http://docs.oracle.com/javase/8/docs/api/java/sql/Types.html 获取常见的根本数据范例具体分析。
https://img2024.cnblogs.com/blog/1200756/202509/1200756-20250929112415952-1304160104.png
[*]
[*]Variable Names:用于设置变量名称。
[*]Result Variable Name:用于将查询的结果设置生存为一个变量,以供性能压测的其他步调中可以举行引用。
[*]Query timeout(s):用于设置查询的超时时长,单元为秒。
[*]Limit ResultSet:用于设置对查询的结果集的返回的纪录数量的限定,如果不设置代表不举行限定。
[*]Handle ResultSet:用于设置对查询的结果集举行怎样处理处罚,默以为Store As String,表现存储为字符串,同时支持设置为Store As Object(以对象的方式存储,Jmeter是通过Java语言开发,而Java语言是一种面向对象的开发语言,这里的Object指的就是Java语言中的对象)、Count Records(对结果举行统计)等。
[*]JMS点到点:JMS点到点取样器是通过点对点毗连的方式来发送和罗致JMS消息,JMS是Java Message Service的简写,即Java消息服务应用步伐接口,通常用于两个Java应用步伐之间通过发送JMS消息的方式来举行异步通讯,如下图所示,通常是一个应用步伐生产消息,而另一个应用步伐斲丧消息,通过消息队列的方式来完成异步通讯。
https://img2024.cnblogs.com/blog/1200756/202509/1200756-20250929112415970-857276614.png
JMS点到点取样器界面包罗的参数如下,在利用JMS点到点取样器之前,发起先找一些干系资料学习下JMS消息,如许会更轻易明白如下参数的具体寄义。
[*]
[*]QueueConnection Factory:用于设置毗连到消息队列工厂的JNDI(Java Naming and Directory Interface的简写,即Java定名和目次接口,是Java底层的一种尺度的定名体系接口)名称,该参数为必填。
[*]JNDI Name Request queue:用于设置消息发送到的队列的JNDI名称,该参数为必填。
[*]JNDI Name Reply queue:用于设置罗致队列的JNDI名称,该参数为非必填参数,如果设置了该参数表现Jmeter将监督该参数设置的对应的队列以获取对发送的哀求的相应结果。
[*]Number of samples to aggregate:用于设置要聚合的消息样本数以方便读取,该参数为必填。
[*]JMS Selector:用于设置按照JMS规范界说的消息过滤条件,通常用于设置仅提取符合过滤条件的消息,该参数为非必填参数,该参数的语法格式服从SQL 92规范(数据库的一个ANSI/ISO尺度)。
[*]Communication style:用于通过下拉框的方式选择通讯的样式,支持Request Only(仅仅发送消息,不会监听该消息的复兴)、Request Response(发送消息而且会监听该消息的复兴)、Read(仅从队列中读取消息)、Browse(仅欣赏消息,而且不会删除消息,好比获取消息的总数量)、Clear(扫除队列中的全部消息)。
[*]Use alternate fields for message correlation:该复选框用于设置相应消息与原始哀求消息的字段种别,如果选中Use Request Message Id代表利用哀求JMSMessageID,否则将利用哀求JSCorrelationID,如果选中Use Response Message Id将利用相应JMSMessageID,否则将利用相应JMX CorrelationID。
[*]Timeout:用于设置复兴的消息的超时时长,单元为毫秒,如果在指定时间内未收到复兴消息,则取样器实行会失败,如果在超时后收到的特定复兴消息将直接被抛弃。默认值为2000毫秒,如果设置为0表现永世不会超时。
[*]Expiration:用于设置消息逾期前的逾期时间,单元为毫秒,如果不指定逾期时间,则默认值为0,代表永不外期。
[*]Priority:用于设置消息的优先级,从0(最低)到9(最高)共有十个优先级,如果不指定优先级,则默认级别为4。
[*]Use non-persistent delivery mode:表现是否启用DeliveryMode.NON_PERSISTENT模式(非长期模式)。
[*]Content:用于设置消息的内容。
[*]JMS Properties:用于设置JMS属性,JMS属性是指特定于底层消息转达的属性,支持设置名称和值以及范例(默以为字符串范例)。
[*]Initial Context Factory:用于初始化消息的上下文工厂,该参数非必填。
[*]JNDI properties:用于设置JNDI属性。
[*]Provider URL:用于设置提供JMS消息的URL地点。
[*]JMS发布:JMS发布取样器用于将JMS消息发送发布到指定的目的主题大概队列中,雷同于JMS消息的生产者,当须要对一个JMS消息队枚举行发送消息的性能压测时,就须要用到该取样器,该取样器界面包罗的参数如下:
[*]Use JNDI properties file:用于设置是否利用JNDI属性设置文件,该设置文件必须放在classpath路径(Java语言的类库路径)下,如果不勾选该选项,JMeter将利用“JNDI Initial Context Factory”和“Provider URL” 参数来创建JNDI毗连。
[*]JNDI Initial Context Factory:用于设置JNDI上下文工厂的名称。
[*]Provider URL:用于设置JMS Provider的URL地点。
[*]Destination:用于设置JMS 消息的目的地(通常指主题或队列名称)。
[*]Setup:用于设置Destination的范例,可以选择At startup(表现目的名称是静态的,在运行中始终稳固)和Each sample(表现在每个性能测试样本中,目的名称都是动态的)。
[*]Authentication:用于设置JMS Provider身份验证。
[*]User:共同Authentication参数一起利用,用于设置身份验证的用户名。
[*]Password:共同Authentication参数一起利用,用于设置身份验证的暗码。
[*]Expiration:用于设置消息逾期前的逾期时间(单元为毫秒),如果不指定逾期时间,则默认值为0(永不外期)。
[*]Priority:用于设置消息的优先级。从0(最低)到9(最高)统共有十个优先级。如果不指定优先级,则默认级别为4。
[*]Reconnect on error codes (regex):用于设置欺压重新毗连的JMSException错误代码的正则表达式。如果为空,则不会举行重新毗连。
[*]Number of samples to aggregate:用于设置要聚合的消息样本数以方便读取,该参数为必填。
[*]Message source:用于设置消息源,该参数包罗From File(表现从引用的文件中获取,如果选择此选项,表现该文件将被全部样本读取和重用)、Random File from folder specified below(表现从下面指定的文件夹中选择一个随机文件,而且文件夹必须包罗扩展名为.dat的Bytes Messages文件,或扩展名为.txt或.obj的Object或Text消息文件)、Text area(表现从文本大概对象中获取消息)三个选项。
[*]Message type:用于设置消息的范例,包罗Text,、Map、 Object message or、Bytes Message四种范例。
[*]Content encoding:用于设置读取消息内容的字符集选项,包罗RAW(原始消息加载,不支持变量)、DEFAULT(体系默认编码,支持对变量的处理处罚)、Standard charsets(按照指定的编码来读取文件和处理处罚变量)三种范例。
[*]Use non-persistent delivery mode:表现是否启用DeliveryMode.NON_PERSISTENT模式(非长期模式)。
[*]JMS Properties:用于设置JMS属性,JMS属性是指特定于底层消息转达的属性,支持设置名称和值以及范例(默以为字符串范例)。
[*]JMS订阅:JMS订阅取样器用于从指定的目的消息(主题或队列)中订阅JMS消息,雷同于JMS消息的斲丧者,该取样器界面包罗的参数如下:
[*]Use JNDI properties file:用于设置是否利用JNDI属性设置文件,该设置文件必须放在classpath路径(Java语言的类库路径)下,如果不勾选该选项,JMeter将利用“JNDI Initial Context Factory”和“Provider URL” 参数来创建JNDI毗连。
[*]JNDI Initial Context Factory:用于设置JNDI上下文工厂的名称。
[*]Provider URL:用于设置JMS Provider的URL地点。
[*]Destination:用于设置JMS 消息的目的地(通常指主题或队列名称)。
[*]Durable Subscription ID:用于设置长期订阅的ID,初次利用时,如果JMS Provider还不存在相应的队列,它将会自动天生相应的队列。
[*]Client ID:用于设置长期订阅时利用的客户端ID,当存在多个并发用户线程时,肯定要设置一个雷同${__threadNum}如许的变量来举行区分。
[*]JMS Selector:用于设置按照JMS规范界说的消息过滤条件,通常用于设置仅提取符合过滤条件的消息,该参数为非必填参数,该参数的语法格式服从SQL 92规范(数据库的一个ANSI/ISO尺度)。
[*]Setup:用于设置Destination的范例,可以选择At startup(表现目的名称是静态的,在运行中始终稳固)和Each sample(表现在每个性能测试样本中,目的名称都是动态的)。
[*]Authentication:用于设置JMS Provider身份验证。
[*]User:共同Authentication参数一起利用,用于设置身份验证的用户名。
[*]Password:共同Authentication参数一起利用,用于设置身份验证的暗码。
[*]Number of samples to aggregate:用于设置要聚合的消息样本数以方便读取,该参数为必填。
[*]Save response:用于设置取样器是否存储相应结果,如果设置为否,则只返反相应长度。
[*]Timeout:用于设置超时的时长(单元为毫秒),如果设置为0表现永不超时。
[*]Client:用于选择客户端的实现范例,支持利用MessageConsumer.receive(表现对每个哀求的消息都调用罗致方法举行罗致)和利用MessageListener.onMessage()两种实现范例。
[*]Stop between samples:如果勾选了该选项表现Jmeter将在每个性能测试样本竣事时调用Connection.stop来克制毗连,然后在每个新样本开始时调用Connection.start来启动毗连,如果未勾选,表现Jmeter将在线程开始时调用Connection.start,直到线程竣事才调用Connection.stop。
[*]Separator:用于设置多个消息之间的分隔符,好比支持设置\n、\r、\t来对消息举行分割。
[*]Reconnect on error codes (regex):用于设置须要欺压重新毗连时的JMSException错误代码的正则表达式,如果设置为空,则不会举行重连。
[*]Pause between errors (ms):用于设置发生错误时订阅服务器将停息的时长,单元为毫秒。
[*]JUnit哀求:JUnit哀求取样器用于调用Java的单元测试代码举行取样器操纵,该取样器和下面即将要解说的Java哀求取样器很雷同,Jmeter在启动时,会扫描Jmeter安装目次的lib\junit目次下实现了Java Junit尺度的Java测试类,将符合Junit尺度的测试类都加载到Java 捏造机(即Java的运行环境),如许JUnit哀求取样器就可以实行这些Junit测试类,如下图所示,在学习JUnit哀求之前,发起读者们先找一些Java语言的根本册本先学习一下Java语言,在对Java语言有肯定相识之后,会更轻易明白JUnit哀求取样器。
https://img2024.cnblogs.com/blog/1200756/202509/1200756-20250929112416216-1309195291.png
JUnit哀求取样器界面包罗的告急参数如下:
[*]
[*]Search for JUnit4 annotations:用于设置是否只选择搜索JUnit4尺度的单元测试类来举行测试,Junit尺度随着不停的发展,可以分为许多的版本,主流的版本包罗Junit3、JUnit4,现在Junit已经有最新的Junit5版本了。
[*]Package filter:支持以逗号分割的方式来通过设置Java Package的方式来过滤须要测试单元测试类,在Java语言中,每个Java类都是可以在差别的Package目次下,如许可以更好的管理Java类,克制大量的Java类都是在同一个目次下,不好区分和管理。
[*]Class name:用于设置从加载出来的单元测试类中选择本身想要的单元测试类来举行JUnit哀求取样测试。
[*]Constructor string:用于设置转达给字符串构造函数的字符串,如果设置了字符串,取样器将利用字符串构造函数而不是默认的空构造函数,构造函数是Java开发语言中的一个根本概念,如果对构造函数不相识,可以先从干系册本中学习一下Java的根本开发,此处不再对构造函数的概念做赘述。
[*]Test method:用于选择单元测试类中的测试方法,通常一个单元测试类可以包罗多个差别的测试方法,该参数通常会与Class name参数联动选择利用。
[*]Success message:用于设置Test method运行乐成时输出的消息。
[*]Success code:用于设置Test method运行乐成时输出的相应码。
[*]Failure message:用于设置Test method运行失败时输出的消息。
[*]Failure code:用于设置Test method运行失败时输出的相应码。
[*]Error message:用于设置Test method运行报错(通常指抛出了非常)时输出的消息。
[*]Error code:用于设置Test method运行报错(通常指抛出了非常)时输出的相应码。
[*]Do not call setUp and tearDown:用于设置不调用单元测试类中的setUp和tearDown方法,setUp和tearDown是Junit单元测试尺度中两个默认的方法,分表用于运行初始化和运行竣事时,对干系的运行资源举行烧毁,如下图所示,是一个尺度的Junit单元测试类的根本结构。
https://img2024.cnblogs.com/blog/1200756/202509/1200756-20250929112415962-1552500092.png
[*]
[*]Append assertion errors:用于设置是否将断言错误附加到相应消息中,在单元测试中为了判断某个单元测试方法是否实行乐成,以是在单元测试方法中都会设置有相应的断言来判断单元测试方法是否实行乐成。
[*]Append runtime exceptions:用于设置是否将运行时非常(即当运行发送报错抛出非常时)附加到相应消息中。
[*]Create a new Instance per sample:当对某个单元测试类举行测试时,用于设置是否须要为每个线程都创建一个新的Junit类实例对象,默认值为false,表现一旦创建了一个实例对象后,在多线程并发用户中每个线程用户都会共享利用这一个实例对象,Java是一个面向对象的开发语言,在运行时,都是以实例对象的方式来运行。
[*]Java哀求:Java哀求取样器用于直接调用Java代码举行取样器操纵,该取样器和JUnit哀求取样器非常雷同,如下图所示,Jmeter在启动时,会扫描Jmeter安装目次的lib\ext目次下符合Java哀求取样器尺度的Jar包中的Java Class类,然后加载到Java捏造机中供运行,这些Java Calss 通常都是实现了org.apache.jmeter.prototool.java.sampler. JavaSamplerClient这个抽象接口。
https://img2024.cnblogs.com/blog/1200756/202509/1200756-20250929112416804-1950976796.png
从图中可以看到,Jmeter中许多其他的取样器,好比FTP哀求取样器、SMTP取样器、TCP取样器等,都是通过实现了org.apache.jmeter.prototool.java.sampler. JavaSamplerClient这个抽象接口来到达其取样功能的。
在Java哀求取样器界面中展示的是两个实现了org.apache.jmeter.prototool.java.sampler. JavaSamplerClient这个抽象接口的测试类,分别为org.apache.jmeter.protocol.java.test.JavaTest和org.apache.jmeter.protocol.java.test.SleepTest,如下图所示,而且在Java哀求取样器中,也可以本身指定参数以及该参数对应的值,而且也可以在Jmeter监听器中的检察结果树这个元件中来检察到Java哀求以及该哀求对应的相应结果,在本书的后续章节中,还会具体先容怎样来实现一个自界说的Java哀求取样器。
https://img2024.cnblogs.com/blog/1200756/202509/1200756-20250929112416141-1558972945.png
[*]LDAP扩展哀求默认值:LDAP扩展哀求默认值取样器是用于设置LDAP哀求的默认值,LDAP是Lightweight Directory Access Protocol的简写,即轻量目次访问协议,目次服务是一种和数据库很雷同的服务,和数据库差别的是,目次服务是以树状的条理结构来存储数据。
[*]LDAP哀求:LDAP哀求取样器用于通过LDAP协议向支持LDAP协议的目次服务发起取样器哀求,哀求的范例支持添加测试、删除测试、搜索测试、修改测试。LDAP哀求取样器界面包罗的参数如下:
[*]服务器名称:用于设置目次服务的域名大概IP地点。
[*]端口:用于设置目次服务的端标语,默以为389。
[*]DN:用于设置LDAP协议操纵的DN(最顶层的根部目次)。
[*]用户名:用于设置访问目次服务的用户名。
[*]暗码:用于设置访问目次服务的暗码。
[*]测试设置:由于选择哀求的范例,支持选择添加测试、删除测试、搜索测试、修改测试这四种范例。
[*]邮件阅读者取样器:邮件阅读者取样器是指利用POP3(Post Office Protocol - Version 3的简写,即邮局协议版本3,用于支持利用客户端远程管理在邮件服务器上的电子邮件)或IMAP(Internet Mail Access Protocol的简写,即交互邮件访问协议,同样是用于从本地邮件客户端访问远程服务器上的邮件)协议读取指定邮件服务器上的邮件,该取样器通常用于模仿多线程并发用户来读取邮件服务器上邮件,该取样器界面包罗的参数如下:
[*]Protocol:用于设置邮件通讯协议,支持POP3, POP3s, IMAP, IMAPS,可以根据现实的邮件服务器来举行设置。
[*]Server Host:用于设置邮件服务器的域名大概IP地点。
[*]Server Port:用于设置邮件服务器的端标语。
[*]Username:用于设置邮件服务器的登任命户名。
[*]Password:用于设置邮件服务器的登录暗码。
[*]Folder:用于设置IMAP大概IMAPS邮件协议服务器的读取文件夹。
[*]Number of messages to retrieve:用于设置须要检索的邮件数量。
[*]Fetch headers only:用于设置是否仅检索邮件头。
[*]Delete messages from server:用于设置是否在检索完对应的邮件后,从邮件服务器中删除对应的邮件。
[*]Store the message using MIME(raw):用于设置是否将邮件存储为MIME((Multipurpose Internet Mail Extensions)的简写,即多用途互联网邮件扩展范例,是一种文件的扩展范例,以方便支持此扩展范例的应用步伐可以打开该文件),如果设置了该选项,则会将整个原始消息存储在相应数据中。
[*]Security settings:用于设置邮件传输的安全加密协议,支持无加密、SSL、StartTLS三种范例。
[*]Trust All Certificates:用于设置是否继承独立于CA的全部证书。
[*]Use local truststore:用于设置只继承本地受信托的证书。
[*]Local truststore:当设置了Use local truststore选项后,可以同时设置受信托证书的文件的本地信托库路径。
[*]Override System SSL/TLS Protocols:用于设置是否覆盖体系的SSL/TLS协议,通常会和Security settings参数搭配举行设置。
[*]SMTP取样器:SMTP取样器是一个模仿通过SMTP协议向邮箱服务器发送邮件的取样器,而且支持通讯毗连中设置安全协议(支持SSL和TLS)以及用户身份验证,如果利用安全协议,将对服务器证书举行验证,该取样器支持的证书认证包罗信托全部证书和利用本地信托库(将根据本地信托库的证书文件举行验证)两种方式,该取样器界面包罗的参数如下:
[*]Server:用于设置邮箱服务器的域名大概IP地点。
[*]Port:用于设置邮箱服务器的端标语。
[*]Connection timeout:用于设置毗连的超时时长,单元为毫秒,默以为不超时。
[*]Read timeout:用于设置读取的超时时长,单元为毫秒,默以为不超时。
[*]Address From:用于设置发件人的邮箱地点。
[*]Address To:用于设置收件人的邮箱地点,多个邮箱地点之间用分号隔开。
[*]Address To CC:用于设置抄送人的邮箱地点,多个邮箱地点之间用分号隔开。
[*]Address To BCC:用于设置秘密抄送人的邮箱地点,多个邮箱地点之间用分号隔开。
[*]Address Reply-To:用于设置备选复兴的邮箱地点,多个邮箱地点之间用分开隔开。
[*]Use Auth:用于设置是否利用身份验证。
[*]Username:当设置身份验证时,须要设置身份验证的用户名。
[*]Password:当设置身份验证时,须要设置身份验证的暗码。
[*]Use no security features:不利用任何的安全验证。
[*]Use SSL:利用SSL安全认证协议。
[*]Use StartTLS:利用StartTLS安全认证协议,通常在SSL和StartTLS中二选一。
[*]Enforce StartTLS:欺压利用StartTLS,如果服务器不支持StartTLS,则运行直接停止。
[*]Trust All Certificates:用于设置信托全部的证书来验证。
[*]Use local truststore:用于设置利用本地信托库来验证。
[*]Local truststore:用于设置本地信托库的路径。
[*]Override System SSL/TLS Protocols:用于设置利用自界说的SSL/TLS协议来覆盖体系默认的SSL/TLS协议,多个之间以空格来分割,好比TLSv1 TLSv1.1 TLSv1.2等。
[*]Subject:用于设置邮件的主题。
[*]Suppress Subject Header:用于禁用邮件主题头。
[*]Include timestamp in subject:用于设置在邮箱的主题中添加时间戳。
[*]Add Header:用于添加邮件的主题头(通常以Key/Value的情势)。
[*]Message:用于设置邮件的正文形貌。
[*]Send plain body (i.e. not multipart/mixed):用于设置是否发送纯文本。
[*]Attach files:用于设置邮件中是否添加附件。
[*]Send .eml:用于设置是否发送.eml文件。
[*]Calculate message size:用于设置是否盘算邮件的巨细。
[*]Enable debug logging:用于设置是否启用Debug日记,通常在脚本调试时,可以启用该选项以看到更多的日记。
[*]OS历程取样器:OS历程取样器是一个可用于在本地盘算机操纵体系上实行下令的取样器,如同下令行工具一样,可以实行从下令行中运行的全部下令,支持的操纵体系包罗Windows和Linux操纵体系,OS历程取样器界面包罗的参数如下:
[*]要实行的下令:设置须要实行的下令。
[*]工作目次:设置须要在哪个目次下实行下令。
[*]下令行参数:设置待实行的下令背面须要加的参数。
[*]环境变量设置:运行下令时添加到环境中的变量(通常为Key/Value的情势),雷同于在Windows和Linux操纵体系中设置暂时的环境变量。
[*]Standard input (stdin):用于设置待实行下令的尺度输入的文件名。
[*]Standard output (stdout):用于设置下令实行完成后尺度输出的文件名,如果不设置该参数,则会自动捕捉下令实行完的尺度输出作为相应数据返回。
[*]Standard error (stderr):用于设置下令实行报错时尺度错误的输出文件名。
[*]查抄返回码:用于设置是否查抄下令实行完成后的返回码,不管是在Linux下令行大概Windows下令行实行一条下令,下令实行完成后,操纵体系都是会有返回码返回的。
[*]Timeout:用于设置下令实行的超时时长,单元为毫秒,默以为0,表现不超时。
[*]TCP取样器:TCP取样器用于直接通过TCP/IP协议来向TCP 服务器发送取样哀求,该取样器通常是通过文本的情势直接向服务器发送哀求,该取样器界面包罗的参数如下:
[*]TCPClient classname:用于设置TCP客户端的类名。
[*]服务器名称或IP:用于设置TCP服务器的域名大概IP地点。
[*]端标语:用于设置TCP服务器的端标语。
[*]毗连超时:用于设置TCP毗连的超时时长,单元为毫秒。
[*]相应超时:用于设置TCP哀求的相应的超时时长,单元为毫秒。
[*]Re-use connection:用于设置TCP/IP毗连是否重用,如果勾选了此选项,则毗连将不停处理处罚打开状态,不会关闭,后续的哀求会连续利用该毗连来完成哀求。
[*]关闭毗连:如果勾选此选项,则每次取样哀求竣过后,就会关闭毗连,下一个取样哀求将须要重新创建毗连。
[*]SO_LINGER:用于设置SO_LINGER(即耽误时长,单元为秒)。
[*]行尾(EOL)字节值:用于设置哀求行尾的字节值巨细,EOL通常指TCP/IP协议中的扩展头部末了,用于表现扩展头部的竣事。
[*]要发送的文本:设置TCP哀求须要发送的文本消息。
[*]用户名:设置TCP哀求验证的用户名。
[*]暗码:设置TCP哀求验证的暗码。
2、本次学习总结
[*]取样器的利用,包罗HTTP哀求、调试取样器、JSR223 Sampler、AJP/1.3 取样器、Access Log Sampler、BeanShell 取样器、Bolt Request、FTP哀求、GraphQL HTTP Request、JDBC Request、JMS点到点、JMS发布、JMS订阅、JUnit哀求、Java哀求、LDAP哀求、邮件阅读者取样器、SMTP取样器、OS历程取样器、TCP取样器等,取样器是Jmeter性能测试的焦点元件,也是读者们须要重点把握的内容,此中HTTP哀求、JDBC Request、TCP取样器发起读者们优先辈行重点把握。
出处:本次学习的内容参考自清华大学出书社出书的《JMeter焦点技能、性能测试与性能分析》一书
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]