zoukankan      html  css  js  c++  java
  • Jmeter对数据库批量增删改查

    本文主要的内容是使用Jmeter对数据库进行数据的操作,包括单条语句的增删改查,多条语句的增删改查,本文主要介绍操作流程,关于流程的运作原理,对原理感兴趣的同学可自行查阅资料。

    首先需要准备一个数据库驱动Jar包【mysql-connector-java-bin.jar】可以直接百度下载,版本不建议特别低,jar包需要Jmeter引用才能使用,jar包引用如下:

    将jar放入Jmeter安装/解压文件路径:eg:D:apache-jmeter-5.0apache-jmeter-5.0lib下,需要重启Jmeter才能生效

    驱动包的作用:没有数据库驱动,就不能连接数据库,Jmeter在没有驱动的情况下链接数据库会报:no suitable jdbc driver 错误。

    以下是常见的数据库驱动:

     

    图一

    汉化Jmeter:打开JMeter解压/安装路径下的文件JMeter.properties,在#language=en下面添加:language=zh_CN保存文件,并重启JMeter。

    一:主要配置元件介绍(以下为增删改查操作的共有元件)

    如图主要元件如下:

     

    1、  添加测试计划:各个值直接默认就好,为空的地方也不用填

    2、添加线程组:各个值默认,为空的地方也不用填

    3、添加JDBC配置文件(JDBC Connection Configuration):

    重要字段介绍

    名称:设置的是该元件的名称,设置名称后【测试计划】树配置元件也会对应更改

    Variable Name Bound to Pool:数据库连接池的名称。可以有多个jdbc connection configuration ,每个可以起不同的名称,在Jmeter其他元件中只要需要用到数据库的连接信息,直接引用该变量的变量名即可。可以理解为如果Jmeter其他的元件要获取数据库的连接信息,可以通过这个名称进行获取。

    注意:变量的命名规范:命名要清晰,建议使用英文,便于引用。

    Connection Pool Configuration 、 Connection Validation by Pool 这两部分内容不需要更改,使用默认值即可

    Database Connection Configuration(以MySQL数据库为例):

    Database URL: jdbc:mysql://host[:port]/dbname ——>【数据库地址:jdbc:mysql://数据库主机名或IP地址:端口号/需要使用的库名】

    JDBC Driver class:com.mysql.jdbc.Driver【其他数据库跟进图一展示进行选择】

    Username:数据库名称,即用户名

    Password:数据库链接密码

     

    4、添加配JDBC Request 数据库请求

    重要字段解释:

    名称:同JDBC配置文件

    Variable Name Bound to Pool :引用JDBC Connection Configuration元件里面的参数值【test】写法两边保持一致即可,不需要使用${}进行引用。错误的不存在的参数不能被引用。

    Query type:必填,指SQL请求类型

    Select statement:查询语句类型(select),只支持一条查询语句,多条查询语句只执行第一条

    Update statement:更新语句类(insert,update,delete),只支持一条更新语句,多条更新语句只执行第一条

    Prepared Select statement:支持多条查询(select)语句,查询响应数据只展示第一条SQL的查询结果

    Prepared Update statement:支持多条更新(insert,update,delete)语句,响应数据展示多条更新提示

    Callable Statement:支持多条查询、更新(insert,update,delete,select)语句,响应数据展示展示多条数据更新结果。如果是多条select语句同时查询,建议使用Callable Statement,响应数据可以展示多条查询结果值

    Parameter values:填写参数的具体的值,或者参数的名称。可以利用此字段对SQL语句进行参数化

    Parameter types:指Parameter Values参数的数据类型,例如:integer,String,double类型

    Parameter values 和Parameter types:必须成对出现,且SQL语句中有多个参数,就必须有多少个parameter values 和Parameter types。

    Variable names:自己设置的变量名称,用于存放select操作返回的查询结果。有多个字段返回时,需用逗号隔开

    Result variable name:用于存放select操作返回的查询结果集

    Query timeout:查询超时时间

    Handle result set:定义如何处理由callable statements 语句返回的结果

    5、添加察看结果树

    在响应数据——Response Body :查看对数据库进行增删改查后的返回消息

    6、测试表名city,表结构如下:

    CREATE TABLE `city` (

      `id` bigint(11) NOT NULL AUTO_INCREMENT,

      `name` varchar(100) NOT NULL,

      `code` varchar(255) NOT NULL,

      `province_code` varchar(255) NOT NULL,

      PRIMARY KEY (`id`)

    ) ENGINE=InnoDB AUTO_INCREMENT=405 DEFAULT CHARSET=utf8;

    二:共有元件数据配置如下

            

    1、  添加测试计划:页面数据显示默认数值即可无需更改

     

    2、  添加线程组:页面数据显示默认数值即可无需更改

     

    3、添加配置元件——JDBC Connection Configuration数据库连接配置元件

    Variable Name Bound to Pool:test

    Connection Pool Configuration 、 Connection Validation by Pool:默认值

    Database Connection Configuration(以MySQL数据库为例):

    Database URL: jdbc:mysql://ip:3306/库名?characterEncoding=UTF-8&allowMultiQueries=true

    JDBC Driver class:com.mysql.jdbc.Driver

    Username:hjphXXX

    Password:XXXXX

    注意:

    A.【allowMultiQueries设置为true,就可执行多条sql语句,参数与参数之间连接需要使用“&”符号。使用场景:如果执行多条SQL语句就必须要加这个字段,否则会报错;执行一条SQL语句可以不用加这个字段】

    B.【characterEncoding=UTF-8:链接的数据库的编码格式,没有设置该字段,将不会转译中文字符】

     

    4、  添加取样器——JDBC Request

    Variable Name Bound to Pool :test

    Query type:根据不同的SQL类型进行设置

    其他字段根据实际情况进行填写

    5、  添加察看结果树

    请求为绿色表示执行成功,响应数据显示1 updates 即为一条更新数据执行成功

     

                       请求为红色表示执行失败,根据提示修改自己配置的数据,SQL直到成功

     

    三:执行增删改查操作

    1、  单个insert语句操作

    共有元件及字段不变

    变更:JDBC Request—Query Type配置:Update Statement

    SQL:insert into city (name,code,province_code) values ("北京市","500000","520000");

     

    执行结果:

     

    2、多个inset语句操作

    共有元件及字段不变

    变更:JDBC Request—Query Type配置:Prepared Update Statement

             SQL:

    insert into city (name,code,province_code) values ("城市1","510000","512023");

    insert into city (name,code,province_code) values ("城市2","510000","512023");

    insert into city (name,code,province_code) values ("城市3","510000","512023");

     

    查看执行结果:三条数据更新成功

     

    3、单个Delete语句操作

    共有元件及字段不变

    变更:JDBC Request—Query Type配置:Update Statement

    SQL1:delete from city where id=394;

     

    执行结果:

     

    4、  多个delete语句操作

    共有元件及字段不变

    变更:JDBC Request—Query Type配置:Prepared Update Statement

    方法一:利用where语句

    SQL1:delete from city where id in (388,399,320);  可以实现批量删除

    SQL2:delete from city where id > 381; 可以实现批量删除

    方法二:利用like 语句

    SQL:delete from city where name like "%五家%";

    方法三:利用 between and 语句

    SQL:delete from city where id between 385 and 390;

    方法四:执行多条SQL语句

    delete from city where id =358;

    delete from city where id =342;

    delete from city where id =210;

    delete from city where id =350;

             执行即可

    5、  Update 操作

    Update 的操作和Delete的操作是一样,所有的配置以及配置的值都与Delete相同,只是SQL不同

    SQL1:update city set name ="测试city" where ID = 381;

     

    执行即可

    6、  单个select 操作

    共有元件及字段不变

    变更:JDBC Request—Query Type配置:Select Statement

    SQL1:select * from city where id >358;

    SQL2:select * from city where id = 342;

     

    7、多条SQL语句同时查询

    共有元件及字段不变

    变更:JDBC Request—Query Type配置:Callable Statement

    方法一:SQL:

    select * from city where id = 358;

    select * from city where id = 342;

     

    执行结果:在此场景下Callable Statemen会显示多条查询结果如下图,而Prepared Select Statement值显示一条查询结果

     

    方法二:Select查询简单参数化

    JDBC Request配置:

    Query Type:Callable Statement

             Parameter value:410,411

             Parameter types:integer,integer

    select * from city where id = ?;

    select * from city where id = ?;

    第一个问号代表:第一个参数值

    第二个问号代表:第二个参数值

     

    执行结果:

     

    方法三:CSV进行多条select语句查询

    使用场景:同一类型的数据,需要查询多条

    SQL1:select * from city where id = ? ;

    配置文件数据展示如下:

     

    每一个配置文件设置如下:

    线程组:

     

    JDBC Connection Configuration:

     

    循环控制器:

     

    CSV 数据文件设置:

     

    引用的CSV文件:

     

    JDBC Request:

     

    执行结果:

     

    以上部分就是关于Jmeter对数据库增删改查操作的具体方法,Jmeter对数据库的操作灵活多变,方法较多,并没有统一的方法,达到最终的目的即可。

  • 相关阅读:
    【C#技术】一篇文章搞掂:LLBL
    【前端技术】一篇文章搞掂:JS
    dapper 分页根据时间条件查询时中的一个坑
    后台页面常用模板
    JMeter强大的性能测试工具
    批量生成xml文件数据C#实现
    asp.net mvc中用 log4net记录日志到数据库中
    asp.net mvc model attribute and razor and form and jquery validate 完美结合
    前端素材网站
    原生dapper中新增用户后根据用户id,在用户角色表中添加关联数据,事务处理
  • 原文地址:https://www.cnblogs.com/haoBo956/p/13837518.html
Copyright © 2011-2022 走看看