JMeter配置元件详解
2021-12-16 10:00:14
作者:云深i不知处
JMeter提供了丰富的配置元件,常用的包括参数化配置元件、HTTP请求默认值、HTTP信息头管理器、计数器等,本文就详细的介绍一下这些元件的使用,感兴趣的可以了解一下
1 CSV Data Set Config(参数化)
参数化配置元件
(以下简称CSV)能够在文件中读取一行数据,根据特定的符号切割成一个或多个变量放入内存中。相比于JMeter函数助手中提供的 __CSVRead()、__StringFromFile()函数,CSV使用更加简便。而且,CSV非常适合处理大量的数据,也适用于生成“随机值”、“唯一值”这张的变量。
JMeter支持数据被双引号括起,被双引号括起的数据允许包含分隔符,例如:
a,b,"c,d"
这行数据被逗号分隔后将产生三个变量值,
a、b、c,d
JMeter支持读取具有标题行(标题行的内容是列名称)的CSV文件,要启用此功能,要将【Variable Names】留空,并且提供正确的分隔符。
参数详解
:
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、线程组各自独立,但每个线程组内各个线程(用户)唯一顺序取值;
修改【Sharing mode】为【Current thread group】后,运行结果不变,改为【Current thread】,结果变为:
var1=a1 var2=b1 var3=c1
var1=a2 var2=b2 var3=c2
var1=a1 var2=b1 var3=c1
var1=a2 var2=b2 var3=c2
以上结果说明,前两种模式下,多个线程会互相影响,线程1读取第一行数据后,线程2就会读取第二行,线程1再次读取时会读取第三行,以此类推。第三种模式下,各个线程互不影响,只按自身的顺序去读取文件,例如线程1读取第一行后,下次会读取第二行,线程2也是如此。
2 HTTP Cookie Manager(cookie管理器)
cookie管理器
有两个功能:
它像Web浏览器一样存储和发送cookie。如果有一个HTTP请求,并且响应中包含一个cookie,那么cookie管理器会自动存储该cookie,并将其用于将来对该特定网站的所有请求。每个JMeter线程都有自己的“cookie存储区”。因此,测试使用cookie存储会话信息的网站,每个JMeter线程都将有自己的会话。要注意的是,此类cookie不会出现在cookie管理器显示中,但可以在【查看结果树】中查看它们。
JMeter会检查接收到的cookie是否对URL有效,这意味着跨域cookie将不会被存储。如果想要进行窃听行为或希望使用跨域cookie,需要定义jmeter属性“
CookieManager.check.cookies=false
”。
接收到的cookie可以存储为jmeter线程变量。要将cookies保存为变量,请定义属性“
CookieManager.save.cookies=false=true
”。此外,在存储cookie名称之前,它们的前缀是“COOKIE_”(这可以避免局部变量的意外损坏)要恢复到初始状态,请定义属性“
CookieManager.name.prefix=
”(一个或多个空格)。如果启用,名为TEST的cookie的值可以描述为**${COOKIE_TEST}**。
其次,我们可以手动将cookie添加到cookie管理器中。不过,这样做的话,所有JMeter线程将共享cookie。这些cookie的失效时间将会很长。
默认情况下,空值的cookie将会被忽略,可以通过设置JMeter配置文件来修改:
CookieManager.delete_null_cookies=false
,这也适用于手动定义的cookie,任何此类cookie在更新时都将从显示中被删除。cookie名称必须是唯一的,如果用相同的名称定义了第二个cookie,它将替换第一个。
如果一个sampler(取样器)的作用域中有多个cookie管理器,则无法指定要使用哪个cookie管理器。另外,存储在一个cookie管理器中的cookie对任何其他管理器都不可用,因此请小心使用多个cookie管理器。
cookie管理器参数详解:
Clear Cookies each Iteration
勾选此项后,每次执行主线程组循环时,都会清除所有服务器定义的cookie。在GUI中定义的任何cookie都不会被清除。
Cookie Policy
cookie管理策略。“standard”适用于大部分情况。“ignoreCookies”等同于忽略cookieManger
User-Defined Cookies
使用自定义的cookie
3 HTTP Request Defaults
HTTP请求默认值
,这个元件可以设置HTTP请求控制器使用的默认值。例如,图中【服务器名称或IP】项目内填入了【example.com】,后面的HTTP请求如果IP也是example.com的话,那么只要将【服务器名称或IP】留空,那么这个字段将自动继承HTTP请求默认值中的值。其他诸如【协议】、【端口号】、【路径】等同此。
HTTP请求默认值可以极大地增强复用性,简化脚本编写。
4 HTTP Header Manager(信息头管理器)
信息头管理器
,支持用户添加或者重写HTTP请求头。JMeter支持多个信息头管理器。多个信息头条目合并成一个信息头列表,跟随http请求一并提交到服务端。
经过实测,总结出规则如下:
当有多个信息头管理器,且不同的管理器内有名称相同的信息头条目存在时,顺序靠前的管理器的信息头条目会覆盖后面的;
Number Format
可选格式,例如000将格式化为001、002等。这将传递给decimalFormat,因此可以使用任何有效格式。如果在解释格式时出现问题,则忽略该格式。[默认格式是使用long.toString()生成的]
Exported Variable Name
引用名称,如果将它命名为count,后面可以用${count}引用它,不建议用空字符串,虽然空值也可以使用
Track Counter Independently for each User
如果勾选此项,则计数器为全局计数器(即,用户1将获得值“1”,用户2将在第一次迭代时获得值“2”)。如果选中,则每个用户都有一个独立的计数器。
Reset counter on each Thread Group Iteration
此选项仅在勾选【Track Counter Independently for each User】时可用,如果选中此选项,则计数器将重置为每个线程组迭代的起始值。当计数器在循环控制器中时,这可能很有用。
第1次循环,count=1,不满足if控制器1条件,满足if控制器2条件,执行了控制器2下的取样器;
第2次循环,count=2,不满足if控制器1条件,满足if控制器2条件,执行了控制器2下的取样器;
第3次循环,count=3,满足if控制器1条件,也满足if控制器2条件,执行了控制器1和控制器2下的取样器;
第4次循环,count=4,不满足if控制器1条件,满足if控制器2条件,执行了控制器2下的取样器;
第3次循环,count=5,不满足if控制器1条件,也不满足if控制器2条件,两个if控制器下的取样器都没有执行;
到此这篇关于JMeter配置元件详解的文章就介绍到这了,更多相关JMeter 元件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:
Java中System.currentTimeMillis()计算方式与时间单位转换讲解
2021-12-12
springboot中使用过滤器,jsoup过滤XSS脚本详解
2021-12-12
Java基于TCP协议的Socket通信
2021-12-12
基于SpringMVC实现网页登录拦截
2021-12-12
SpringCloud Alibaba Nacos&nb
2021-12-12
Java 基础:string中的compareTo方法
2021-12-12
Java Semaphore实现高并发场景下的流量控制
2021-12-12
java自带排序使用
2021-12-12
美国设下计谋,用娘炮文化重塑日本,已影响至中国
2021-11-19
时空伴随者是什么意思?时空伴随者介绍
2021-11-09
工信部称网盘企业免费用户最低速率应满足基本下载需求,天翼云盘回应:坚决支持,始终
2021-11-05
2022年放假安排出炉:五一连休5天 2022年所有节日一览表
2021-10-26
电脑版
-
返回首页
2006-2023 脚本之家 JB51.Net , All Rights Reserved.
苏ICP备14036222号