测试的过程中,我们经常要对数据库表数据进行查询、修改、添加等操作。在用 JMeter 做性能或者接口等测试时,也可以让 JMeter 连接数据库然后对数据库数据进行相关操作。下面先来学习如何使用 JMeter 连接 MySql 数据库进行操作。
一、创建测试
首先创建一个测试计划和线程组,然后在线程组下添加配置元件 JDBC Connection Configuration 。
二、设置数据库连接配置
接下来要对数据库连接的配置项进行设置。
Variable Name for created pool: 创建池的变量名 。这个变量在后面介绍的 JDBC Request 请求中用到。
Max Number of Connections: 池中允许的最大连接数。在大多数情况下,将其设置为零(0),这意味着每个线程都将拥有自己的池,其中只有一个连接,即线程之间不共享连接。如果您真的想使用共享池,那么将 max count 设置为与线程数量相同,以确保线程不会彼此等待。
Max Wait(ms):在试图检索连接的过程中超过了超时时间,则池会抛出一个错误 。
Time Between Eviction Runs (ms):在被逐出的时间间隔(ms)。在空闲对象驱逐线程之间运行的毫秒数。当非正的时候,就不会运行无用的对象驱逐线程(默认为"60000",1分钟) 。
Auto Commit:将自动提交或关闭连接到连接上 。
transaction isolation:事务隔离 。这个默认即可,具体用法暂时还没有研究过,会的可以分享一下。
Test While Idle :测试池的空闲连接 ,后面的验证查询将用于测试它。
Soft Min Evictable Idle Time(ms) :软Min可驱逐空闲时间(ms) 。在它有资格被闲置的对象驱逐者强制驱逐之前,一个连接可能闲置在池中,并且至少在池中存在空闲连接的额外条件,默认值为5000(5秒) 。
Validation Query :验证查询 。一个简单的查询,用来确定数据库是否仍在响应。 这个验证查询在池创建中使用,即使“空闲测试”建议查询只在空闲连接上使用,也可以验证它。
验证查询的列表可以配置 jdbc.config.check。查询属性,默认情况下:
hsqldb:select 1 from INFORMATION_SCHEMA.SYSTEM_USERS
Oracle:select 1 from dual
DB2:select 1 from sysibm.sysdummy1
MySQL:select 1
Microsoft SQL Server (MS JDBC driver):select 1
PostgreSQL:select 1
Ingres:select 1
Derby:values 1
H2:select 1
Firebird:select 1 from rdb$database
Database URL:数据库的JDBC连接字符串。格式:jdbc:mysql://host[:port]/dbname,称举个栗子:jdbc:mysql://127.0.0.1:3306/db_api。为了避免读取数据出现乱码,可以在前面基础上加上处理乱码的字符串,例如:jdbc:mysql://127.0.0.1:3306/db_api?useUnicode=true&characterEncoding=utf8。
JDBC Driver class :JDBC驱动程序类 。MySql 选择 com.mysql.jdbc.Driver,另外我们要把 mysql-connector-java.jar 包放到 JMeter/lib目录下,然后重启 JMeter 。
mysql-connector-java.jar 包下载地址:https://pan.baidu.com/s/14N4Beohy14SvKJziAHVSDg 密码:vmy3
下面列举一些数据库及其参数的实例:
MySQL
- Driver class:com.mysql.jdbc.Driver
- Database URL:jdbc:mysql://host[:port]/dbname
PostgreSQL
- Driver class:org.postgresql.Driver
- Database URL:jdbc:postgresql:{dbname}
Oracle
- Driver class:oracle.jdbc.OracleDriver
- Database URL:jdbc:oracle:thin:@//host:port/service ORjdbc:oracle:thin:@(description=(address=(host={mc-name})(protocol=tcp)(port={port-no}))(connect_data=(sid={sid})))
Ingress (2006)
- Driver class:ingres.jdbc.IngresDriver
- Database URL:jdbc:ingres://host:port/db[;attr=value]
Microsoft SQL Server (MS JDBC driver)
- Driver class:com.microsoft.sqlserver.jdbc.SQLServerDriver
- Database URL:jdbc:sqlserver://host:port;DatabaseName=dbname
Apache Derby
- Driver class:org.apache.derby.jdbc.ClientDriver
- Database URL:jdbc:derby://server[:port]/databaseName[;URLAttributes=value[;…]]
Username :连接数据库的用户名。
Password:连接数据库的密码。
三、连接数据库操作
设置完成后,接下来在线程组下创建一个 JDBC Request 请求。
1、查询操作
例如我们先来个查询语句。
运行脚本之前,我们先在 SQLyog 中查询看 table_api 表中有哪些数据?
接着在 JMeter 中添加一个查看结果树监听器,运行一次脚本。
从上面的结果可以看出,JMeter 已经成功操作了数据库,并且把 table_api 表的数据查询出来了,和在 SQLyog 中查询到的结果是一致的。
2、增加操作
下面往表内插入一行新数据。
运行脚本,查看结果。
从结果可以看出,插入数据也是没问题的。
3、修改操作
接下来,我们把隔壁老王的电话修改一下。
运行脚本,查看结果。
数据修改成功。
4、删除操作
最后,我们把隔壁老王的数据删除。
运行脚本,查看结果。
从查询结果看出,隔壁老王数据被删除,永远离开了我们。
以上就是 JMeter 连接 MySql 对数据库的一些操作,希望对大家有些帮助。