【Jmeter】Jmeter基础3-Jmeter元件介绍之配置元件

2.3、配置元件

  • 主要作用是为取样器提供预备数据,由取样器发出请求。

2.3.1、CSV 数据文件设置

  • 作用:从文件中读取数据,根据特定的符号切割成一个或多个变量放入内存中。
  • 参数说明:
    • 文件名:引用文件的地址,支持相对(建议)/绝对路径,相对路径根节点为JMeter启动目录%JMETER_HOME%\bin;
    • 文件编码:文件读取时的编码格式,如UTF-8
    • 变量名称:为空时,首行为变量名;设置值时,与文件中的参数一一对应;
    • 忽略首行:为True时从第二行开始读取;
    • 分隔符:参数分隔符,如果为\t,则参数用制表符分隔,建议用","
    • 是否允许带引号:如果为是,则引号引起来的参数当作一个参数处理,如:"lisi,18",75,则解析为lis,18和75两个参数;为否,则解析为"lisi、18"和75三个参数;
    • 遇到文件结束符再次循环:为是,则循环取值;为否,则参数不够用时,报<EOF>;
    • 遇到文件结束符停止线程:是,参数用完停止测试;否,不停止;当上一项为True时,此项无意义;
    • 线程共享模式:
      • 所有现场:参数文件对统一测试计划的所有线程共享
      • 当前线程组:只对当前线程组的线程共享;
      • 当前线程:仅当前线程获取;
  • 示例1(10个线程):未设置变量名称,文件不循环
    • CSV文件内容如下:

      id,name,age,gender
      1,zhangsan,18,F
      2,lisi,20,M
      3,wangwu,19,F
      4,zhaoliu,21,M
      
    • 设置如下,未设置变量名称,无论是否设置忽略首行,都会忽略首行,以首行为变量名称;文件取值结束后,值为<EOF>:

  • 示例2:文件同上,设置了变量名称,不忽略首行,文件取值循环:

  • 示例3:线程共享模式为所有现场(现场组1和2各10个线程):当线程组1取值完毕后(2_lisi),线程组2继续1的结束处开始取值(3_wangwu):

  • 示例4:线程共享模式为当前线程组,各个线程组独立取值,每个线程组都从第一个参数开始取值:

  • 示例5:线程共享模式为当前线程,线程组中的每个线程独立取值(修改线程组的线程数为5,循环次数为2),可以看到,每个线程组中的线程均独立取值:


2.3.2、HTTP信息头管理器

  • 支持用户添加或者重写HTTP请求头,多个信息头合并成一个信息头列表,跟随http请求一并提交到服务端

2.3.3、HTTP Cookie管理器

  • 自动关联同一线程组下的 Cookie,自动添加的 Cookie 仅支持同一线程组共享;
  • cookie不会出现在cookie管理器显示中,但可以在查看结果树中查看
  • 接收到的cookie在定义属性CookieManager.save.cookies=true后,可以存储为jmeter线程变量(修改bin目录下jmeter.properties文件),线程变量会加上默认前缀 "COOKIE_",如果要去掉默认前缀,需要定义属性 "CookieManager.name.prefix= (一个或多个空格)":

  • 参数说明:
    • 每次反复清楚cookies:勾选后,每次执行主线程组循环时,都会清除所有服务器定义的 cookie。在 GUI 中定义的任何 cookie 都不会被清除。
    • Use Thread Group configuration to control cookie clearing:勾选后,使用线程组配置来控制cookie清除。
    • 手动添加cookie(和浏览器中类似):
      • 名称:Cookie 名称,需要和原名称保持一致。
      • 值:Cookie 的值。
      • 域:Cookie 的作用域,如果不填这一项,则无法识别 Cookie 作用在哪个请求。
      • 路径:指定作用域的路径。
  • 示例1:添加cookie管理器,第二个请求自动携带第一个请求设置的cookies:

  • 示例2:禁用cookie管理器后,不再携带cookie:

2.3.4、HTTP缓存管理器

  • 作用:用于模拟本地浏览器生成缓存(如图片等),动态缓存(json,xml等)不在范围内。
  • 参数说明:
    • 参数1:勾选时每次迭代都会清空cache,重新下载资源,增加服务器压力
    • 参数2:同cookie管理器
    • 参数3:勾选后,会根据当前时间检查Cache-Control/Expires值。如果请求是GET请求,且时间戳未超期,则取样器立即返回,不从远程服务器请求URL,以模拟浏览器行为。
    • 参数4:最大存储项目,值越大,HTTP缓存管理器消耗内存越多。

2.3.5、HTTP请求默认值

  • 作用:用于设置HTTP请求取样器使用的默认值。
  • 参数说明
    • 协议:http请求协议类型,http或https
    • 服务器名称或IP:服务器名称或ip地址
    • 端口号:服务器端口号
    • 路径:目标url路径
    • 内容编码:编码方式,如:UTF-8
    • 参数:请求参数
    • 消息体数据:请求数据
  • 说明:如果取样器不设置参数,则使用默认值;如果取样器设置了参数,则屏蔽默认值。
  • 示例:将请求信息放在http请求默认值中,取样器默认使用默认值进行请求:


