JMETER(四) - Config Element(配置元件)

配置元件
作用:配置元件(Config Element)提供对静态数据配置的支持,可以读取文件数据,设置公共请求参数,赋予变量值等。

CSV Data Set Config

CSV Data Set Config 用于从文件中读取行,并将它们拆分为变量。它非常适合处理大量变量,并且对于使用“随机”和唯一值进行测试也很有用。


参数说明

参数 描述
Filename 文件引用地址,可以使相对路径也可以使绝对路径
File encoding 读取参数文件用到的编码格式,一般是utf-8,保存文件最好也用uft-8.
Variable Names(comma-delimited) 参数名称,多的参数名用逗号隔开,将会与" 参数文件" 的参数对应
Ignore first line
( only used if Variable Names is not empty)
忽略CSV文件的第一行,仅当CSV文件中的变量名称不为空时才使用它
Delimiter(use‘\t’for tab) 分隔符,用来分割参数名称的分隔符,默认逗号,也可以用tab来分隔,
如果参数文件用tab分隔,在此应该填写\t
Allow quoted data? CSV文件是否应该允许引用值?,如果启用,则可以将值括在双引号中 ,
例如:参数文件中一行的数据“username,AAA”,111,
如果该选项选择是,那么拆分后的参数是:username,AAA与111
Recycle on EOF? 到达文件末尾时(EOF),是否从头开始重新读取文件?
选项为true时,读取从文件的第一行开始;
选项false,到达文件末尾时结束循环
(Jmeter 在测试执行过程中每次迭代会从参数文件中新取一行数据,从头遍历尾)
Stop thread on EOF? True停止测试,False不停止测试,
如果 Recycle 选项为false,并且 Stop Thread 为true,则到达EOF将导致线程停止。
Sharing mode 文件共享模式:
All threads: (默认)文件在所有线程之间共享。
Current thread group: 对于出现元素的每个线程组,每个文件打开一次。
Current thread: 为每个线程单独打开每个文件。
Identifier: 标识符- 共享相同标识符的所有线程共享同一个文件。
因此,例如,如果您有 4 个线程组,
您可以为两个或更多组使用一个公共 ID,以便在它们之间共享文件。
或者您可以使用线程号在不同线程组中的相同线程号之间共享文件。

如何使用CSV配置文件


假设要测试100个用户登录访问,那么可以将100个用户存放在CSV文件中,循环遍历读取,不用手动添加100个用户。具体步骤:

1、复制100个用户名和密码存放在CVS文件中,如果要设置表头作为区分,第一行可以写参数名称;
2、在JMETER中,设置好线程组和登录测试脚本;
3、在JMETER设置好的登录脚本下,添加CSV Data Set Config;
4、在CSV Data Set Config中导入设置好的文件路径,并设置必要参数;
5、设置监听器运行脚本查看结果。

CVS文件数据



JMETER脚本文件


获取从文件读取的参数值


中文乱码问题

在获取参数值时,如果是中文,可能会显示乱码;

1、在保存文件的时候,注意如果用记事本保存,另存为设置选择编码UTF-8

2、如果用Excel保存文件,选择对应的CSV文件类型

3、如果还是不行,将CSV Data Set Config配置文件中编码修改为 GB2312(我在测试时必须设置这个编码,才不会乱码)

HTTP Request Defaults

实际测试中有多个请求都发送同一服务器,且参数与配置重复,可以添加一个请求默认值,一次设置多个请求一起使用


HTTP Cookie Manager

HTTP Cookie Manager有两个功能:
1、它像Web浏览器一样存储和发送cookie。如果您有一个 HTTP 请求并且响应中包含一个 cookie,则 cookie 管理器会自动存储该 cookie,并将在以后对该特定网站的所有请求中使用它。每个 JMeter 线程都有自己的“cookie 存储区。自动存储的cookie不在Cookie管理器显示,但可以使用查看结果树查看

