Jmeter(八) - 从入门到精通 - JMeter配置元件(详解教程)
1.简介
JMeter配置元件可以用来初始化默认值和变量,读取文件数据,设置公共请求参数,赋予变量值等,以便后续采样器使用。将在其作用域的初始化阶段处理。配置元件(Config Element)提供对静态数据配置的支持,可以为取样器设置默认值和变量。
首先我们来看一下JMeter的配置元件,路径:添加-配置元件;我们可以清楚地看到JMeter5中共有19个配置元件,如下图所示:

如果上图您看得不是很清楚的话,宏哥总结了一个思维导图,关于JMeter5的配置元件类型,如下图所示:

通过以上的了解,我们对配置元件有了一个大致的了解和认识。下面宏哥就给小伙伴或则童鞋们分享讲解一些通常在工作中会用到的配置元件。
2.常用配置元件详解
这一小节,宏哥就由上而下地详细地讲解一下常用的配置元件。
2.1CSV Data Set Config
1、我们先来看看这个CSV Data Set Config长得是啥样子,如下图所示:

2、参数详解及说明,如下表所示:
| 参 数 | 描 述 | 是否必填 |
|---|---|---|
| Name | 脚本中显示的这个元件的描述性名称 | 是 |
| Filename | 待读取文件的名称。可以写入绝对路径,也可以写入相对路径(相对于bin目录),如果直接写文件名,则该文件要放在bin目录中。对于分布式测试,主机和远程机中相应目录下应该有相同的CSV文件 | 是 |
| File Encoding | 文件读取时的编码格式,不填则使用操作系统的编码格式 | 否 |
| Ignore first line | 是否忽略首行,如果csv文件中没有表头,则选择false | 是 |
| Variable Names | 变量名列表,多个变量名之间必须用分隔符分隔。如果该项为空,则文件首行会被读取并解析为列名列表 | 否 |
| Delimiter | 参数分隔符,将一行数据分隔成多个变量,默认为逗号,也可以使用“\t”。如果一行数据分隔后的值比Vairable Names中定义的变量少,这些变量将保留以前的值(如果有值的话) | 是 |
| Allow quoted data? | 是否允许变量使用双引号,允许的话,变量将可以括在双引号内,并且这些变量名可以包含分隔符 | 否 |
| Recycle on EOF? | 是否循环读取csv文件内容,达到文件结尾后,是否从文件开始循环重新读取;默认为 true | 是 |
| Stop thread on EOF? | 是否循环读取csv文件内容,达到文件结尾后,线程是否该终止;默认为 true | 是 |
| Recycle on EOF? | 当Recycle on EOF为False时,停止线程,当Recycle on EOF为True时,此项无意义,默认为 false | 是 |
| Sharing mode | 1、All threads(默认):一个线程组内,各个线程(用户)唯一顺序取值;2、current thread:一个线程组内,各个线程(用户)各自顺序取值;3、线程组各自独立,但每个线程组内各个线程(用户)唯一顺序取值; | 是 |
3、Recycle on EOF 和Stop thread on EOF的关系:
当Recycle on EOF 选择true时,Stop thread on EOF选择true和false无任何意义,因为既然前面已经设置了文件是不停的循环读取,后面的控制stop就相当于失效;
当Recycle on EOF 选择false时,Stop thread on EOF选择true,则当线程数超过文件里的参数的个数时,实际请求数为参数的个数;
当Recycle on EOF 选择false时,Stop thread on EOF选择flase,当线程数超过文件里参数的个数时,实际请求次数为线程数,但当线程数超过参数次数时,由于没有参数,所以结果仍然是失败的。
4、Sharing mode:如果希望每个线程拥有自己独立的值集合,那么就需要创建一系列数据文件,为每个线程准备一个数据文件,如test1.csv、test2.csv等,使用文件名test${__threadNum}.csv,并将“sharing mode"设置为"Current thread"
All threads:文件在所有线程间共享。
Identifier:所有线程共享相同的标识,共享相同的文件。如有4个线程组,测试人员可以使用一个通用ID,以便在两个或多个线程组之间共享文件。
Current thread:每个文件会针对每个线程单独打开。
Current thread group:每个文件会针对每个线程组打开一次。
2.2HTTP Header Manager
支持用户添加或者重写HTTP请求头。JMeter支持多个信息头管理器。多个信息头条目合并成一个信息头列表,跟随http请求一并提交到服务端。
注意:敲黑板,敲脑壳!!!
(1)当有多个信息头管理器,且不同的管理器内有名称相同的信息头条目存在时,顺序靠前的管理器的信息头条目会覆盖后面的;
(2)当只有一个信息头管理器,但管理器内有名称相同的信息头条目时,会同时生效;
1、我们先来看看这个HTTP Header Manager长得是啥样子,如下图所示:

