文章目录
前言
jmeter是不能直接操作数据库的,要有驱动程序而且得有足够的权限,驱动就是一个jar包(mysql-connector-java-8.0.18.jar)
一般放在jmeter安装路径的lib文件下。
一般数据库mysql和oracle用的比较多
jmeter数据库元件
JDBC Connection Configuration
在线程组下面添加JDBC Connection Configuration元件进行数据库的连接配置
jdbc:mysql://localhost:3306/test(test是自己创建的数据库的名字)
JDBC Request
创建一个JDBC Request(jdbc 请求)
连接数据库
驱动可以放在lib目录下也可以不放在lib目录在,在测试计划中自己导入驱动,放在lib目录下需要重新启动一次jmeter,否则会报错。
添加线程组、添加JDBC Connection Configuration、添加JDBC Request
在JDBC Request写入简单的查询语句来检测有没有连接成功。
添加查看结果树查看结果
如果查询出现报时区错误:Cannot create PoolableConnectionFactory (The server time zone value ‘�й���ʱ��’ is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.)
就在JDBC Connection Configuration的Database URL 自己写的URL后面加上?serverTimezone=UTC就可以了
再次执行就不会报时区错误,可以在结果树中看到查询结果,这样说明我们连接数据库成功
jmeter进行数据库insert、delete、updata、select操作
前面成功连接了数据库,接下来进行对数据的增删改操作
insert
单个insert操作
数据库里有一个class表,现在我们往里面插入数据
在JDBC Request中写入插入数据的sql语句,修改类型为 update statement
执行后查看数据库的表和结果树
多个insert操作
选择prepared update statement ,写入多条插入语句,已经插入的数据不能再插入。
直接执行还是会报错,我们需要在JDBC Connection Configuration的Database URL 自己写的URL后面加上&allowMultiQueries=true允许多条语句插入
?后面加参数,不同的参数用&符号拼接起来
执行结果查看结果树和数据库表格
insert参数化以及批量操作
利用函数助手生成自己想要的范围内的随机数进行参数化,另外也可以用csv去做参数化,在文件中获取数据
选择update statement,修改SQL语句
设置好参数化之后就可以设设置线程数来进行批量的参数化的insert操作
出现错误是因为我们的cno是随机生成的,但是cno是主键是唯一的,不能有一样的,最后一个生成了之前生成的数据,所以报错了
delete
与前面的步骤一样,添加线程组、添加JDBC Connection Configuration、添加JDBC Request、添加了查看结果树。
在JDBC Request中输入delete的SQL语句
执行后查看结果树和数据库的表
批量delete操作就不能利用随机函数,因为要删除的是确定的数据这是就利用csv来进行参数化批量删除
也可以利用SQL语句来进行批量删除,这就是SQL语句的熟练程度。
例如:delete from course where cname like “c%”,删除cname是以c开头的
或者利用between,< ,where 条件 等等进行批量删除
update
添加线程组、添加JDBC Connection Configuration、添加JDBC Request、添加了查看结果树。
在JDBC Request中输入update的SQL语句
有中文的话在JDBC Connection Configuration中的URL后面加入characterEncoding=UTF-8(跟自己的数据库的编码设置一样)
执行后查看结果
批量update也是可以利用csv,也可以使用SQL语句。修改成随机的内容的话也可以借助函数助手
但是利用函数助手所有的数据会全部改成一个随机的值,因为执行一条语句,要全部随机,就要利用csv和线程数设置
select
添加线程组、添加JDBC Connection Configuration、添加JDBC Request、添加了查看结果树。
在JDBC Request中输入select的SQL语句
执行操作查看结果树对比表格
select操作参数化
查询的数据必须是存在的,采用csv的方式来进行参数化
创建一个txt文档,写入要查询信息的相关数据
添加csv,选择自己创建的文件,设置变量
在JDBC Request的SQL语句中引用变量
设置线程组执行程序查看结果,显示几个单个的结果。
select多条语句查询
在JDBC Request中修改SQL语句,在JDBC Connection Configuration的Database URL 自己写的URL后面加上&allowMultiQueries=true
使用prepared select statement只会显示第一条查询语句的结果,改用callable statement会显示所有的结果
利用JDBC Request参数化
保存查询结果,一遍后面需要引用的时候来引用,也可以多个参数进行保存,相对应的就要写多个变量名,结合foreach等来引用
也可以把数据放在下面的result variable name里面来保存结果集
拿数据的方法就是 value=vars.getObject(“cname”).get(0).get(“cname”);(获得result里面的cname的第一个数据),写在Beanshell sampler中
拿到数据后就是把数据变成jmeter变量 vars.put(“cname”,value);之后引用${cname}