基于Jmeter5.2.1
目录
这一节先介绍几个常用的配置元件。其他不算常用的后续再继续讲解。
CSV Data Set Config(参数化)
可以将一些固定的参数写入文件中,jmeter再读取,之后修改参数时直接修改文件就可以了
1 :名称和注释。
2 :和脚本同路径的话,只需要填写文件名,不同路径的话的话,需要填写全路径,点击Browse选择文件。
3 :文件编码,默认为ANSI,如果参数里有中文的话,就填写UTF-8,没有中文的话,不填写也行。
4 :参数名,以逗号分隔,和参数文件里的的参数顺序一一对应,脚本中直接以${参数名}使用。
【注意】Jmeter支持CSV文件的标头行,如果参数名为空,则读取CSV文件的标头行为参数名列表。
5 :是否忽略参数化文件的第一行,False是不忽略,4中的参数名不为空时才使用。
6 :参数文件里的分隔符,用来切割参数的,比如:
【举例】
参数化文件:
那么:a=123,b=456,789因为没有参数名对应,所以后续无法使用。
7 :是否允许参数化文件的参数带有双引号,False是允许,如果值带有双引号,那双引号也是参数的一部分,为True的话,会去掉首尾双引号。
【举例】
参数文件:
,7为True的话,a=123\456,b=789,7为False的话,a="123,b=456"。
8 :执行到文件末尾,是否从文件开始处重新读取,默认为True,表示从文件开始处重新读取。
9 :到达文件末尾时,线程是否终止,默认为False,表示到达文件末尾时,线程不会终止。
8和9需要配和使用
当线程组小于或等于参数文件的行数时,这两个值的设置其实没多大意义,保持默认值就可以了。
当线程组线程数大于参数文件行数时:
10 :设置是否线程共享
HTTP Header Manager(Header管理)
顾名思义,这个配置元件是用来管理HTTP Header的。
Jmeter支持多个Header管理器,同样的作用域下多个Header管理器是合并使用。
比如现在常见的利用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,会被所有的线程共享。
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
HTTP Request Defaults(HTTP默认值)
HTTP请求默认值管理器,跟HTTP Request Sampler差不多,同名的参数都是同一个意思。点此查看采样器
这里需要注意的是,如果Request Defaults和Request Sampler同时设置了server name,那设置了server name的采样器使用自己本身的server name,没有设置的则使用Request Defaults中设置的server name,其他参数同理。