Jmeter数据库测试常用的主要有2个场景:1.造数,即 SQL Query 为update ;2.提取数据,即 SQL Query 为select 。
先就这2个进行说明,后续补充其他应用场景。
准备工作:
1.Jmeter下载安装完毕后,更新获取jmeter插件管理器的jar包 jmter plugins:
https://jmeter-plugins.org/install/Install/
2.更新所需要的监控组件,下载地址:https://download.csdn.net/download/qq_34195282/12740188
配置数据库连接信息:
3.创建JDBC Connection Configuration,配置信息:
Variable Name for created pool: 设置数据库连接的名称,需唯一,跟每个sampler的jdbc请求池的名称: Variable Name Bound to Pool 字段一致。所以如果有多个jdbc数据库请求时,建议把 JDBC Connection Configuration 放到 JDBC Request 下面。
Validation Query :
The list of the validation queries can be configured with jdbc.config.check.query property and are by default:
hsqldb | select 1 from INFORMATION_SCHEMA.SYSTEM_USERS | Oracle | select 1 from dual |
DB2 | select 1 from sysibm.sysdummy1 | MySQL or MariaDB | 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 |
Exasol | select 1 |
Database URL :
JDBC Driver class:
Connection Properties:(非必填项)
设置连接时的必要的属性,如oracle需设置:internal_logon=sysdba
其他字段的说明,可参照Jmeter的组件文档:
https://jmeter.apache.org/usermanual/component_reference.html#JDBC_Connection_Configuration
发起JDBC请求:
4.创建JDBC Request
Variable Name Bound to Pool:jdbc请求池的变量名称,跟 JDBC Connection Configuration,配置信息的 Variable Name for created pool 字段一致。
Query Type:
Select Statement
Update Statement - use this for Inserts and Deletes as well
Callable Statement
Prepared Select Statement ---- 带参数化的查询
Prepared Update Statement - use this for Inserts and Deletes as well ---- 带参数化的增删改操作
Commit
Rollback
Autocommit(false)
Autocommit(true)
Edit - this should be a variable reference that evaluates to one of the above
举个例子:
insert into students (name,age,gender,cls_id,birth,arts_or_sciences,height,weight) values (?,?,1,?,?,"sciences",?,?) ;
需要参数化的,用 ? 替代。
在下面的 Parameter values 字段,维护变量。也可以手动输入,组件文档有示例:https://jmeter.apache.org/usermanual/component_reference.html#JDBC_Request
我是自定义了用户参数,如图:
Parameter types:
参数类型,一般默认有以下几种:INTEGER, DATE, VARCHAR, DOUBLE (大小写都可以)
java写变量一般用int,在这里是不支持的,varchar(30) 这种格式也不支持,请参照jmeter的组件文档写。
Variable Names:
select 方式的查询结果,可以把返回的结果的列字段数据,在这里设置变量名称。返回值用作其他关联请求的value。
Result Variable Name:
如果指定,这将创建一个包含行映射列表的对象变量。 每个映射包含列名作为键,列数据作为值。用法:
columnValue = vars.getObject("resultObject").get(0).get("Column Name");
其他字段的说明,可参照Jmeter的组件文档:
https://jmeter.apache.org/usermanual/component_reference.html#JDBC_Request