『动善时』JMeter基础 — 41、使用JMeter连接数据库(MySQL)
1、为什么要使用JMeter连接数据库
我们测试的软件项目中,所有的数据都是存储在数据库。我们可以直接使用JMeter链接数据库,把需要的数据取出来,和通过接口方式取出来的返回数据进行比对,如果数据一致,说明后台程序开发的没有问题。
2、JMeter连接数据库的前提
由于JMeter本身没有提供链接数据库的功能,所以我们需要借助三方的工具包来实现。
也就是下载JMeter链接MySQL数据库的JAR包:mysql-connector-java.jar。
需要根据自己MySQL的版本下载对应驱动,尽量保证其版本和你数据库的版本一致,至少不低于数据库版本,否则可能有问题。
MySQL各版本驱动JAR包下载地址:https://repo1.maven.org/maven2/mysql/mysql-connector-java/
最后将下载好的MySQL驱动,放在JMeter的bin目录下。(因为方便找到,也可以放在lib目录下,或者公司规范的目录中。)
提示:
(1)驱动放哪?
- 随便放:需要在测试计划界面中进行引入。
- 认真放:放到JMeter的安装路径的
lib目录下,就不需要再次引入了,需要重启一次JMeter。
(2)mysql-connector-java与MySQL对应版本:

官方推荐mysql-connector-java.jar的8.0版本,与MySQL Server的8.0、5.7和5.6版本一起使用。
(我的Mysql版本为5.7.30,用mysql-connector-java的5.1和在8.0版本都可以,亲测。)
(3)mysql-connector-java与Java对应版本:

官方提示:JRE 1.7需要使用mysql-connector-java的5.1.21及更高版本。
3、JDBC连接配置组件界面介绍
添加JDBC连接配置组件的操作:选中“线程组”右键 —> 添加 —> 配置元件 —> JDBC Connection Configuration。
JDBC连接配置界面,如下图所示:

界面详细说明:
- 名称:
JDBC Connection Configuration组件的自定义名称,见名知意最好。 - 注释:即添加一些备注信息,对该JDBC连接配置组件的简短说明,以便后期回顾时查看。
1)Variable Name Bound to Pool:绑定一个数据库的链接。
Variable Name for created pool:定义数据库连接池的名称。(自定义填写,一般与数据库同名)
2)Connection pool Configuration:数据库连接池配置,一般都保持默认,可根据特定需要进行修改。
Max Number of Connections:对该数据库的最大连接数。通常该值设置为0,意思是每个线程都使用单独的数据库连接,例如,配置在两个线程间不共享。如果你确实想共享连接池,那么最大连接数应当和线程数一样,以便线程不用互相等待,做性能测试时用。Max Wait(ms):在连接池中取回连接最大等待时间,单位毫秒。如果超过改时间,将抛出一个错误。Time Between Eviction Runs(ms):数据库空闲连接的回收时间间隔,单位毫秒。超过设置的空间时间后,该链接任然没有使用,则会将该空闲链接物理性的关闭掉。次选项若为非正数,则空闲连接回收器不停运行。Auto Commit: 自动提交SQL语句。此处有三个选项true、false、编辑,如:选择True后, 每条SQL语句就是一个事务,执行结束后会自动提交到数据库。否则不会提交,需要自己手动提交。Transaction isolation:数据库的事务隔离级别设置,JDBC定义了五种事务隔离级别:TRANSACTION NONE:不支持事务。TRANSACTION READ UNCOMMITTED:事务读取未提交内容,允许脏读,不可重复读和幻读。TRANSACTION READ COMMITTED:事务读取已提交读内容,禁止脏读,但允许不可重复读和幻读。TRANSACTION SERIALIZABLE:事务序列化。一个事务读时,其他事务只能读,不能写。禁止脏读、不可重复读和幻读。TRANSACTION REPEATABLE READ:事务重复读。两个事务同时进行时,其中一个事务修改数据对另一个事务不会造成影响,即使修改的事务已经提交也不会对另一个事务造成影响。禁止脏读,不可重复读,但允许幻读。DEFAULT:使用相应数据库对应的默认事务隔离级别,例如大多数的数据库系统中,默认事务隔离级别都是Read committed,而MySQL的默认事务隔离级别是Repeatable Read。
拓展一点:
- 脏读(
dirty read):一个事务读取了另一个事务尚未提交的数据。- 不可重复读(
Non-Repeatable Reads):一个事务的操作导致另一个事务前后两次读取到不同的数据。- 幻读(
Phantom Reads):一个事务的操作导致另一个事务前后两次查询的结果数据量不同。
3)Connection Validation by Pool:连接池有效性验证配置,这是JMeter用来检验数据库连接是否有效的一种机制。
Test While Idle:是否对空闲连接进行有效性验证(当连接空闲时是否断开)。当连接空闲时,是否使用Validation Query去测试连接。Soft Min Evictable Idle Time(ms):连接在连接池中闲置的最小时间,超出此闲置时间连接才会被回收,默认值为5000ms。额外的条件是,在连接池中至要保留有minIdle个连接。Validation Query:用于验证数据库是否仍在响应的简单查询语句。默认是JDBC驱动的isValid()方法,它适合于很多数据库。可以通过jmeter.properties中jdbc.config.check.query属性设置默认的验证SQL语句。

