2026/2/7 5:59:38
网站建设
项目流程
北京工程质量建设协会网站,贝锐免费域名,网站引流推广软件,网站的开发与设计每周读书与学习是由清华大学出版社出版的《JMeter核心技术、性能测试与性能分析》一书的作者推出#xff0c;分享作者多年的IT从业经历#xff0c;希望对很多计算机科学技术IT类专业毕业生以及IT从业者有所帮助。 1、取样器 在Jmeter中#xff0c;取样器通常用来模拟并发用户…每周读书与学习是由清华大学出版社出版的《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:直接停止当前线程或者所有线程。HTTP请求HTTP请求取样器是指可以向指定的Web服务发送HTTP或者HTTPS请求如果需要对一个HTTP或者HTTPS协议的服务做性能压测就需要用到该取样器由于Web服务是一种最常见的服务所以HTTP请求取样器通常是使用频率最高的取样器。HTTP取样器界面中主要包含如下参数协议默认为HTTP支持填入HTTP、HTTPS 或者 FILEFILE协议主要用于访问本地计算机中的文件。服务器名称或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 响应码来告诉客户端需要重定向到一个新的服务端地址来获取最终的响应如下图所示。当重定向为自动重定向时如果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-datamultipart通常表示允许客户端在一次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这个请求头。参数用于设置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/svgxml表示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请求支持的访问日志应用包括TomcatJava语言编写的应用服务容器、ResinCAUCHO公司下的应用服务容器同样采用Java语言编写、WeblogicOracle公司下的一个应用服务容器等比如某个Tomcat的访问日志如下127.0.0.1 - - [21/Oct/2003:05:37:21 -0500] 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 RequestGraphQL 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的值。JDBC RequestJDBC 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 获取常见的基本数据类型详细说明。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消息的方式来进行异步通信如下图所示通常是一个应用程序生产消息而另一个应用程序消费消息通过消息队列的方式来完成异步通信。JMS点到点取样器界面包含的参数如下在使用JMS点到点取样器之前建议先找一些相关资料学习下JMS消息这样会更容易理解如下参数的具体含义。QueueConnection Factory用于设置连接到消息队列工厂的JNDIJava 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请求取样器。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单元测试类的基本结构。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这个抽象接口。从图中可以看到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请求取样器。LDAP扩展请求默认值LDAP扩展请求默认值取样器是用于设置LDAP请求的默认值LDAP是Lightweight Directory Access Protocol的简写即轻量目录访问协议目录服务是一种和数据库很类似的服务和数据库不同的是目录服务是以树状的层次结构来存储数据。LDAP请求LDAP请求取样器用于通过LDAP协议向支持LDAP协议的目录服务发起取样器请求请求的类型支持添加测试、删除测试、搜索测试、修改测试。LDAP请求取样器界面包含的参数如下服务器名称用于设置目录服务的域名或者IP地址。端口用于设置目录服务的端口号默认为389。DN用于设置LDAP协议操作的DN最顶层的根部目录。用户名用于设置访问目录服务的用户名。密码用于设置访问目录服务的密码。测试配置由于选择请求的类型支持选择添加测试、删除测试、搜索测试、修改测试这四种类型。邮件阅读者取样器邮件阅读者取样器是指使用POP3Post Office Protocol - Version 3的简写即邮局协议版本3用于支持使用客户端远程管理在邮件服务器上的电子邮件或IMAPInternet 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 MIMEraw用于设置是否将邮件存储为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表示不超时。