jmeter之执行数据库测试计划
利用jmeter做接口测试时,有时后需要连接数据库,对数据进行查询验证或者数据准备等操作,需要添加
jdbc request
,以前也有使用过,不过没有对里面各项的配置详细了解过,以下根据jmeter用户手册进行学习总结
添加数据库测试计划步骤
-
按需下载对应数据库的驱动包,eg:mysql的数据驱动
mysql-connector-java-8.0.26.jar
-
添加一个测试计划,选择下载的驱动包所在路径
-
配置
JDBC Connection Configuration
,连接数据库 -
添加
jdbc request
JDBC Connection Configuration 配置
Variable Name for created pool
:连接池名称Max Number of Connections
:最大连接数,默认是0,必填Max Wait (ms)
:连接最大等待时间,必填Validation Query
:验证查询语句,可选Database URL
:数据库连接地址,必填- mysql:
jdbc:mysql://host[:port]/dbname
- postgre:
jdbc:postgresql://host[:port]/dbname
- sql server:
jdbc:sqlserver://host:port;DatabaseName=dbname
- oracle:
jdbc:oracle:thin:@//host:port/service
- mysql:
JDBC Driver class
:jdbc驱动类,必填- mysql:
com.mysql.jdbc.Driver
- postgre:
org.postgresql.Driver
- sql server:
com.microsoft.sqlserver.jdbc.SQLServerDriver
- oracle:
oracle.jdbc.OracleDriver
- mysql:
Username
:连接数据库用户,必填Password
:连接数据库密码,必填Connection Properties
:设置连接数据库的属性,可选
jdbc request设置
Variable Name of Pool declared in JDBC Connection Configuration
:连接池名称
Query Type
:执行类型
Select Statement
:执行查询语句Update Statement
:执行增删改语句Callable Statement
:Prepared Select Statement
:执行查询语句,可动态传入参数Prepared Update Statement
:执行增删改语句,可动态传入参数
Parameter values
:多个参数值以逗号分割,针对Prepared Select Statements 、 Prepared Update Statementor CallableStatement
类型时设置参数值
Parameter types
:参数类型,INTEGER, DATE, VARCHAR, DOUBLE
Variable Names
:对于Select statements, Prepared Select Statements or CallableStatement
执行类型的返回值,设置的值和查询返回的值一一对应
Result Variable Name
:返回查询对象,可通过columnValue = vars.getObject("resultObject").get(0).get("列名")
获取指定行,列的值
Query timeout(s)
:设置查询超时时间,单位是秒,默认值是0,表示不限制
Limit ResultSet
:限制返回结果的行数,默认值是-1,表示不限制,返回查询的所有结果
query type
-
update statement
-
select statement
-
Prepared Update Statement
执行的语句中以?
代替,值通过parameter values
传入
-
以上的查询类型测试了一下,选择
Callable Statement
均可执行
Parameter values
- 现有查询语句
select * from t1;
,查询结果是:
- 添加
jdbc request
Variable Names
和Result Variable Name
的使用
比如在beanshell 取样器
中的获取需要的值
Map data = (Map)(vars.getObject("r1").get(0)); //获取查询结果第一行的值
log.info("Result Variable Name的值"+data.get("name").toString()); //获取第一行中name的值
log.info("Variable Names的值v2_#:"+vars.get("v2_#")); //输出结果表示查询的行数
log.info("Variable Names的值v2_1:"+vars.get("v2_2")); //输出结果表示中对应列第二行的数据
- 打印的日志结果
2021-07-25 19:12:25,852 INFO o.a.j.u.BeanShellTestElement: Result Variable Name的值n1
2021-07-25 19:12:25,853 INFO o.a.j.u.BeanShellTestElement: Variable Names的值v2_#:5
2021-07-25 19:12:25,853 INFO o.a.j.u.BeanShellTestElement: Variable Names的值v2_1:n2