说明:默认配置的意思:表示每隔5000ms执行一次
Validation Query选中的SQL,来验证连接是否有效。默认Validation Query中填写任何内容,就表示不进行验证。
4)Database Connection Configuration:数据库连接配置。
Database URL:数据库连接 URL 。例如:jdbc:mysql://127.0.0.1:3306/ecshop,表示本地数据库,3306端口,数据库名称为ecshop。(后边还可以加上?来链接一些参数配置)JDBC Driver class:数据库驱动程序的完全名称,有下拉菜单可选。Username:数据库登录的用户名。Password:数据库登录的密码。
4、JMeter连接数据库演示
以JMeter连接MySQL数据库为例。
(1)测试计划内包含的元件
添加元件操作步骤:
- 创建测试计划。
- 创建线程组:
选中“测试计划”右键 —> 添加 —> 线程(用户) —> 线程组。 - 在线程组中,添加配置元件
JDBC Connection Configuration(JDBC连接配置)组件:选中“线程组”右键 —> 添加 —> 配置元件 —> JDBC Connection Configuration。 - 在线程组中,添加取样器
JDBC Request(JDBC请求)组件:选中“线程组”右键 —> 添加 —> 取样器 —> JDBC Request。 - 在线程组中,添加监听器“察看结果树”组件:
选中“线程组”右键 —> 添加 —> 监听器 —> 察看结果树。
最终测试计划中的元件如下:

点击运行按钮,会提示你先保存该脚本,脚本保存完成后会直接自动运行该脚本。
(2)测试计划中添加链接数据库所依赖的JAR包
在测试计划中,点击添加目录或jar包到ClassPath 后的”浏览“按钮,选择mysql-connector-java.jar文件。
(如果放在JMeter的bin目录下,直接就能够看到,非常方便。放在lib\ext目录下,每次自动加载也可以。)
如下图所示:

(3)jdbc connection configuration组件内容
JDBC Connection Configuration(JDBC连接配置)组件,就相当于对一个数据库链接配置。
一个测试计划可以有多个JDBC连接配置组件,只要名称不重复就行,即Variable Name for created pool命名不重复。
编辑后的jdbc connection configuration组件界面,如下图所示:

我们把该数据库链接命名为ecshop4,输入数据库地址Database URL,选择数据库链接所需要的驱动,填写数据库的用户名密码即可。(也就是填写第一部分和第四部分的内容,其他内容默认即可)
(4)JDBC Request组件界面内容
在线程组下添加一个专门用于向数据库发送SQL语句的取样器JDBC Request组件。
操作方式:选中“线程组”右键 —> 添加 —> 取样器 —> JDBC Request。
编辑界面中的内容:
- 编辑
Variable Name of Pool declared in JDBC Connection Configuration的内容:填写数据库连接池的名称,也就是填写一个定义好的JDBC Connection Configuration组件中的Variable Name名称。例如我们上边定义的ecshop4。 Query Type:选择查询类型,我们只进行一条查询语句,所以选择Select Statement即可。- 在
Query:的输入框中编写要发送的SQL语句。
其他默认即可,这样我们就发送出一个最基础的JDBC请求了。
如下图所示:

提示:我们在这里不详解的介绍
JDBC Request组件的说明和使用,在后面文章中,会详细进行说明。
(5)查看结果
运行该JMeter脚本后,会自动去目标数据库中进行查询操作,之后会把查询的结果返回到JMeter中。
如下图所示:

