JMeter配置元件详解

目录
  • 1 CSV Data Set Config(参数化)
  • 2 HTTP Cookie Manager(cookie管理器)
  • 3 HTTP Request Defaults
  • 4 HTTP Header Manager(信息头管理器)
  • 5 Counter(计数器)

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

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

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

当只有一个信息头管理器,但管理器内有名称相同的信息头条目时,会同时生效;
将上面脚本中的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控制器下的取样器都没有执行;

到此这篇关于JMeter配置元件详解的文章就介绍到这了,更多相关JMeter 元件内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Jmeter环境搭建及安装步骤

    Jmeter是纯Java开发的, 能够运行Java程序的系统一般都可以运行Jmeter, 如:Windows. Linux. mac等. 由于是由Java开发,所以自然需要jdk环境. Windows下安装步骤如下: 第一步: 安装JDK, 必须JDK1.7以上, 推荐1.8版本 jdk下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html JDK一键安装,无需多讲,默认安装路径即可 环境配置:计算机>属性>

  • jmeter+ant+jenkins自动化测试环境配置搭建过程

    目录 ant下载及环境变量配置 1.ant下载 2.配置ant环境变量 3.检查配置成功与否 ant配置 1.将\apache-jmeter-3.3\extras下面的ant-jmeter-1.1.1的jar包到ant的lib目录 2.配置xml文件 3.修改jmeter下jmeter.properties配置 dos窗口运行脚本 测试报告 配置日期格式 jenkins中任务配置 1.jenkins中创建任务 2.任务配置 3.配置测试报告 构建任务 1.立即构建 2.查看报告 问题总结 一直想

  • Jmeter安装及配置教程详解

    目录 一.JMeter的安装配置过程 二.JMeter的运行和语言设置 一.JMeter的安装配置过程 安装配置过程: 第一步 安装JDK,配置JDK路径 到Oracle官方网站下载最新版本的jdk:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 这里使用的操作系统是Windows,选最后一个下载,下载完直接运行安装.安装完设置一下环境参数. JAVA_HOME:D:\Prog

  • ApacheJMeter压力测试工具使用安装教程

    目录 JMeter的使用 安装及设置 下载 启动 切换语言环境 简单使用 1.新建线程组 2.线程组配置 3.新建HTTP请求 4.配置HTTP请求 5.配置监听器 6.运行 JMeter的使用 安装及设置 下载 我们直接在官网点击Download Release进行下载,目前官网的最新版本是5.4.1. 我们直接选择apache-jmeter-5.4.1.zip直接下载即可 启动 我们将上一步中的压缩包进行解压,进入到下图所示文件目录,双击jmeter.bat即可,如下图所示: 双击双击jme

  • jmeter下载及安装配置教程(win10平台为例)

    我们希望看到随着开发人员利用插件架构的优势,JMeter的能力能够迅速扩展.将来开发的主要目标是使得JMeter尽可能地变成一个有用的回归测试工具,而不损失JMeter的压力测试能力 本文是在win10环境下安装使用jmeter,jmeter可以运行在多平台上Windows和Linux. 环境准备: java 1.8 jmeter 5.1.1 jmeter环境 jmeter环境依赖JAVA环境,需安装JDK1.8环境,JDK环境安装网上一大堆教程,我这里就不多说了,会另开一篇单独记录. jmet

  • JMeter配置元件详解

    目录 1 CSV Data Set Config(参数化) 2 HTTP Cookie Manager(cookie管理器) 3 HTTP Request Defaults 4 HTTP Header Manager(信息头管理器) 5 Counter(计数器) 1 CSV Data Set Config(参数化) 参数化配置元件(以下简称CSV)能够在文件中读取一行数据,根据特定的符号切割成一个或多个变量放入内存中.相比于JMeter函数助手中提供的 __CSVRead().__StringF

  • spring boot的maven配置依赖详解

    本文介绍了spring boot的maven配置依赖详解,分享给大家,具体如下: 我们通过引用spring-boot-starter-parent,添加spring-boot-starter-web 可以实现web项目的功能,当然不使用spring-boot-start-web,通过自己添加的依赖包也可以实现,但是需要一个个添加,费时费力,而且可能产生版本依赖冲突.我们来看下springboot的依赖配置: 利用pom的继承,一处声明,处处使用.在最顶级的spring-boot-dependen

  • Spark三种属性配置方式详解

    随着Spark项目的逐渐成熟, 越来越多的可配置参数被添加到Spark中来.在Spark中提供了三个地方用于配置: 1.Spark properties:这个可以控制应用程序的绝大部分属性.并且可以通过 SparkConf对象或者Java 系统属性进行设置: 2.环境变量(Environment variables):这个可以分别对每台机器进行相应的设置,比如IP.这个可以在每台机器的$SPARK_HOME/ conf/spark-env.sh脚本中进行设置: 3.日志:所有的日志相关的属性可以

  • Redis Sentinel服务配置流程(详解)

    1.Redis Sentinel服务配置 1.1简介 Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务: 监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常. 提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过API 向管理员或者其他应用程序发送通知. 自动故障迁移(Automatic failover): 当一个主服务器不

  • 关于react-router的几种配置方式详解

    本文介绍关于react-router的几种配置方式详解,分享给大家,具体如下: 路由的概念 路由的作用就是将url和函数进行映射,在单页面应用中路由是必不可少的部分,路由配置就是一组指令,用来告诉router如何匹配url,以及对应的函数映射,即执行对应的代码. react-router 每一门JS框架都会有自己定制的router框架,react-router就是react开发应用御用的路由框架,目前它的最新的官方版本为4.1.2.本文给大家介绍的是react-router相比于其他router

  • Linux 下FTP的安装与配置教程详解

    0.安装ftp的前置条件是关掉SElinux # vi /etc/selinux/config 修改 SELINUX=" disabled " ,重启服务器.若相同,则跳过此步骤. 1. 可先查看是否安装过vsftp # rpm -qa | grep vsftpd 则代表已经安装.可直接跳过步骤2 2 .安装 vsftp # yum install vsftp* Is this ok [y/N]: y 代表安装完成. 3. 对vsftp 进行配置 # /etc/vsftpd/vsftp

  • CentOS7+apache+php7+mysql5.7配置教程详解

    yum upgrade yum install net-tools 安装apache 关闭SELinux 编辑器打开 etc/selinux/config 文件,找到 SELINUX=enforcing 字段,将其改成 SELINUX=disabled ,并重启设备. yum -y install httpd mod_ssl 配置防火墙 firewall-cmd --permanent --add-port=80/tcp firewall-cmd --permanent --add-port=4

  • ThinkPHP 在阿里云上的nginx.config配置实例详解

    具体代码如下所示: # For more information on configuration, see: # * Official English Documentation: http://nginx.org/en/docs/ # * Official Russian Documentation: http://nginx.org/ru/docs/ user nginx; worker_processes auto; error_log /var/log/nginx/error.log;

  • hibernate5.2的基本配置方法(详解)

    目标:将Student实体对象加入数据库 1.首先需要下载三个东西:hibernate,slf4j,mysql. 2.分别取他们的包导入新建的项目中,我这里的版本是:hibernate-release-5.2.10里面lib目录下的required中的全部文件 slf4j-1.7.25下的受slf4j-nop-1.7.25.jar mysql的mysql-connector-java-5.1.42-bin.jar 3.在src下配置hibernate.cfg.xml(建议直接去文档复制然后改)

  • Mybatis 创建方法、全局配置教程详解

    总体介绍:MyBatis实际上是Ibatis3.0版本以后的持久化层框架[也就是和数据库打交道的框架]! 和数据库打交道的技术有: 原生的JDBC技术--->Spring的JdbcTemplate技术 这些工具都是提供简单的SQL语句的执行,但是和我们这里学的MyBatis框架还有些不同, 框架是一整套的东西,例如事务控制,查询缓存,字段映射等等. 我们用原生JDBC操作数据库的时候都会经过: 编写sql---->预编译---->设置参数----->执行sql------->

随机推荐