JMeter 检查收到的 cookie 是否对 URL 有效。这意味着不会存储跨域 cookie,如果您有错误行为或希望使用跨域 cookie,请定义 JMeter 属性 “ CookieManager.check.cookies=false ”。

接收到的 Cookie 可以存储为 JMeter 线程变量。要将 cookie 保存为变量,请定义属性“ CookieManager.save.cookies=true ”

2、您可以手动向 Cookie 管理器添加 cookie。但是,如果您这样做,cookie 将被所有 JMeter 线程共享

默认情况下会忽略 具有空值的Cookie 。这可以通过设置 JMeter 属性来更改:CookieManager.delete_null_cookies=false。请注意,这也适用于手动定义的 cookie - 任何此类 cookie 将在更新时从显示中删除。另请注意,cookie 名称必须是唯一的 - 如果使用相同名称定义了第二个 cookie,它将替换第一个。

参数说明

Clear Cookies each Iteration:每次迭代清除Cookie(每次线程组运行时,都会清除 cookie)

Cookie Policy: Cookie策略 standard 是默认值自3.0以来,ignoreCookies 相当于省略 CookieManager,compatibility,兼容性

User-Defined Cookies:

参数 说明
Name 响应体cookie中的参数名称
Value 响应体cookie中的参数值(可能需要正则表达式来关联取得)
Domain 用于指定cookie所在的域名,填写IP或域名 服务器域名(不携带http://);
当前端口port被忽略 ,注意域名一定要写,否则不起作用,即不会随着请求发送
Secure 可不勾选

HTTP Header Manager

HTTP信息头管理器可以用来管理取样器的header进行管理。实际操作功能的过程中,使用浏览器或者抓包工具查看实际请求的Request Headers作为参考


HTTP Cache Manager

HTTP Cache Manager 用于为其范围内的 HTTP 请求添加缓存功能,以模拟浏览器缓存功能。每个虚拟用户线程都有自己的缓存

参数说明


Clear cache each Iteration:每次迭代清除缓存
Use Cache Control/Expires header when processing GET requests:处理 GET 请求时使用缓存控制/过期标头
Max Number of elements in cache:缓存中的最大元素数


JDBC Connection Configuration

Jmeter支持直接连接数据库,对SQL语句进行性能测试,JDBC Connection Configuration
用来配置连接信息。

参数说明:

--

Variable Name Bound to pool(绑定到池的变量名)

参数 说明
Variable Name for created pool 已创建池的变量名(连接所关联的变量的名称。可以使用多个连接,
每个连接到一个不同的变量,允许 JDBC Samplers 选择合适的连接)

Connection Pool Configuration(连接池配置)

参数 说明
Max Number Of Connections 最大连接数,建议填0,如果是10,则最大连接10个线程
Max Wait(ms) 在连接池中取回连接的最大等待时间(如果在尝试检索连接的过程中超过超时时间,
池会抛出错误,请参阅BasicDataSource.html#getMaxWaitMillis)
Time Between Eviction Runs(ms) 线程可空闲时间(毫秒)
Auto Commit 自动提交(为连接打开或关闭自动提交)
Transaction Isolation 事务隔离(事务隔离级别))
Preinit Pool 预初始化连接池(连接池可以立即初始化。如果设置为False(默认值),
则第一个JDBC请求响应的时间会较长——因为包括整个池的连接建立时间 不是必须的)
Init SQL statements separated by new line 以换行符分隔的初始化 SQL 语句

Connection Validation by Pool(通过连接池验证连接)

参数 描述
Test While Idle 当连接空闲时是否断开
Soft Min Evictable Idle Time(ms) 连接在池中处于空闲状态的 最短时间
Validation Query 验证查询(在将连接返回给调用者之前,将用于验证来自该池的连接的 SQL 查询。
如果指定,此查询 必须是至少返回一行的 SQL SELECT 语句。如果未指定,连接将通过调用 isValid() 方法进行验证。)

Database Connection Configuration(数据库连接配置)

参数 描述
Database URL 数据库连接URL
JDBC Driver class 数据库驱动
Username 数据库用户名
Password 数据库密码
Connection Properties 建立连接时要设置的连接属性

常见数据库连接URL驱动:

常见数据库连接URL驱动:
MySQL com.mysql.jdbc.Driver jdbc:mysql://host:port/
Oracle oracle.jdbc.driver.OracleDriver jdbc:oracle:thin:user/pass@//host:port/service

https://jmeter.apache.org/usermanual/component_reference.html#JDBC_Connection_Configuration
数据库配置详情:https://commons.apache.org/proper/commons-dbcp/configuration.html

此池创建的连接的默认 TransactionIsolation 状态。以下之一:(请参阅 javadoc)
• NONE
• READ_COMMITTED
• READ_UNCOMMITTED
• REPEATABLE_READ
• SERIALIZABLE


实际应用:
与JDBC Request一起使用
1、首先要下载一个数据库jar包,放在jmeter的lib路径下
JDBC Request请求

参数说明:

参数 描述
Variable Name of Pool declared in
JDBC Connection Configuration
JDBC连接配置中声明的池的变量名。这必须与“ JDBC Connection Configuration.”的“Variable Name”字段一致
Query Type 查询的类型
SQL Query 填写SQL语句
Parameter values 参数值,逗号分隔的参数值列表
Parameter types 参数类型,逗号分隔的 SQL 参数类型列表(例如INTEGER、DATE、VARCHAR、DOUBLE)或常量的整数值。
Variable Names 变量名
Result Variable Name 结果变量名(如果指定,这将创建一个包含行映射列表的对象变量。每个映射包含列名作为键和列数据作为值)
Query timeout(s) 查询超时
Limit ResultSet 限制结果集(限制遍历 ResultSet 的行数)空值意味着-1
Handle ResultSet 处理结果集(定义如何处理从可调用语句返回的 ResultSet)

Handle ResultSet类型

  • Store As String (default) :变量名列表上的所有变量都存储为字符串
  • Store As Object:变量名称列表上ResultSet类型的变量将存储为 Object 并且可以在后续测试/脚本中访问和迭代,不会迭代ResultSet
  • Count Records:ResultSet类型的变量将通过显示记录计数作为结果进行迭代。变量将存储为字符串

JDBC请求和JDBC配置连接设置完成后,运行结果可在查看结果树中查看


Random Variable(随机变量)

该元件能够生成随机数据,且可以指定输出格式,我们可以把它与字母组合在一起来代替业务单据编号,比如想要生成一个客户编号,格式如CUST_XXXX,那么我们就可以用此元件来完成,它比将用户定义变量与__Random()函数一起使用更简单。

参数说明:

参数 说明
Variable Name 生成的随机数保存到此变量中
Output Format 变量输出格式
Minimum Value 随机数最小值
Maximum Value 随机数最大值
Seed for Random function 随机数种子
Per Thread(User)? 生成的随机变量是否在线程中共享?

注:使用该元件,生成的随机数可能会重复

Counter(计数器)

测试执行过程中会记录迭代次数,循环递增生成数字 计数器将从开始循环到最大值,然后从开始重新开始,如此继续直到测试结束

参数说明:

参数 说明
Starting value 计数器的起始值。计数器将在第一次迭代期间等于该值(默认为 0)
Increment 增量,每次迭代后计数器增加多少(默认为 0,表示不增加)
Maximum value 如果计数器超过最大值,则将其重置为起始值
Number Format 可选格式,例如000将格式化为001、002、USER_000等,默认是1,2…
Exported Variable Name 计数器值可用的变量名称,可供其他元件调用,
Track Counter Independently for each User 为每个用户独立跟踪计数器,每个线程都有自己的计数器,相互不干扰。(每个线程的计数都从初始值开始)
Reset counter on each Thread Group Iteration 每次线程组迭代时计数器将重置为初始值
posted @ 2021-12-12 12:24  萧兮易  阅读(588)  评论(0编辑  收藏  举报