jmeter---jdbc协议脚本开发

jdbc协议脚本开发

  • 1.下载一个驱动
  • 2.添加JDBC Connection Configuration配置
  • 3.添加JDBC Request
    • 3.1用foreach对jdbc request的值处理
    • 3.2用beanshell对 jdbc result的值处理

1.下载一个驱动

JDBC
https://dev.mysql.com/downloads/

mysql-connector-java-5.1.46.jar放在ext的lib目录下就可以

2.添加JDBC Connection Configuration配置

添加–配置元件–JDBC Connection Configuration
jmeter---jdbc协议脚本开发_第1张图片

添加后展示5个部分,分别解释一下5个部分
jmeter---jdbc协议脚本开发_第2张图片
第一部分variable Name Bound to pool
Variable Name for created pool:数据库连接池的名称。
jmeter中一个测试计划可以有多个 JDBC Connection,要求名称不重复。

第二部分Connection pool Configuration连接池参数配置,保持默认
Max Number of Connections:连接池最大连接数(0表示线程不共享连接,每个线程都会获取连接,一般默认为0即可)
Max Wait(ms):连接池最大等待时间 ,默认10s,一般默认即可
Time Between Eviction Runs(ms):线程可空闲时间,若空闲超过该时间则关掉,默认1min
Auto Commit:自动提交sql语句(更新数据的操作,是否需要commit,true表示需要,false表示不需要)
Transaction isolation:事务隔离级别,一般保持默认即可
jmeter---jdbc协议脚本开发_第3张图片

第四部分Connection validation by Pool验证连接池是否可响应(测试用)
Test While Idle:当连接空闲时是否断开,true表示是,false表示否
Soft Min Evictable Idle Time(ms):连接池处于空闲状态的最短时间
Validation Query:简单的查询,用来验证数据库是否仍在响应,一般选择select 1

第五部分Database Connection Configuration数据库链接配置
Database URL:数据库链接,例如:jdbc:mysql://ip:port/dbname?,后可跟useUnicode=true&allowMultiQueries=true&characterEncoding=utf-8(用来支持多条sql、定义编码格式)
JDBC Driver class:数据库驱动,根据不同数据库选择,若是mysql,就选择com.mysql.jdbc.Driver
jmeter---jdbc协议脚本开发_第4张图片
常见的数据库链接url
数据库驱动、URL

数据库 驱动 url
MySQL com.mysql.jdbc.Driver jdbc:mysql://host:port/{dbname}
Oracle oracle.jdbc.driver.OracleDriver jdbc:oracle:thin:user/pass@//host:port/service
sqlServer $com.microsoft.sqlserver.jdbc.SQLServerDriver jdbc:sqlserver://host:port;databaseName=databaseName
PostgreSQL org.postgresql.Driver jdbc:postgresql:{dbname}

3.添加JDBC Request

线程组–添加–取样器–JDBC Request
展示三部分
jmeter---jdbc协议脚本开发_第5张图片

第一部分Variable Name Bound to Pool
Variable Name of Pool declared in JDBC Configuration ,与配置元件中设置的JDBC Connection Configuration中Variable Name for created pool一致,若不一致获取不到配置的参数

第二部分:SQL QUERY搜索类型
jmeter---jdbc协议脚本开发_第6张图片
Query Type(一般前三种就够用)
Select Satement 查询(将数据都查询出来)
jmeter---jdbc协议脚本开发_第7张图片
jmeter---jdbc协议脚本开发_第8张图片
问题:写了两条语句并未查询出两条语句
jmeter---jdbc协议脚本开发_第9张图片
jmeter---jdbc协议脚本开发_第10张图片

写了两条语句并未查询出两条语句的解决办法:将Query Type选择Callable Satement ,就可以展示两条数据
jmeter---jdbc协议脚本开发_第11张图片
jmeter---jdbc协议脚本开发_第12张图片
修改数据
jmeter---jdbc协议脚本开发_第13张图片
jmeter---jdbc协议脚本开发_第14张图片
在这里插入图片描述
Update Satement增删改
Callable Satement 包含
Prepared Select Satement预编译查询,语句条件字段值可以用占位符?(逗号分隔),选择这个时需要与后面的第三部分配合使用
一个占位符:
注意:假如数据库类型int ,Parameter types就只能是integer或bigint或varchar
jmeter---jdbc协议脚本开发_第15张图片

jmeter---jdbc协议脚本开发_第16张图片
jmeter---jdbc协议脚本开发_第17张图片
jmeter---jdbc协议脚本开发_第18张图片
两个占位符:
第三部分也要写两个值,第一个值赋给第一个占位符,第二个赋给第二个占位符
jmeter---jdbc协议脚本开发_第19张图片
Prepared Update Satement
commit
Rollback
AutoCommit (false)

查询完后怎么用?(将查询的内容存起来)
jmeter---jdbc协议脚本开发_第20张图片
jmeter---jdbc协议脚本开发_第21张图片
查询到的cid、caption字段传给Variable Names的cid、caption变量,在Result Variable Name中用result变量将结果保存起来
jmeter---jdbc协议脚本开发_第22张图片

3.1用foreach对jdbc request的值处理

若要遍历cid或caption的值可以用foreach操作,若要引用cid或caption都可以用${}引用
jmeter---jdbc协议脚本开发_第23张图片

jmeter---jdbc协议脚本开发_第24张图片
jmeter---jdbc协议脚本开发_第25张图片

jmeter---jdbc协议脚本开发_第26张图片

jmeter---jdbc协议脚本开发_第27张图片

3.2用beanshell对 jdbc result的值处理

假若将变量result写到Result Variable Name,用beanshell对result的值处理
jmeter---jdbc协议脚本开发_第28张图片
jmeter---jdbc协议脚本开发_第29张图片
log.info(“==========”+vars.getObject(“result”));用日志打印出获取到的cid的值
jmeter---jdbc协议脚本开发_第30张图片

jmeter---jdbc协议脚本开发_第31张图片

log.info(““+vars.getObject(“result”).size());用日志打印出对象有15个元素(cid)
jmeter---jdbc协议脚本开发_第32张图片
log.info(”
”+vars.getObject(“result”).get(0));用日志打印出对象第一个元素(cid)jmeter---jdbc协议脚本开发_第33张图片
log.info(“==========”+vars.getObject(“result”).get(5).get(“cid”));用日志打印出对象第5个元素的值
jmeter---jdbc协议脚本开发_第34张图片
如果要获取元素的值供后面使用,先转成String ,在vas.put到一个变量就可以用了
Object obj=vars.getObject(“result”).get(5).get(“cid”);
vars.put(“var”, obj.toString());
jmeter---jdbc协议脚本开发_第35张图片
jmeter---jdbc协议脚本开发_第36张图片

第三部分
Parameter values用于替换SQL语句中占位符?(逗号分隔)
Parameter types对应参数数据库中的类型(假如数据库类型int 就只能是integer,bigint、varchar)
Variable Names:sql执行后,结果保存到变量名列表(多个变量名用逗号分割)
Result Variable Name:保存SQL执行结果,每一行结果是一个包含列名的map
Query timeout(ms):查询超时时间,可以不填
Handle Results保存的结果集,保持默认即可

JDBC 预处理程序:可以做数据初始化
JDBC 后置处理程序:可以做数据的清理

你可能感兴趣的:(jmeter,java,测试工具)