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 | 每次线程组迭代时计数器将重置为初始值 |