2、参数详解及说明,如下表所示:
| 参数 | 描述 | 是否必填 |
| Name | 请求头的名称,比如Content-Type | 否 |
| Value | 请求头的值,比如application/json | 否 |
3、常用请求头,这些一般可以抓包和在浏览器中查到,如下表所示:

2.3HTTP Cookie Manager
主要有两个功能:
一个功能是:像web浏览器一样存储和发送Cookie。如果有一个HTTP请求和相应里包含Cookie,Cookie管理器会自动存储Cookie,那么接下来针对特定web站点的所有请求中使用该Cookie。可在结果树中查看。
接收到的Cookie可以被保存为变量,须定义属性"CookieManager.save.cookie=true"。另外,在被存储前Cookie名称会加上前缀“COOKIE_",要恢复早前处理方式,则定义属性”CookieManager.name.prefix="(一个或多个空格)。
如果启动了该功能,那么名称为TEST的Cookie,可以通过${COOKIE_TEST}加以引用。手动为Cookie管理器添加一个Cookie(为所有JMeter线程所共享)。
1、我们先来看看这个HTTP Cookie Manager长得是啥样子,如下图所示:

2、参数详细说明,如下表所示:
| 参数 | 描述 | 是否必填 |
| Name | 树中显示此元件描述的名称 | 是 |
| Comments | 注释 | 否 |
| Clear cookie each Iteration | 每次线程组运行前,都会清楚cookie,但是如果是手动添加的cookie,不会被清除 | 否 |
| Cookie Policy | 选择Cookie的管理策略,建议选择兼容性,兼容性强 | 是 |
| User Define cookie | 用户自定义cookie | 否 |
2.4HTTP Cache Manager
被用来为其作用域内的HTTP请求提供缓存功能,如果“Use Cache-Control/Expires header When ..."选中,那么会根据当前时间来选择,如果请求是”GET",而时间指向未来,那么采样器就会立即返回,而无须从远程服务器请求URL,这样是为了模拟浏览器的操作,请注意Cache-Control头必须是“pulic”的,并且只有"max-age"终结选项会被处理,如果请求文档自从其被缓存以来没有发生任何改变,那么响应包体就会为空。
1、我们先来看看这个HTTP Cache Manager长得是啥样子,如下图所示:

2、参数详细说明,如下表所示:
| 参数 | 描述 | 是否必填 |
| Name | 树中显示此元件的描述性名称 | 是 |
| Comments | 注释 | 否 |
| Clear Cache each iteration | 如果选择此选项,则在线程开始时清除缓存。 | 否 |
| Use Cache | 如果选择此选项,则在线程开始时使用缓存。 | 否 |
| Max Number | 如果选择此选项,则在线程开始时最大缓存。 | 否 |
2.5HTTP Request Defaults
在实际测试计划中,我们经常会碰到Http Sampler请求有较多的参数与配置会重复,每一个Http Sampler都单独设置的话比较浪费时间和精力,为了节省工作量,JMeter提供了HTTP Request Defaults元件,用来把这些重复的部分封装起来,一次设置多次使用。可以设定一些缺省值,假设有10个请求,访问域名和端口都是一样的,那HTTP请求中就不再需要单独配置了,比较方便(增加脚本的移植性)。
这个元件可以设置HTTP请求控制器使用的默认值。例如,图中【服务器名称或IP】项目内填入了【example.com】,后面的HTTP请求如果IP也是example.com的话,那么只要将【服务器名称或IP】留空,那么这个字段将自动继承HTTP请求默认值中的值。其他诸如【协议】、【端口号】、【路径】等同此。
1、我们先来看看这个HTTP Request Defaults长得是啥样子,如下图所示:

2、参数详细说明,如下表所示:
| 参数 | 描述 | 是否必填 |
| Name | 用作标识一个取样器,建议使用一个见名知义的名称 | 是 |
| Comments | 注释 | 否 |
| Protocol | 协议,向目标服务器发送HTTP请求时的协议,可以是http或者是Https | |
| IP | HTTP请求发送的目标服务器名称或者IP地址 | |
| Port Number | 目标服务器端口 | |
| Path | 目标URL路径(不包括服务器地址和端口) | |
| Content encdoing | 内容的编码方式 | |
| Parameter | 参数 | |
| body data | 参数 |
2.6Counter
计数器,顾名思义就是在测试执行过程中会记录迭代次数。可以在线程组任何位置创建,允许用户配置起点、最大值和增量。配置后,计数器将从起点循环到最大值,然后重新开始,直到线程结束。允许用户创建一个计数器,可在线程组中任何地方被引用。
1、我们先来看看这个Counter长得是啥样子,如下图所示:

