Jmeter对数据库批量增删改查

news2024/11/16 2:35:50

目录

前言:

一、主要配置元件介绍

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


前言:

JMeter可以通过JDBC请求实现对数据库的批量增删改查。JDBC请求模拟了一个JDBC请求,它是连接池中的一个虚拟用户。JDBC请求可以定义SQL语句和预编译参数,以执行数据库增删改查操作。

首先需要准备一个数据库驱动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 错误。

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

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

一、主要配置元件介绍

如图主要元件如下:

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

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

  • 添加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:数据库链接密码

  • 添加配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;

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

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

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

  • 添加配置元件——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:链接的数据库的编码格式,没有设置该字段,将不会转译中文字符】。

  • 添加取样器——JDBC Request

Variable Name Bound to Pool :test。

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

  • 添加察看结果树

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

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

三、执行增删改查操作

  • 单个insert语句操作

共有元件及字段不变。

变更:JDBC Request—Query Type;

配置:Update Statement;

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

执行结果:

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

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

  • 单个Delete语句操作

共有元件及字段不变。

变更:JDBC Request—Query Type;

配置:Update Statement;

SQL1:delete from city where id=394;

执行结果:

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

执行即可;

  • 单个select 操作

共有元件及字段不变;

变更:JDBC Request—Query Type

配置:Select Statement

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

  • 多条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对数据库的操作灵活多变,方法较多,并没有统一的方法,达到最终的目的即可。

 作为一位过来人也是希望大家少走一些弯路,希望能对你带来帮助。(WEB自动化测试、app自动化测试、接口自动化测试、持续集成、自动化测试开发、大厂面试真题、简历模板等等),相信能使你更好的进步! 

留【自动化测试】即可【自动化测试交流】:574737577(备注ccc)icon-default.png?t=N4P3http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=_IjHegeJ1FQnPeEKrMSmI4m8d-jOK2vN&authKey=QNcmDg0w07hxmEQGYswEgLBvrgH2VarqHkIDjZHQg2LOd4OtWxrw4pjErW9M5Gkc&noverify=0&group_code=574737577

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/637467.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【100个高大尚求职简历】简历模板+修改教程+行业分类简历模板 (涵盖各种行业) (简历模板+编辑指导+修改教程)

文章目录 1 简历预览2 简历下载 很多人说自己明明投了很多公司的简历,但是都没有得到面试邀请的机会。自己工作履历挺好的,但是为什么投自己感兴趣公司的简历,都没有面试邀请的机会。反而是那些自己没有投递的公司,经常给自己打电…

一文详解!教你如何在Jmeter里添加Get请求

目录 前言: 第一步,添加线程组 第二步,添加HTTP请求 第三步,添加监视器 前言: 前提条件:Jmeter已安装且已配置好;运行Jmeter,打开界面。 在JMeter中添加一个GET请求非常简…

使用uniapp的扩展组件,在微信小程序中出现报错如何解决

在 vue-cli 项目中可以使用 npm 安装 uni-ui 库 ,或者直接在 HBuilderX 项目中使用 npm 。 注意 cli 项目默认是不编译 node_modules 下的组件的,导致条件编译等功能失效 ,导致组件异常 需要在根目录创建 vue.config.js 文件 ,增…

视频播放失败?

📱1.手机端: 重新下载下客户端即可 💻2.电脑端: 重新下载客户端->鼠标右键管理员方式打开

管理类联考入栏需看

逻辑 技巧篇 管理类联考•逻辑——解题技巧汇总 真题篇 按年份分类 2010 年一月联考逻辑真题 2011 年一月联考逻辑真题 2012 年一月联考逻辑真题 2013 年一月联考逻辑真题 2014 年一月联考逻辑真题 2015 年一月联考逻辑真题 2016 年一月联考逻辑真题 2017 年一月联考逻辑真…

服务日志性能调优,由log引出一系列的事故

只有被线上服务问题毒打过的人才明白日志有多重要! 谁赞成,谁反对?如果你深有同感,那恭喜你是个社会人了:) 日志对程序的重要性不言而喻,轻巧、简单、无需费脑,程序代码中随处可见…

分布式架构之EasyES---和 Mybatis用法相似,太方便了

一、EasyES是什么? Easy-Es(简称EE)是一款基于ElasticSearch(简称Es)官方提供的RestHighLevelClient打造的ORM开发框架,在 RestHighLevelClient 的基础上,只做增强不做改变,为简化开发、提高效率而生,您如果有用过Myb…

ETF薛斯通道抄底指标表

