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脚本,返回如下:
- 连接数据库需要安装数据库驱动jar包,将jar包拷贝到Jmeter的lib目录下,然后重启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时,结果如下,每个线程在同一次迭代中均取到了相同的值:
- 每线程(用户)?未False时,结果如下,每个线程取值各不相同:
2.3.9、用户定义的变量
- 作用:自定义变量,通过${变量名}引用
- 示例:定义2个变量,运行取样器:
2.3.10、计数器
- 作用:根据配置的开始值、最大值、递增值,计数器从开始值循环到最大值,然后重新开始,直到线程结束。
- 参数说明:
- Starting value:开始值
- 递增:增量
- Maximum value:最大值
- 数字格式:要使用的java.text.DecimalFormat格式字符串
- 引用名称:引用名称
- 与每用户独立的跟踪计数器:如果不勾选此项,则计数器为全局计数器(所有用户共同参与)
- 在每个线程组迭代上重置计数器:此选项仅在勾选与每用户独立的跟踪计数器时可用,如果选中此选项,则计数器将重置为每个线程组迭代的起始值。
- 示例1:(5线程,2循环)不勾选与每用户独立的跟踪计数器,计数器为全局计数器:
- 示例2:勾选与每用户独立的跟踪计数器,每线程单独计数:
- 示例3:两项均勾选,每次迭代重新开始计数: