• 14
  • 14
分享
  • Jmeter对数据库批量增删改查——软件测试圈
  • 饭团🍙 2021-02-24 15:49:07 字数 5228 阅读 1838 收藏 14

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

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

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

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

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

1.png

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

一、主要配置元件介绍

如图主要元件如下:

2.png

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

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

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

重要字段介绍

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

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

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

Connection Pool Configuration 、 Connection Validation by Pool 这两部分内容不需要更改,使用默认值即可Data base Connection Configuration(以MySQL数据库为例):

Database URL: jdbc:mysql://host[:port]/dbname ——>【数据库地址:jdbc:mysql://数据库主机名或IP地址:端口号/需要使用的库名】JDBC Driver class:com.mysql.jdbc.Driver【其他数据库跟进图一展示进行选择】

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

Password:数据库链接密码

3.png

  • 添加配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 语句返回的结果。

  • 添加察看结果树

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

  • 测试表名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;

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

4.png  

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

5.png

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

6.png

  • 添加配置元件——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

注意:

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

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

7.png

  • 添加取样器——JDBC Request

Variable Name Bound to Pool :test。

Query type:根据不同的SQL类型进行设置,其他字段根据实际情况进行填写。

  • 添加察看结果树

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

8.png

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

9.png

三、执行增删改查操作

  • 单个insert语句操作

共有元件及字段不变。

变更:JDBC Request—Query Type;

配置:Update Statement;

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

10.png

执行结果:

11.png

  • 多个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");

12.png

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

13.png

  • 单个Delete语句操作

共有元件及字段不变。

变更:JDBC Request—Query Type;

配置:Update Statement;

SQL1:delete from city where id=394;

14.png

执行结果:

15.png

  • 多个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;

         执行即可;

  • Update 操作:

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

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

16.png

执行即可;

  • 单个select 操作

共有元件及字段不变;

变更:JDBC Request—Query Type

配置:Select Statement

SQL1:select * from city where id >358;SQL2:select * from city where id = 342;

17.png

  • 多条SQL语句同时查询

共有元件及字段不变;

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

方法一:SQL;

select * from city where id = 358;select * from city where id = 342;

18.png

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

19.png

方法二: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 = ?;

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

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

 20.png

执行结果:

 21.png

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

使用场景:同一类型的数据,需要查询多条SQL1:select * from city where id = ? ;

配置文件数据展示如下:

 22.png

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

线程组:

23.png

JDBC Connection Configuration:

24.png

循环控制器:

25.png

CSV 数据文件设置:

26.png

引用的CSV文件:

27.png

JDBC Request:

28.png

执行结果:

29.png

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


作者:影动心定

原文链接:https://www.cnblogs.com/haoBo956/p/13837518.html



  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 1、什么是POM,为什么要使用它?POM是Page Object Model的简称,它是一种设计思想,而不是框架。大概的意思是,把一个一个页面,当做一个对象,页面的元素和元素之间操作方法就是页面对象的属性和行为,所以自然而然就用了类的思想来组织我们的页面。一般一个页面写一个类文件,这个类文件包含该页面的元素定位和业务操作方法。为了我们测试用例写的简单,清晰,我们很多时候在页面对象会封装很多业务操作方法,测试脚本只需要调用相关方法就可以。2、如果页面元素经常发生需求变化,你是如何做?采用POM思想。好处就是只要改一个页面,我就去修改这个页面对象的元素定位和相关方法,脚本不需要修改。3 在你做自动...
            13 12 1559
            分享
          • 思路流程信息收集服务器的相关信息(真实ip,系统类型,版本,开放端口,WAF等)网站指纹识别(包括,cms,cdn,证书等),dns记录whois信息,姓名,备案,邮箱,电话反查(邮箱丢社工库,社工准备等)子域名收集,旁站,C段等google hacking针对化搜索,pdf文件,中间件版本,弱口令扫描等扫描网站目录结构,爆后台,网站banner,测试文件,备份等敏感文件泄漏等传输协议,通用漏洞,exp,github源码等漏洞挖掘浏览网站,看看网站规模,功能,特点等端口,弱口令,目录等扫描,对响应的端口进行漏洞探测,比如 rsync,心脏出血,mysql,ftp,ssh弱口令等。XSS,SQL...
            7 8 17209
            分享
          •   一、简介  微软开源自动化测试工具Playwright,支持主流浏览器,包括:Chrome、Firefox、Safari 等,同时支持以无头模式、有头模式运行,并提供了同步、异步的 API,可以结合主流测试框架使用,并且支持浏览器端的自动化脚本录制等功能。  特点:  ·跨浏览器:Playwright 支持所有现代渲染引擎,包括Chromium、WebKit 和 Firefox;  · 跨平台:在 Windows、Linux 和 MacOS 上进行本地或 CI、无头或有头测试;  · 跨语言:在 TypeScript、JavaScript、Pytho...
            0 0 3516
            分享
          • 移动应用特点与传统的PC软件系统相比,移动应用开发成本相对低廉,具有很好的便携性,极高的碎片时间利用率,很强的用户粘性及忠诚度,尤其随着网络及智能移动设备的迅速发展,移动应用占据了用户日常生活的大部分,人们常说的“手机控”“低头族”也充分说明了移动应用发展前景的火爆。移动应用具有以下几个特点。1、应用场景多变有了移动应用,人们参与互联网活动不再局限于办公室、家庭或其他固定场所,随处可见的“低头族”足以说明移动应用的应用场景广泛。2、高便携性以手游为例,传统的游戏有端游、页游,都需在PC上运行,随着掌上游戏机的发展,渐渐地将游戏移植到便携设备上,发展至今非常火爆的手游,如王者荣耀、大话西游、部落...
            0 0 1723
            分享
          •   对于经常接触代码的人来说,git以及github并不陌生。但是对于刚接触git环境的人,尤其是对于测试人来说,使用起来还是有一定难度的。  我想大部人对于这块的疑问有可能存在下面的几点:  1.没有全局观,不理解每个工具实现的功能,也就是不理解原理,只知道直接照着网上的教程走,以至于出现问题,不知道如何解决。  2.有的资料是直接命令,有的是通过工具,也就是实现方式不唯一,不确定自己到底想要以什么方式实现。  3.不知道注意的点。缺少技巧,比如某个命令执行了,但是就是不生效,原因有可能是一类问题。  针对上面的问题,逐一简单介绍一下。  每个工具职责  pycharm  pycharm是p...
            15 15 1923
            分享
      • 51testing软件测试圈微信