通过案例带你轻松玩转JMeter连载(27)

2021-11-12 14:48:16 浏览数 (1)

6.4 配置元件 1 CSV Data Set Config CSV Data Set Config是用来做参数化的常用元件。通过右键点击菜单,选择“添加->配置元件->CSV Data Set Config”而获得。其界面如图41所示。

图41 CSV Data Set Config

  • 设置CSV数据文件

Ø 文件名:csv文件的名称。可以点击右侧的浏览按钮选择文件,会自动带上文件的绝对路径。为了维护方便,建议使用相对路径。比如csv文件为user.dat,把它放在测试的jmx文件下的data文件夹下,文件名中输入“data/user.dat”。 Ø 文件编码:csv文件的编码格式。默认使用当前操作系统的编码格式。如果文件中包含中文字符,建议使用utf-8。 Ø 变量名(西文逗号间隔):csv文件中各列的名字(有多列时,用英文逗号隔开列名)。名字顺序要与内容对应,这个变量名称是在其他处被引用的,所以为必填项。 Ø 分割符(使用"t"替代制表符):csv文件中的分隔符(用"t"替代Tab键)。一般情况下,分隔符为英文逗号。 Ø 是否允许带引号?:是否允许数据内容加引号。默认为False。如果数据带有双引号且此项设置True,则会自动去掉数据中的引号使能够正常读取数据,且即使引号之间的内容包含有分隔符时,仍作为一个整体而不进行分隔。如果此项设置为False,则读取数据报错。如果希望字段中含有双引号,那么用两个双引号来代替一个双引号。比如:此项设置为true时,"2,3"表示:2,3;"4""5"表示:4"5。 Ø 遇到文件结束再次循环?:到了文件的结尾是否循环。默认为True。True表示继续从文件第一行开始读取;False表示不再循环。此项与下一项的设置为互斥关系。 Ø 遇到文件结束停止线程?:到了文件尾是否停止线程,默认为False。True表示停止;False表示不停止。注意:当遇到文件结束再次循环设置为True时,此项设置无效。 仍旧以第4.1节的测试参数化数据作为例子,里面有五行数据,分别为。

代码语言:javascript复制
linda,knyzh158
cindy,123456
jerry,654321
susan,qwert
peter,zxcvb

设置循环控制器的循环次数为5。商品列表HTTP请求的名称为“商品列表${username}”。运行后察看结果树得到图42所示。5个数据被顺序了5次。

图42 循环次数为5

图43 循环次数为5,遇到文件结束再次循环?为True 将循环次数改为8,选择遇到文件结束再次循环? 为True。运行后察看结果树得到图43所示。第6次使用第1条数据;第7次使用第2条数据;第8次使用第3条数据。 仍旧保持循环次数改为8,选择遇到文件结束再次循环?为False;选择遇到文件结束停止线程?为False。运行后察看结果树得到图44所示。获取了5条数据,由于选择遇到文件结束不停止线程,所以最后一条数据出现错误。

图44 循环次数为5,遇到文件结束再次循环,选择遇到文件结束不停止线程

选择遇到文件结束停止线程?为True。运行后察看结果树得到图45所示。获取了5条数据,由于选择遇到文件结束停止线程,所以循环了5次就结束了。

图45 循环次数为5,遇到文件结束再次循环,选择遇到文件结束停止线程

Ø 线程共享模式。 √ 所有现场:所有线程,此元件作用范围内的所有线程共享csv数据,每个线程依次读取csv数据,互不重复。 √ 当前线程组,在此元件作用范围内,以线程组为单位,每个线程组内的线程共享csv数据,依次读取数据,互不重复。 √ 当前线程,在此元件作用范围内,每次循环中所有线程取值一样。 2 JDBC连接设置 JMeter访问数据库主要通过JDBC 连接设置和JDBC Request两个元件来完成。JDBC 连接设置通过右键点击菜单,选择“添加->配置元件->JDBC Connection Configuration”。如图46所示。

图46 JDBC Connection Configuration

