Jmeter系列之配置元件(一)

1,718 阅读2分钟

基于Jmeter5.2.1

目录

Jmeter系列之测试计划、线程组、采样器(一)

Jmeter系列之配置文件(一)

Jmeter系列之监听器(一)

Jmeter系列之控制器(一)

Jmeter系列之控制器(二)

Jmeter系列之作用域、执行顺序

Jmeter系列之BeanShell使用



这一节先介绍几个常用的配置元件。其他不算常用的后续再继续讲解。

image.png


CSV Data Set Config(参数化)

可以将一些固定的参数写入文件中,jmeter再读取,之后修改参数时直接修改文件就可以了

image.png

1 :名称和注释。

2 :和脚本同路径的话,只需要填写文件名,不同路径的话的话,需要填写全路径,点击Browse选择文件。

3 :文件编码,默认为ANSI,如果参数里有中文的话,就填写UTF-8,没有中文的话,不填写也行。

4 :参数名,以逗号分隔,和参数文件里的的参数顺序一一对应,脚本中直接以${参数名}使用。

【注意】Jmeter支持CSV文件的标头行,如果参数名为空,则读取CSV文件的标头行为参数名列表。

5 :是否忽略参数化文件的第一行,False是不忽略,4中的参数名不为空时才使用。


6 :参数文件里的分隔符,用来切割参数的,比如:

【举例】

image.png

参数化文件:

image.png

那么:a=123,b=456,789因为没有参数名对应,所以后续无法使用。


7 :是否允许参数化文件的参数带有双引号,False是允许,如果值带有双引号,那双引号也是参数的一部分,为True的话,会去掉首尾双引号。

【举例】

参数文件:

image.png,7为True的话,a=123\456,b=789,7为False的话,a="123,b=456"。


8 :执行到文件末尾,是否从文件开始处重新读取,默认为True,表示从文件开始处重新读取。


9 :到达文件末尾时,线程是否终止,默认为False,表示到达文件末尾时,线程不会终止。

8和9需要配和使用

当线程组小于或等于参数文件的行数时,这两个值的设置其实没多大意义,保持默认值就可以了。

当线程组线程数大于参数文件行数时:

image.png


10 :设置是否线程共享

image.png


HTTP Header Manager(Header管理)

顾名思义,这个配置元件是用来管理HTTP Header的。

Jmeter支持多个Header管理器,同样的作用域下多个Header管理器是合并使用。

image.png

比如现在常见的利用json来交换数据的接口,需要设置Header的Content-Type为application/json,那就可以添加Header管理器来管理。

现在可以先提前了解一个问题:Jmeter里要想给请求设置Header,则只能通过Header管理器,那如果我想给不同的请求设置不同的Header呢?这里需要结合元件的作用域来设计,后续再讲解。


HTTP Cookie Manager(Cookie管理)

【Cookie管理器的作用】

1、自动管理Cookie

Cookie管理可以像Web浏览器一样存储和发送Cookie,如果一个HTTP请求的响应包含Cookie,那Cookie管理器会自动管理该Cookie,之后发往相同域名的请求,Cookie管理器会给这些请求自动带上Cookie。

Jmeter里每个线程都有自己的Cookie存储区(cookie storage area),因此一个Cookie只会在一个线程内使用。

Jmeter会检查自动管理的Cookie对将要发起请求的URL是否有效,如果要做跨域,就需要关闭Jmeter这种检查行为,通过设置jmeter.properties中的CookieManager.check.cookies=false来关闭。

自动管理的Cookie可以存储为线程的变量,通过设置jmeter.properties的 CookieManager.save.cookies=true,一个名为coo的Cookie存储的变量的名称为COOKIE_coo,之后可以通过${COOKIE_coo}来使用这个变量。要修改Cookie存储变量的前缀,可以通过修改jmeter.properties的CookieManager.name.prefix属性。


2、手动管理Cookie

这种方式添加的Cookie,会被所有的线程共享。

image.png


1 :名称和注释

2 :线程循环时,都会清除上一次线程存储的Cookie,可以理解为线程组内的每个线程循环执行固定次数时,原本都是用同一个Cookie,勾选这个选项后,每次循环都清除旧的Cookie,获取新的Cookie。

3 :使用线程组的配置来控制Cookie清理,即线程组的Same user on each iiteration选项,去掉勾选线程组的Same user on each iteration,再勾选3,组合可达到勾选2的效果。

4 :Cookie策略,默认是standard,这个不太明白作用,看官方文档也没看明白,每次我都是用默认值,只知道ignoreCookies是等同于忽略Cookie Manager。

5 :手动添加Cookie

image.png



HTTP Request Defaults(HTTP默认值)

HTTP请求默认值管理器,跟HTTP Request Sampler差不多,同名的参数都是同一个意思。点此查看采样器

这里需要注意的是,如果Request Defaults和Request Sampler同时设置了server name,那设置了server name的采样器使用自己本身的server name,没有设置的则使用Request Defaults中设置的server name,其他参数同理。