2、参数详细说明,如下表所示:
| 参数 | 描述 | 是否必填 |
| Name | 控制器名称,可以随意设置 | 否 |
| Comments | 注释,可以随意设置 | 否 |
| Starting value | 启动,记录数量起始值 | |
| Increment | 递增,记录迭代次数步长,1后是2,步长就是1 | |
| Maximum value | 记录的最大值 | |
| Number format | 计算器格式,可以是数字,例如000000(6位长度,000,000(6位长度,3位间隔开);字符加数字,例如CUST_000000(字符加6位数字 ) | |
| Exported Variable Name | 引用变量名称,记数器记录的值可以存入的此引用名(变量),可供其他元件调用 | |
| Track counter independently for each user | 与每位用户独立的跟踪计数器,每个线程都有自己的计数器,相互不干扰 | |
| Reset counter on each Thread Group Iteration | 每次迭代复原计数器 |
2.7DNS Cache Manager
1、我们先来看看这个DNS Cache Manager长得是啥样子,如下图所示:

2、参数详细说明,如下表所示:
| 参数 | 描述 | 是否必填 |
| Name | 树中显示此元件的描述性名称 | |
| Comments | 注释 | |
| Clear cache each iter | 清除每个迭代的缓存,如果选择此选项,则每次启动新迭代时,都会清除每个线程的DNS缓存。 | |
| Use System DNS resolver | 使用系统DNS解析器;将使用系统DNS解析器。为了正确工作,请编辑 $ JAVA_HOME / jre / lib / security / java.security并添加networkaddress.cache.ttl = 0 | |
| Use custom DNS resolver |
使用自定义DNS解析器;将使用自定义DNS解析器(来自dnsjava库)。
|
2.8FTP Request Defaults
被用于设置FTP请求的默认值
1、我们先来看看这个FTP Request Defaults长得是啥样子,如下图所示:

2.9HTTP Authorization Manager
HTTP认证是一种安全机制,在客户端、浏览器或者程序向服务器发起请求时,需要提供用户名和密码且验证通过(拿到凭证)才能继续发起交互。
1、我们先来看看这个HTTP Authorization Manager长得是啥样子,如下图所示:

2.10JDBC Connection Configuration
1、我们先来看看这个JDBC Connection COnfiguration长得是啥样子,如下图所示:

2、关于JDBC Connection COnfiguration参数详细说明,可以参考宏哥的另一篇文章是非常详细的:传送门。
2.11Java Request Defaults
1、我们先来看看这个Java Request Defaults长得是啥样子,如下图所示:

2.12Keystore Configuration
1、我们先来看看这个Keystore Configuration长得是啥样子,如下图所示:

2、参数详细说明,如下表所示:
| 参数 | 描述 | 是否必填 |
| Name | 树中显示此元件的描述性名称。可以默认 | 是 |
| Comments | 注释 | 否 |
| Preload | 预载,是否预加载秘钥库,设置为true通常是最佳选择 | 是 |
| Variable name holding certificate alias | 变量名称,将包含用于客户端证书身份验证的别名。例如,将从CSV数据集中填充变量值。在屏幕截图中,“ certificat_ssl”也将是CSV数据集中的变量。 | 否 |
| Alias Start index | 从0开始在Keystore中使用的第一个键的索引。 | 是 |
| Alias End index | 基于0的密钥库中要使用的最后一个密钥的索引。使用“变量名称持有证书别名”时,请确保其足够大,以便在启动时加载所有密钥。 | 是 |
2.13LDAP Extended Request Defaults
1、我们先来看看这个LDAP Extended Request Defaults长得是啥样子,如下图所示:

2.14LDAP Request Defaults
1、我们先来看看这个LDAP Request Defaults长得是啥样子,如下图所示:

2.15Login Config Element
1、我们先来看看这个Login Config Element长得是啥样子,如下图所示:

2.16Random Variable
1、我们先来看看这个Random Variable长得是啥样子,如下图所示:

2、参数详细说明,如下表所示:
| 参数 | 描述 | 是否必填 |
| Name | 树中显示的此元件的描述性名称。 | |
| Comments | 注释 | |
| Variable Name | 变量名,存储随机字符串的变量的名称。 | |
| Output Format | 格式化字符串,要使用的java.text.DecimalFormat格式字符串。例如,“ 000”将生成至少3位数字,或者“ USER_000”将生成USER_nnn形式的输出。如果未指定,则默认为使用Long.toString()生成数字。 | |
| Minimum Value | 最小值;生成的随机数的最小值(长整数)。 | |
| Maximum Value | 最大值;生成的随机数的最大值(长整数)。 | |
| Seed for Random function | 随机种子,随机数生成器的种子。默认值为当前时间,以毫秒为单位。如果在“将每个线程”设置为true的情况下使用相同的种子值,则与“ 随机”类一样,您将为earch线程获得相同的值 | |
| Per Thread(User)? | 每个线程,如果为False,则在线程组中的所有线程之间共享生成器。如果为True,则每个线程都有自己的随机生成器。 |
2.17Simple Config Element
1、我们先来看看这个Simple Config Element长得是啥样子,如下图所示:

2、参数详细说明,如下表所示:
| 参数 | 描述 | 是否必填 |
| Name | 树中显示此元件的描述名称 | 是 |
| Comments | 注释 | 是 |
| Name | 参数名称 | |
| Value | 参数值 |
2.18TCP Sampler Config
TCP采样器配置为TCP采样器提供默认数据
1、我们先来看看这个TCP Sampler Config长得是啥样子,如下图所示:

2、参数详细说明,如下表所示:
| 参数 | 描述 | 是否必填 |
| Name | 树中显示此元件的描述性名称 | |
| Comments | 注释 | |
| TCPClient classname | TCPClient类的名称,默认属性tcp.handler,使TCPClientImpl失败 | |
| Sever Name or IP | TCP服务器的名称或者IP | |
| Port Number | 使用的端口 | |
| Re-use connection | 重用连接,如果选择,则连接保持打开状态,否则,在读取数据后将其关闭 | |
| Close connection | 关闭连接,如果选择此项,则在运行采样器后将连接关闭 | |
| Set NoDelay | 设置节点布局,应该设置nodelay | |
| SO_LINGER | 创建套接字时,以指定的延迟时间(以秒为单位)启用/禁用SO_LINGER。如果将“SO_LINGER"值设置为0,则则可以防止大量套接字处于TIME_WAT 的状态 | |
| End of line byte value | 判断行结束的byte值,如果你指定的值大于127或者小于-128,则会跳过EOL检测。比如服务器端返回的字符串都是以回车符结尾,那么我们可以将该选项设置成10。 | |
| Text to send | 文字发送,要发送的文字 | |
| Connect | 连接超时(毫秒。0禁用) | |
| Response | 响应超时(毫秒。0禁用) |
2.19User Defined Variables
如果您有多个线程组,请确保对不同的值使用不同的名称,因为UDV在线程组之间共享。同样,这些变量在处理完元素之后才可用,因此您不能引用在同一元素中定义的变量。您可以引用在早期UDV或测试计划中定义的变量。
1、我们先来看看这个User Defined Variable长得是啥样子,如下图所示:

2、参数详细说明,如下表所示:
| 参数 | 描述 | 是否必填 |
| Name | 树中显示此元件描述的名称 | |
| Comments | 注释 | |
| User Define Variables | 用户定义的变量。变量名称/值对。您需要在$ {...}结构的方括号内放置“名称”(Name)列下的字符串,以便以后使用变量。然后,整个$ {...}将由“值”列中的字符串替换 |
3.小结
好了,今天关于JMeter的配置元件就分享到这里,其中有些常用的要熟练掌握。
您的肯定就是我进步的动力。如果你感觉还不错,就请鼓励一下吧!记得随手点波 推荐 不要忘记哦!!!
别忘了点 推荐 留下您来过的痕迹

Jmeter(八) - 从入门到精通 - JMeter配置元件(详解教程)的更多相关文章
- Jmeter(一) - 从入门到精通 - 环境搭建(详解教程)
1.JMeter 介绍 Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序).它可以用来测试静态和动态资源的性能,例如:静态文件, ...
- Jmeter(十八) - 从入门到精通 - JMeter后置处理器 -下篇(详解教程)
1.简介 后置处理器是在发出“取样器请求”之后执行一些操作.取样器用来模拟用户请求,有时候服务器的响应数据在后续请求中需要用到,我们的势必要对这些响应数据进行处理,后置处理器就是来完成这项工作的.例如 ...
- Jmeter(九) - 从入门到精通 - JMeter逻辑控制器 - 上篇(详解教程)
1.简介 Jmeter官网对逻辑控制器的解释是:“Logic Controllers determine the order in which Samplers are processed.”. 意思 ...
- Jmeter(十) - 从入门到精通 - JMeter逻辑控制器 - 中篇(详解教程)
1.简介 Jmeter官网对逻辑控制器的解释是:“Logic Controllers determine the order in which Samplers are processed.”. 意思 ...
- Jmeter(十一) - 从入门到精通 - JMeter逻辑控制器 - 下篇(详解教程)
1.简介 Jmeter官网对逻辑控制器的解释是:“Logic Controllers determine the order in which Samplers are processed.”. 意思 ...
- Jmeter(十三) - 从入门到精通 - JMeter定时器 - 上篇(详解教程)
1.简介 用户实际操作时,并非是连续点击,而是存在很多停顿的情况,例如:用户需要时间阅读文字内容.填表.或者查找正确的链接等.为了模拟用户实际情况,在性能测试中我们需要考虑思考时间.若不认真考虑思考时 ...
- Jmeter(十七) - 从入门到精通 - JMeter后置处理器 -上篇(详解教程)
1.简介 后置处理器是在发出“取样器请求”之后执行一些操作.取样器用来模拟用户请求,有时候服务器的响应数据在后续请求中需要用到,我们的势必要对这些响应数据进行处理,后置处理器就是来完成这项工作的.例如 ...
- jmeter学习四配置元件详解
JMeter提供的配置元件中的HTTP属性管理器用于尽可能模拟浏览器行为,在HTTP协议层上发送给被测应用的http请求 1.Http信息头管理器 用于定制Sampler发出的HTTP请求的请求头的内 ...
- Jmeter(二十八) - 从入门到精通 - Jmeter Http协议录制脚本工具-Badboy1(详解教程)
1.简介 在使用jmeter自动录制脚本时会产生很多无用的请求,所以推荐使用badboy录制脚本之后保存为jmx文件,在jmeter中打开使用.因此宏哥在这里介绍一下Badboy这款工具,本来打算不做 ...
随机推荐
- linux下获取软件源码包 centos/redhat, debian/ubuntu
linux下获取软件源码包 centos/redhat, debian/ubuntu centos下: 1. yum install yum-utils 主要为了获取yumdownloader 2. ...
- shell 并行运行。
我实在是太喜欢这个方法了.爽歪歪. 原帖 http://www.xaprb.com/blog/2009/05/01/an-easy-way-to-run-many-tasks-in-parallel/ ...
- nginx配置之负载均衡
nginx负载均衡 nginx代理机分发到多台同一项目的服务机 负载均衡器代理机配置:nginx.conf的http{}: #代理池,运行在不同服务机的程序 upstream loadtest{ se ...
- 快速上手Alibaba Arthas
点击返回上层目录 原创声明:作者:Arnold.zhao 博客园地址:https://www.cnblogs.com/zh94 Arthas 本文主要聚焦于快速上手并使用Arthas,所以对于基本的概 ...
- 非常实用的织梦dede所有标签调用方法大全
关键描述调用标签: <meta name="keywords" content="{dede:field name='keywords'/}">&l ...
- LNMP PHP升级脚本
升级PHP前,请确认你的网站程序是否支持升级到的PHP版本,防止升级到网站程序不兼容的PHP版本,具体可以去你使用的PHP程序的官网查询相关版本支持信息.v1.3及以后版本大部分情况下也可以进行降级操 ...
- spring——bean自动装配
注意:自动装配功能和手动装配要是同时使用,那么自动装配就不起作用. beans.xml <?xml version="1.0" encoding="UTF-8&qu ...
- SpringCloud(一)- SpringCloud简介
唯能极于情,故能极于剑 有问题或错误请及时联系小编或关注小编公众号 “CodeCow”,小编一定及时回复和改正,期待和大家一起学习交流 一.SpringCloud 1.1.Cloud 是什么 ?: 官 ...
- 【C++】运算符优先级和结合性
从上表可以大致总结这样一个规律: 优先级 运算符 高 初等运算符 | 单目运算符 | 算术运算符(先乘除,后加减) | 关系运算符 | 逻辑运算符(不包括!) | 条件运算符 ↓ 赋值运算符 低 逗号 ...
- 【图机器学习】cs224w Lecture 13 & 14 - 影响力最大化 & 爆发检测
目录 Influence Maximization Propagation Models Linear Threshold Model Independent Cascade Model Greedy ...