Database Connection Configuration设置数据可连接,可以支持MySQL、PostgreSQL、Oracle、Ingres (2006)、MSSQL等多个数据库。首先要把对应数据库的JDBC jar文件拷贝到%JMETER_HOME% libext目录下,并且重新启动JMeter。

  • Variable Name for created pool:自定义数据库连接池的变量名,必须与JDBC Request的Variable name of Pool保持一致。
  • Max Number of Connections:该数据库连接池的最大连接数, 0表示每个线程都使用单独的数据库连接,线程之间数据库连接不共享。默认值为:0。
  • Max Wait:最大等待时间,如果超过这个时间,请求结果还没有返回,系统会报超时错误。默认值为:10000。
  • Time Between Eviction Runs (ms):疏散时间,在空闲对象驱逐线程运行期间,可以休眠的毫秒数。当值为非整数的时候,将运行无空闲对象驱逐器线程。如果当前连接池中某个连接在空闲了Time Between Eviction Runs Millis时间后任然没有使用,则被物理性的关闭掉。默认值为默认值:60000,即1分钟。
  • Auto Commit :自动提交SQL语句,有三个选项:true、false、编辑。默认值为True。
  • Transaction Isolation:事务间隔级别设置,主要有下面几个选项。

Ø TRANSACTION_NODE:事务节点。 Ø TRANSACTION_READ_UNCOMMITTED:事务未提交读。 Ø TRANSACTION_READ_COMMITTED :事务已提交读。 Ø TRANSACTION_SERIALIZABLE:事务序列化。 Ø DEFAULT:默认。 Ø TRANSACTION_REPEATABLE_READ:事务重复读。 Ø 编辑。

  • Test While Idle :当空闲的时候测试连接是否断开,默认为True。
  • Soft Min Evictable Idle Time(ms):最少的时间连接可能在池中闲置,然后才有资格被闲置的对象驱逐出去,额外的条件是至少在池中保持连接。默认值为5000,即5秒。
  • Validation query:测试连接是否有效的查询语句,这是JMeter用来检验数据库连接是否有效的一种机制,超过5秒没有使用的话,就会用validation query去测试下这个连接是否有效。默认为空。

一般情况下,以上部分,除了Variable Name for created pool需要单独设置外,其他均可使用默认值。

  • Database Connection Configration。数据库连接属性中的Database URL和JDBC Driver

class根据数据库设置不同。参见表1所示。 表1 根据数据库不同,设置Database URL和JDBC Driver class

数据库

Database URL

JDBC Driver class

MySQL

jdbc:mysql://host:port/{dbname}

com.mysql.jdbc.Driver

PostgreSQL

jdbc:postgresql:{dbname}

org.postgresql.Driver

Oracle

jdbc:oracle:thin:user/pass@//host:port/service

oracle.jdbc.driver.OracleDriver

Ingres (2006)

jdbc:ingres://host:port/db[;attr=value]

com.ingres.jdbc.IngresDriver

MSSQL

jdbc:sqlserver://IP:1433;databaseName=DBname

com.microsoft.sqlserver.jdbc.SQLServerDriver

Ø Username:连接DB的用户名

Ø Password:连接DB的密码 3 计数器 计数器允许用户创建可在线程组中的任何位置引用的计数器。计数器配置允许用户配置起点、最大值和增量。计数器将从开始循环到最大值,然后从开始重新开始,这样继续,直到测试结束。计数器使用长字符存储值,因此范围为-2^63到2^63-1。 设置通过右键点击菜单,选择“添加->配置元件->计数器”。如图47所示。

图47 计数器

  • Srtart value:计数器的起始值。在第一次迭代期间,计数器的值(默认值为0)。
  • 递增:每次迭代后计数器的增量(默认为0,表示无增量)。
  • Maxium value:计数器最大值。如果计数器超过最大值,则将其重置为起始值。默认值为Long.MAX_VALUE值。
  • 数字格式:例如000将格式化为001、002等。这将传递给DecimalFormat,因此可以使用任何有效格式。如果在解释格式时出现问题,则忽略它(默认格式是使用Long.toString()生成的)。
  • 应用名称:计数器值可用的变量名。
  • 为每个用户独立的跟踪计数器:换句话说,这是一个全局计数器,还是每个用户独有的计数器?如果没有选中,则计数器为全局计数器(即:用户1将获得值“1”,用户2将在第一次迭代中获得值“2”)。如果选中,则每个用户都有一个独立的计数器。
  • 为每个线程组迭代上重置计数器:此选项仅在每个用户跟踪计数器时可用,如果选中此选项,计数器将重置为每个线程组迭代的起始值。

0 人点赞