相关文章推荐
骑白马的羽毛球  ·  22岁接手店铺,三年收益翻3倍,来看看这个义 ...·  2 年前    · 
绅士的水煮肉  ·  Latex设置字体大小及表格中的文字大小等_ ...·  2 年前    · 
小胡子的自行车  ·  Win11系统安装软件显示“无法打开此安装程 ...·  2 年前    · 
阳光的蚂蚁  ·  在NestedScrollView中用Rec ...·  2 年前    · 
讲道义的猴子  ·  RuntimeError: one of ...·  2 年前    · 
Code  ›  【JMeter系列-3】JMeter元件详解之配置元件开发者社区
https://cloud.tencent.com/developer/article/1698415
飘逸的煎饼果子
10 月前
云深i不知处

【JMeter系列-3】JMeter元件详解之配置元件

前往小程序,Get 更优 阅读体验!
立即前往
腾讯云
开发者社区
文档 建议反馈 控制台
首页
学习
活动
专区
工具
TVP
腾讯云架构师技术同盟
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP 腾讯云架构师技术同盟
返回腾讯云官网
云深i不知处
首页
学习
活动
专区
工具
TVP 腾讯云架构师技术同盟
返回腾讯云官网
社区首页 > 专栏 > 【JMeter系列-3】JMeter元件详解之配置元件

【JMeter系列-3】JMeter元件详解之配置元件

作者头像
云深i不知处
发布 于 2020-09-16 10:04:54
发布 于 2020-09-16 10:04:54
2.1K 0
举报
文章被收录于专栏: 测试基础

JMeter部分配置元件详解 JMeter提供了丰富的配置元件,常用的包括参数化配置元件、HTTP请求默认值、HTTP信息头管理器、计数器等,这些配置元件用于设置默认值和变量,提供给后面的sampler(取样器)使用。

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

是

示例,注意【Sharing mode】为All threads: file.txt中内容: 添加【Debug Sampler】后,设置线程组线程数为2,循环次数为2,运行脚本 查看结果树,4次运行结果依次是:

var1=a1 var2=b1 var3=c1 var1=a2 var2=b2 var3=c2 var1=a3 var2=b3 var3=c3 var1=a1 var2=b1 var3=c1 修改【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管理器参数详解:

    名称

    描述

    必须

    Name

    脚本中显示的这个元件的描述性名称

    否

    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请求一并提交到服务端。 经过实测,总结出规则如下:

    1. 当有多个信息头管理器,且不同的管理器内有名称相同的信息头条目存在时,顺序靠前的管理器的信息头条目会覆盖后面的; 例如上图,运行后,查看结果树:

      1. 当只有一个信息头管理器,但管理器内有名称相同的信息头条目时,会同时生效; 将上面脚本中的HTTP信息头管理器1禁用,再次运行脚本,查看结果树:

      5 Counter(计数器)

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

 
推荐文章
骑白马的羽毛球  ·  22岁接手店铺,三年收益翻3倍,来看看这个义乌小伙的经商路! - 知乎
2 年前
绅士的水煮肉  ·  Latex设置字体大小及表格中的文字大小等_51CTO博客_latex 表格字体大小
2 年前
小胡子的自行车  ·  Win11系统安装软件显示“无法打开此安装程序包……请确认这是一个有效的 Windows - Microsoft Community
2 年前
阳光的蚂蚁  ·  在NestedScrollView中用RecyclerView分页
2 年前
讲道义的猴子  ·  RuntimeError: one of the variables needed for gradient computation has been modified by an inplace operation?_python_Mangs-DevPres
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号