ETF薛斯通道抄底指标表(20230611) 小白也能懂的薛斯通道抄底指标以及公式(附源码) 名称规模(亿)上市日期delta医药创新ETF5606000.1882022-03-150.72医疗创新ETF51682011.8472021-07-010.75生物药ETF1598396.8282021-02-221.1生物医药ETF15985928.5592021-07-071.17疫苗ETF1596…

LVS+Keepalived 高可用群集

LVSKeepalived 高可用群集 一、LVSKeepalived 高可用群集1、LVS2、工作原理3、Keepalived的特性、特点:4、Keepalived实现原理剖析5、VRRP (虚拟路由冗余协议) 二、LVSKeepalived 高可用群集部署1、配置负载调度器(192.168.184.10…

004:vue中安装使用Mock来模拟数据(详细教程)

第004个 查看专栏目录: 按照VUE知识点 ------ 按照element UI知识点 echarts,openlayers,cesium,leaflet,mapbox,d3,canvas 免费交流社区 专栏目标 在vue和element UI联合技术栈的操控下,本专栏…

Linux 高可用群集HA LVS+Keepalived高可用 NGINX高可用

Keepalived及其工作原理 Keepalived 是一个基于VRRP协议针对LVS负载均衡软件设计的,通过监控集群中各节点的状态以实现LVS服务高可用的软件,可以解决静态路由出现的单点故障问题。 Keepalived除了能够管理LVS软件,还可以对NGINX haproxy MyS…

HbuilderX--小程序运行配置

安装 HbuilderX 官网下载安装程序 【传送门】 微信小程序开发者工具官网下载 【传送门】 小程序配置 ① 点击顶部工具按钮跳出弹框,弹框第一个设置或者直接使用快捷键 ctrlalt, ② 在配置页面点击运行配置往下划,其余配置如下 微信小程序 将小程序的…

[迁移学习]域自适应

一、定义 1.源域和目标域 源域(Source)和目标域(Target)之间不同但存在联系(different but related)。迁移学习的人物是从源域学习到知识并使其在目标域中取得较好的成绩。 迁移学习可以分为正迁移(postive transfer)和负迁移(negtive transfer),划分依据是迁移学习…

有哪些好用抠图软件?这几种抠图工具简单又高效

有什么好用的抠图软件呢?通过抠图技术将不同的元素组合在一起,创造出独特的艺术效果。我们日常中也会经常需要进行照片抠图,如拍出的照片背景不满意,想要抠出图片中的人物放到新的背景中,这些都是需要进行抠图才能够完…

微服务_Hystrix

在每个服务中引用该组件,监控当前组件。可被GateWay、Fegin集成。简介 作用:防止服务雪崩 Hystrix是一个由Netflix开源的容错框架,它主要用于分布式系统中的服务间通信。Hystrix通过在调用服务的过程中添加各种容错机制,来保护系…

hbuilderX uni-app 自定义快捷键无效、无法生效解决方法(附:好用的常用的快捷键自定义代码片段)

在最后加上 ,"override": true 才能让原有默认的快捷键被覆盖 好用的常用的快捷键自定义代码片段 [//打开快捷键设置{"key": "altshiftk","command": "workbench.action.openGlobalKeybindings","override": tr…

信息专业求职个人简历最新版

信息专业求职个人简历最新版1 个人信息 _ 性 别: 男 婚姻状况: 已婚 民 族: 汉族 户 籍: 江苏-宜兴 年 龄: 34 现所在地: 江苏-宜兴 身 高: 175cm 希望地区: 江苏-常州、 江苏-…

微软发布自己的 Linux 发行版:Azure Linux

导读在内部使用两年并自 2022 年 10 月起以公共预览版运行后,微软终于在日前正式公开发布了其 Azure Linux 的发行版。 在内部使用两年并自 2022 年 10 月起以公共预览版运行后,微软终于在日前正式公开发布了其 Azure Linux 的发行版。 微软 Azure Lin…

二叉树的层序遍历以及队列的实现

思维导图: 一,什么是层序遍历 层序遍历,顾名思义就是一层一层的遍历。比如我的这棵二叉树: 如果使用层序遍历的话它的结果就会是这样的: 1->5->9->7->10->13->8,这就是一层一层的遍历,一…

SciencePub学术 | 计算机类重点SCIEI征稿中

SciencePub学术 刊源推荐: 计算机类重点SCI&EI征稿中!影响因子高,对国人非常友好。信息如下,录满为止: 一、期刊概况: 计算机类重点SCI&EI 📌【期刊简介】IF:7.5-8.0,JCR…