JMeter常见配置元件说明

很多人对于jmeter处于一个初期使用状态,录制脚本然后回放,遇到什么样的问题再去查找资料,大多数的工具、元件、脚本都只是一知半解,当然我也一样哈哈哈哈

这篇文章主要就是简单的说明下jmeter常用的配置元件有哪些,分别是做什么的~

1 CSV Data Set Config(参数化)

参数化配置元件(以下简称CSV)能够在文件中读取一行数据,根据特定的符号切割成一个或多个变量放入内存中。相比于JMeter函数助手中提供的 __CSVRead()、__StringFromFile()函数,CSV使用更加简便。而且,CSV非常适合处理大量的数据,也适用于生成“随机值”、“唯一值”这张的变量。
JMeter支持数据被双引号括起,被双引号括起的数据允许包含分隔符,例如:a,b,"c,d"

这行数据被逗号分隔后将产生三个变量值,a、b、c,d

JMeter支持读取具有标题行(标题行的内容是列名称)的CSV文件,要启用此功能,要将【Variable Names】留空,并且提供正确的分隔符。

参数详解:

参 数描 述必 须
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、线程组各自独立,但每个线程组内各个线程(用户)唯一顺序取值;

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管理器参数详解:

名称描述必须
Name脚本中显示的这个元件的描述性名称
Clear Cookies each Iteration勾选此项后,每次执行主线程组循环时,都会清除所有服务器定义的cookie。在GUI中定义的任何cookie都不会被清除。
Cookie Policycookie管理策略。“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请求一并提交到服务端。
经过实测,总结出规则如下:

  1. 当有多个信息头管理器,且不同的管理器内有名称相同的信息头条目存在时,顺序靠前的管理器的信息头条目会覆盖后面的;


    例如上图,运行后,查看结果树:

  2. 当只有一个信息头管理器,但管理器内有名称相同的信息头条目时,会同时生效;

  3. 将上面脚本中的HTTP信息头管理器1禁用,再次运行脚本,查看结果树:

5 Counter(计数器)

计数器,可以在线程组任何位置创建,允许用户配置起点、最大值和增量。配置后,计数器将从起点循环到最大值,然后重新开始,直到线程结束。

计数器参数详解:

名称描述必须
Name脚本中显示的这个元件的描述性名称
Starting value计数器的起始值,默认为0
Increment每次迭代计数器的增量,默认为0,表示无增量
Maximum value

计数器最大值,到此值后将从起始值重新开始计数,默认

为LONG.MAX_VALUE

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控制器下的取样器都没有执行;

    6 Per Processors(前置处理器)

      用于在实际的请求发出之前对即将发出的请求进行特殊处理。例如,HTTP URL重写修复符则可以实现URL重写,当RUL中有sessionID 一类的session信息时,可以通过该处理器填充发出请求的实际的sessionID 。

    7 Post Processors(后置处理器)

      用于对Sampler 发出请求后得到的服务器响应进行处理。一般用来提取响应中的特定数据(类似LoadRunner测试工具中的关联概念)。例如,XPath  Extractor 则可以用于提取响应数据中通过给定XPath 值获得的数据。   

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

啊Sei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值