2.3.6、JDBC Connection Configuration

  • 作用:设置数据库连接配置,需要和JDBC Request配合使用。
  • 参数说明:
  • Variable Name Bound to Pool:绑定到池的变量名配置:
    • Variable Name for created pool:数据库连接池的名称,如果有多个JDBC Connection Configuration,则名称必须唯一,JDBC Sampler 使用它来标识要使用的配置。
  • Connection Pool Configuration:连接池参数配置,一般取默认值,可根据需要进行修改
    • Max Number of Connections:最大连接数;如果填了10,则最大连接10个线程
    • Max Wait (ms):最大连接时间,单位ms,超过改时间,则连接失败
    • Time Between Eviction Runs (ms):线程可空闲时间,单位毫秒;如果当前连接池中某个连接在空闲了该时间后仍然未使用,则关掉该连接。
    • Auto Commit:自动提交 sql 语句,如修改数据库时,自动commit。
    • Transaction Isolation:事务隔离级别,一般取默认值
    • Preinit Pool:立即初始化连接池;如果为 False,则第一个 JDBC 请求的响应时间会较长,因为包含了连接池建立的时间。
  • Connection Validation by Pool:验证连接池是否可响应
    • Test While Idle:当连接空闲时是否断开
    • Soft Min Evictable Idle Time(ms):连接在池中处于空闲状态的最短时间
    • Validation Query:一个简单的查询,用于确定数据库是否仍在响应;默认为 jdbc 驱动程序的 isValid() 方法,适用于许多数据库(Test While Idle 需配置为 True)
  • Database Connection Configuration:数据库连接配置
    • Database URL:数据库连接 URL,格式:jdbc:mysql://数据库IP地址:数据库端口/数据库名称
    • JDBC Driver class:JDBC驱动程序类,常见的如下:
    • Username:用户名
    • Password:密码
    • Connection Properties:连接属性
  • 示例(Mysql为例):
    • 连接数据库需要安装数据库驱动jar包,将jar包拷贝到Jmeter的lib目录下,然后重启jmeter:
    • 创建JDBC Connection Configuration,如下:
    • 创建JDBC Request,二者需要配合使用,Varibale Name of Pool...和JDBC Connection Configuration中的Variable Name for created pool一致,Result variable name为返回值引用变量名:
    • 数据库中的数据如下:
    • 执行Jmeter脚本,返回如下:


2.3.7、Java默认请求

  • 作用:可以开发一些个 java 自定义组件,结合 Java取样器,可以实现其它一些 Jmeter 原生支持不了的协议,如redis、kafka等。

2.3.8、随机变量

  • 作用:用于模拟随机数据
  • 参数说明:
    • 变量名称:生成的变量名
    • 输出格式:要使用的java.text.DecimalFormat格式字符串,如果未指定,则默认使用Long.toString()生成数字
    • 最小值:生成数字的最小值,必填
    • 最大值:生成数字的最大值,必填
    • 随机种子:随机数生成器的种子。如果将每线程设置为true使用相同的种子值,则每个线程将获得与每个Random类相同的值。如果未设置种子,则将使用Random的默认构造函数。非必填
    • 每线程(用户)?:如果为False,则生成器在线程组中的所有线程之间共享。如果为True,则每个线程都有自己的随机生成器
  • 示例:线程组中5个线程循环2次,添加取样器如下:
    • 每线程(用户)?未False时,结果如下,每个线程取值各不相同:
    • 每线程(用户)?未True时,结果如下,每个线程在同一次迭代中均取到了相同的值:

2.3.9、用户定义的变量

  • 作用:自定义变量,通过${变量名}引用
  • 示例:定义2个变量,运行取样器:


2.3.10、计数器

  • 作用:根据配置的开始值、最大值、递增值,计数器从开始值循环到最大值,然后重新开始,直到线程结束。
  • 参数说明:
    • Starting value:开始值
    • 递增:增量
    • Maximum value:最大值
    • 数字格式:要使用的java.text.DecimalFormat格式字符串
    • 引用名称:引用名称
    • 与每用户独立的跟踪计数器:如果不勾选此项,则计数器为全局计数器(所有用户共同参与)
    • 在每个线程组迭代上重置计数器:此选项仅在勾选与每用户独立的跟踪计数器时可用,如果选中此选项,则计数器将重置为每个线程组迭代的起始值。
  • 示例1:(5线程,2循环)不勾选与每用户独立的跟踪计数器,计数器为全局计数器:

  • 示例2:勾选与每用户独立的跟踪计数器,每线程单独计数:
  • 示例3:两项均勾选,每次迭代重新开始计数:
相关推荐
小码哥说测试19 小时前
软件测试技术之 GPU 单元测试是什么!
自动化测试·功能测试·测试工具·jmeter·单元测试·集成测试·postman
XXX-171 天前
7.Jmeter数据驱动(csv数据文件设置)+Jmeter数据库操作
软件测试·jmeter·接口测试
余额爆满4 天前
Java应用压测工具JMeter
jmeter
XXX-174 天前
6.接口测试加密接口(Jmeter/工具/函数助手对话框、Beanshell脚本)
软件测试·jmeter·接口测试
MYPM_AndyLiu4 天前
Codes 开源研发项目管理平台——敏捷测试管理创新解决方案
jmeter·接口测试·postman·缺陷管理·testlink·测试用例管理·开源免费测试理平台
LiBaylor4 天前
jmeter 录制APP脚本
jmeter
愿尽4 天前
接口测试从入门到精通项目实战
测试工具·jmeter
石油城诚恳的大白菜7 天前
jmeter设置全局token
jmeter
grumble47 天前
JMeter脚本开发
jmeter
暖阳与晚风7 天前
性能测试-jmeter脚本录制(十五)
jmeter