以上就是使用JMeter连接数据库的操作,我们以MySQL为例进行的演示,其他数据库同理,学会举一反三。
本篇文章主要说明的是:
- JDBC连接配置(
JDBC Connection Configuration)组件的详细说明。- 还有一个是使用JMeter连接数据库的过程。
- 关于
JDBC Request组件详细说明,和各种用法,在后面的文章会详细介绍。
『动善时』JMeter基础 — 41、使用JMeter连接数据库(MySQL)的更多相关文章
- 『动善时』JMeter基础 — 6、使用JMeter发送一个最基础的请求
目录 步骤1:创建一个测试计划 步骤2:创建线程组 步骤3:创建取样器 步骤4:创建监听器 步骤5:完善信息 步骤6:保存测试计划 步骤7:查看结果 总结:JMeter测试计划要素 当我们第一次打开J ...
- 『动善时』JMeter基础 — 2、JMeter的安装和启动
1.安装Java环境 由于JMeter是纯Java的桌面应用程序,因此它的运行环境需要Java环境,即需要安装JDK或JRE.(也就是安装JDK环境) 步骤简要说明: 下载并安装JDK 配置环境变量 ...
- 『动善时』JMeter基础 — 7、jmeter.properties文件常用配置
目录 1.默认语言设置 2.配置默认编码格式 3.GUI图标放大比例设置 4.功能区工具栏图标大小设置 5.视图区目录树图标大小设置 6.内容区编辑字体设置 7.添加JMeter元素快捷键设置 8.捕 ...
- 『动善时』JMeter基础 — 27、通过JMeter函数助手实现参数化
目录 1.测试计划中的元件 2.数据文件内容 3.函数助手配置 (1)函数助手的打开方式 (2)函数助手界面介绍 (3)编辑后的函数助手界面 4.HTTP请求组件内容 5.线程组元件内容 6.脚本运行 ...
- 『动善时』JMeter基础 — 47、JMeter的HTTP代理服务器详细介绍
目录 1.HTTP代理服务器的添加 2.HTTP代理服务器界面详解 (1)State:状态 (2)Global Settings:全局设置 (3)Test Plan Creation:测试计划创建 ( ...
- 『动善时』JMeter基础 — 21、HTTP Cookie管理器的使用
目录 1.在HTTP信息头管理器组件中添加Cookie信息 (1)测试计划内包含的元件 (2)请求取样器内容 (3)HTTP信息头管理器内容 (4)查看结果 2.使用HTTP Cookie管理器组件来 ...
- 『动善时』JMeter基础 — 8、JMeter主要元件介绍
目录 1.测试计划(Test Plan) 2.线程组 3.取样器(sampler) 4.逻辑控制器(Logic Controller) 5.配置元件(Config Element) 6.定时器(Tim ...
- 『动善时』JMeter基础 — 20、JMeter配置元件【HTTP Cookie管理器】详细介绍
目录 1.HTTP Cookie管理器介绍 2.HTTP Cookie管理器界面详解 3.JMeter中对Cookie的管理 (1)Cookie的存储 (2)Cookie的管理策略 4.补充:Cook ...
- 『动善时』JMeter基础 — 37、将JMeter测试结果写入Excel
目录 1.环境准备 (1)引入操作Excel文件的基础JAR包 (2)引入封装自定义操作Excel文件的JAR包 2.准备测试需要的数据 3.测试结果写入Excel演示 (1)测试计划内包含的元件 ( ...
随机推荐
- Windows PR提权
目录 提权利用的漏洞 PR提权 提权利用的漏洞 Microsoft Windows RPCSS服务隔离本地权限提升漏洞 RPCSS服务没有正确地隔离 NetworkService 或 LocalSer ...
- CVE-2012-1876:Internet Exporter MSHTML.DLL CaculateMinMax 堆溢出简单分析
0x01 2012 Pwn2Own 黑客大赛 Pwn2Own 是世界上最著名的黑客大赛,意在激励白帽黑客们进行顶尖的安全研究.在 2012 年 Pwn2Own 大赛上,来自法国著名的安全团队 Vupe ...
- Word 通过添加Package 实现word藏毒
这个思路要结合近期在一些安全网站上公布的姿势来实现,先科普几个地方. (1)通过cmd本身就可以直接下载: Bitsadmin /transfer AA /download /priority nor ...
- layui处理表单/按钮进行多次提交
在一个项目中,我们最频繁的操作是CRUD,所以一定有涉及到按钮的操作.比如:确认保存,确认编辑,确认删除等等.所以,为了避免表单进行多次提交就显得特别地重要. 代码实现 知识点 $(':button' ...
- 一、HttpRunner学习汇总
HttpRunner是一款面向Http和HTTPS协议的通用测试框架,只需编写维护一份YAML/JSON脚本即可实现自动化测试.性能测试.线上监控.持续集成等多种测试需求,是基于关键字驱动的框架,基于 ...
- window 10 删除文件夹需要管理员权限
如果设了当前的账号有权限删除了, 还是显示删除里管理员则需要改: 按Win+R组合键,输入gpedit.msc点击确定: 在窗口边依次打开计算机配置--Windows设置--安全设置--本地策略--安 ...
- Http协议有什么特点,能说说这些特点体现在哪些方面吗?
Http协议有什么特点,能说说这些特点体现在哪些方面吗? Http协议是我们最常用的接口,那它有什么特点呢? 无连接 无状态 还有呢? 灵活,简单快速 还有它的这些特点体现在哪些方面?你也要能说一说. ...
- 多线程-2.线程创建方式和Thread类
线程的创建方式 1.继承Thread类,重写run方法,示例如下: 1 class PrimeThread extends Thread { 2 long minPrime; 3 PrimeThrea ...
- opencv——感兴趣区域(ROI)的分析和选取[详细总结]
引言 在利用OpenCV对图像进行处理时,通常会遇到一个情况,就是只需要对部分感兴趣区域进行处理.因此,如何选取感兴趣区域呢?(其实就是"抠图"). 在学习opencv的掩码运算后 ...
- JUC 并发类概览
JUC 并发类及并发相关类概览,持续补充... AQS 内部有两个队列,一个等待队列(前后节点),一个条件队列(后继节点),其实是通过链表方式实现: 等待队列是双向链表:条件队列是单向链表:条件队列如 ...