在jmeter 中测试数据库
首先要做的就是能够链接到数据库。分以下几步:
第一步:在测试计划中添加链接数据库的驱动。
oracle数据库驱动一般在安装目录:如下路径,
D:\app\product\11.2.0\dbhome_1\jdbc\lib
里面有:ojdbc6.jar ojdbc5.jar 也有可能是以12 14 这样的文件,这个要自己区分。
linux 上面的oracle目录大致相同。如果找不到可以找java开发人员要一个,这个驱动的版本要和数据库匹配,否则链接不成功。
找到上面的jar包后,拷贝一份出来,放到一个其他目录,待用。
在jmeter 的测试计划 ——》点击预览,添加驱动的jar包。
添加驱动这一步完成后,就需要添加一个线程组,
第二步:在线程组里面添加一个配置元件——》JDBC Connection Configuration
接着设置该配置元件。
变量池的名称:这里设置为 ora_scott 这个一定得写,后面配置JDBC请求是要使用。
事务隔离: 选择default
查询验证: select 1 from dual 一般用这个。 select 1 自己尝试下。报错就要再调下。
Oracle
Driver class oracle.jdbc.OracleDriver
Database URL jdbc:oracle:thin:@//host:port/service OR jdbc:oracle:thin:@(description=(address=(host={mc-name})(protocol=tcp)(port={port-no}))(connect_data=(sid={sid})))
database URL : jdbc:oracle:thin:@localhost:1521:ORCL --本机 端口1521 数据库SID :ORCL
JDBC Driver class :oracle.jdbc.driver.OracleDriver --// 加载驱动程序OracleDriver 这个一个类
username : --链接数据的用户名。
password : --链接数据库的密码。
这里的用户名,密码,是客户端登录的用户名和密码。
以上设置OK后,接下来就需要添加 JDBC Request 采样器。
绑定到池的变量名:ora_scott 就是刚刚在配置元件里面配置的。
sql query sql查询: 查询类型:
查询就选择 :select statement 直接写语句即可,末尾不加分号。
select * from emp where empno = 7369
更新: update statement 这里可以执行更新 和插入 、删除的 语句。insert into emptest(empno,job,hiredate,sal,comm) values(35,'CLERK',date'1980-12-07',999.99,null)
delete from emptest --删除表里面的数据
调用过程(即可以执行多条语句): callable statement
例子是声明的过程:
declare --声明的关键词
v_job varchar2(9); --声明的变量
begin --开始
v_job := 'cc'; --给变量赋值 :=
delete from emptest; --执行第一个语句 ,清空数据库
insert into emptest(empno,job,hiredate,sal,comm) values(35,v_job,date'1980-12-07',999.99,null); --执行第二个语句,插入数据
end; ----结束
这里可以执行多条语句,每条语句以;分号结尾,可以不声明declare ,但必须要写begin ..... end ;
使用占位符设置预处理数据:Prepared select statement
例子1: select * from emp where sal = ? Prepared value : 800 Prepared types :FLOAT 这个对应的是有小数的字段
例子2: select * from emp where empno = ? Prepared value : 7369 Prepared types: Integer 这个是整数
例子3:select * from emp where empno = ? and ename = ? Prepared value : 7369,SMITH Prepared types:Integer,Varchar 这个对应的是字符串
例子4:select * from emp where hiredate = ? Prepared value : 1980-12-17 Prepared types: date 这个对应的是日期
提交: commit
回滚 :rollback
输出变量名: var1, var2 如果查询的是* ,那var1 对应的就是第一个字段,var2 对应的就是第一个字段。这个设置又有什么用处呢?设置成功后,可以用Debug 采样器来看下输出的变量的值。
empno_#=14 ----查询返回结果的总条数
empno_1=7369 empno 就是输出的变量名, 1 就是第一条数据 _ 是链接符号,
empno_10=7844
empno_11=7876
empno_12=7900
empno_13=7902
empno_14=7934
empno_2=7499
empno_3=7521
empno_4=7566
empno_5=7654
empno_6=7698
empno_7=7782
empno_8=7788
empno_9=7839
看到以上的输出结果,要怎么用他呢? 加入咱们现在请求的是数据库里面保存用户名、密码的表,请求返回的字段就是 username, password 这2个字段,我们要用这2个字段做登录请求,那该怎么取出这2个字段的值呢?
这里就得用到控制器了:ForEach控制器。看看如下的设置,是不是有一种柳暗花明的感觉,突然就开朗了。这个就设置输出变量名,result_empno 这个可以用在其他的采样器中发送 请求了。
下面是使用上面输出的值,做了一个数据库的变量请求。这里以来就又多了一种参数的方式。因为这里的变量不仅可以再次请求数据库,还可以作为其他请求的参数使用。