注意:怎么用JMeter操作MySQL数据库?看完秒懂!

近期用JMeter做接口测试,遇到了一个需要用到数据数据库的场景:一个关于数据报告的页面,需要将数据库里面的数据求和或者取均值之后,展示出来。

如果要断言的话,需要连接数据库,通过写sql语句,将sql查询结果与页面的结果进行对比。

以MySQL数据库为例,具体实现的步骤如下:

一、加载JDBC驱动

二、连接数据库

三、数据库的查询(单值/多值引用)

一、加载JDBC驱动

一)本地准备驱动jar包

注意:驱动包的版本一定要与数据库的版本匹配,驱动版本太低可能导致连接报错。

1、网盘下载

准备好MySQL的驱动,找不到的可在网盘下载:链接:https://pan.quark.cn/s/b59620ad7f30,提取码:6WWw,将文件放到JMeter安装文件夹下

注意:怎么用JMeter操作MySQL数据库?看完秒懂!_第1张图片

2、在官网下载

进入官网https://dev.mysql.com/downloads/connector/j/,选择:Platform Independent。点击Download,解压后找到jar文件,将文件放到JMeter安装文件夹下

注意:怎么用JMeter操作MySQL数据库?看完秒懂!_第2张图片

注意:怎么用JMeter操作MySQL数据库?看完秒懂!_第3张图片

二)导入驱动包

在JMeter的测试计划中,找到Add directory or jar to classspath,点击旁边的浏览,选中包,导入即可

注意:怎么用JMeter操作MySQL数据库?看完秒懂!_第4张图片

二、连接数据库

一)添加元件JDBC Connection Configuration

选中线程组,鼠标右键,添加–配置元件–JDBC Connection Configuration

注意:怎么用JMeter操作MySQL数据库?看完秒懂!_第5张图片

二)配置JDBC Connection Configuration

注意:怎么用JMeter操作MySQL数据库?看完秒懂!_第6张图片

1、名称:默认为空,可自定义名称,也可为空

2、注释:默认为空,可自定义,也可为空

3、Variable Name for created pool:一个连接名称,例如命名为s_mysql1,需要唯一标识,后面的JDBC请求中需要用到,所以需要与JDBC取样器中的名称一致,简单理解就是jdbc request的时候需要确定去请求哪个数据库。

4、Max Number of Connections:连接池中允许的最大数据库连接数,默认10,做性能测试时,建议填 0

5、Max Wait(ms) :在连接池中取回连接最大等待时间,单位毫秒,默认10000,默认即可

6、Time Between Eviction Runs(ms):线程可空闲时间,单位毫秒,默认60000,默认即可
7、Auto Commit:自动提交sql语句,有三个选项:True、False、编辑(JMeter提供的函数设置),默认为true ,默认即可

8、Transaction Isolation:事务隔离级别,默认为DEFAULT,默认即可

9、Test While Idle: 当连接空闲时是否断开,默认为True,默认即可

10、Soft Min Evictable Idle Time(ms):连接池中连接的最小空闲时间,以毫秒为单位。当连接池中的连接处于空闲状态且超过了 “Soft Min Evictable Idle Time” 的设定值时,连接池可能会选择回收这些空闲连接,默认为5000,默认即可

11、Validation Query:验证sql语法,默认为select1,默认即可

12、Database URL:数据库连接 URL,可以带上字符集characterEncoding=utf-8,也可允许多条sql执行allowMultiQueries=true,还可指定时区serverTimezone=UTC,比如jdbc:mysql://10.0.41.104:33066/u_backend?serverTimezone=UTC&characterEncoding=utf-8&allowMultiQueries=true

13、JDBC Driver class:JDBC的类,默认为空,必填项,mysql就选择com.mysql.jdbc.Driver

14、Username:数据库的用户名

15、Password:数据库的密码

三、 数据库的查询(单值/多值引用)

一)添加JDBC Request

1、选中简单控制器,鼠标右键,添加–Sample–JDBC Request

注意:怎么用JMeter操作MySQL数据库?看完秒懂!_第7张图片

添加成功后,填写对应参数:

名称:自定义

Variable Name of Pool declared in JDBC Connection Configuration:要与JDBC Connection Configuration中的Variable Name for created pool值保持一致

Query Type:根据填写的sql选择,查询就选择Select Statement,更新就选择Update Statement

Variable names:对应sql查询结果的字段值, 字段值有多少个,则对应值就有多少个,例如sql查出来有一个字段值reg_count,那么下面就对应1个变量count

Handle ResultSet:默认为Store as String,选择默认值即可, 当选择此选项时,查询结果将以字符串的形式存储在变量中

注意:怎么用JMeter操作MySQL数据库?看完秒懂!_第8张图片

二)添加HTTP请求

添加HTTP请求,填写名称,HTTP请求方法,路径等等

注意:怎么用JMeter操作MySQL数据库?看完秒懂!_第9张图片

三)添加响应断言

1、引用一个变量

引用变量的形式就是 变量 名 行 数 ,例如 {变量名_行数},例如 变量名 

​    
 数,例如{count_1},表示引用查询结果中count字段第1行的数据,KaTeX parse error: Expected group after '_' at position 5: {变量名_̲#}表示返回的行数,例如{count_#}表示返回了几行。

注意:怎么用JMeter操作MySQL数据库?看完秒懂!_第10张图片

2、引用多个变量

如果SQL查询出来的值有多个,例如查询出来了5行记录,每行三个字段,pid_reg_count对应变量count,pid_fee对应变量fee,income对应变量income。

注意:怎么用JMeter操作MySQL数据库?看完秒懂!_第11张图片

注意:怎么用JMeter操作MySQL数据库?看完秒懂!_第12张图片

可以添加一个Debug Sample,查看每个值是怎么取的,KaTeX parse error: Expected group after '_' at position 7: {count_̲#}表示返回的行数,{count_1}表示返回的count字段的第一行的值,${count_2}表示返回的count字段的第二行的值。

fee1​表示返回的fee字段的第一行的值,{income_1}表示返回的income字段的第一行的值。。。依次类推。

注意:怎么用JMeter操作MySQL数据库?看完秒懂!_第13张图片

今天的分享就到这里,希望对大家所有启发。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

你可能感兴趣的:(自动化测试,软件测试工程师,软件测试,数据库,jmeter,mysql,职场和发展,功能测试,自动化测试,软件测试)