VC中文网-VC-MFC编程论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 467|回复: 3
打印 上一主题 下一主题

JMeter 如何与 MySQL 进行整合测试

[复制链接]

11

主题

46

帖子

25

金币

连长

Rank: 7Rank: 7Rank: 7

积分
138
跳转到指定楼层
楼主
发表于 2018-12-3 09:23:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
做性能测试定位瓶颈的时候,定位到是因为某些 SQL 语句的查询慢所影响的,此时我们提出优化方案,肯定希望验证下优化后的 SQL,此时需要借助 JMeter 的 JDBC 请求,那么我们就需要学习 JMeter 如何与 MySQL 进行整合测试。

环境准备

除 JMeter 外,还需要准备以下软件和 Jar 包:
    MySQL 数据库办事端;MySQL 的 JDBC 驱动 mysql-connector-java-5.1.13-bin.jar;

其中 MySQL 数据库下载完成后,依照提示安装即可,安装完毕在 cmd 命令行,执行 net start mysql 将其启动即可;固然这是验证自己本地数据库的操作,如果有远程数据库,那么请忽略此操作。

JDBC 驱动直接放置在 Jmeter/lib 目录下即可。

JMeter 测试 JDBC 请求

JMeter 测试 JDBC 请求,主要就是测试 SQL 查询语句,那么常见的查询语句一般分为以下几种情况:
    直接查询:即 select * form table;带 where 子句的查询:select a,b from table where a=''。

下面我们先来看第一种情况。

JMeter 测试不带条件的 SQL 语句

具体步调如下:

(1)选中测试计划,添加 mysql-connector-java-5.1.13-bin.jar:





(2)添加一个线程组:





(3)在线程组下,添加一个 JDBC Connection Configuration(连接数据库组件),专门用来配置所测试的数据库连接信息:





配置信息如下:





(4)在线程组下,添加一个 JDBC Request,填写真正的 JDBC 请求:





配置信息如下:





说明一点:这里用到的 Query Type 为:Select statement,这是一个查询语句类型,如果在 Query 中查询的是一条语句,就可以采取这种查询类型,可是当查询语句多于一条的时候,就不克不及在使用此查询类型,需要设置 Query Type 为:Callable Statement。

另外:当 JDBC 脚本执行的时候,总是会优先去执行 Select statement 的第一行。

(5)在线程组下,添加查看结果树,运行结果,查看是否成功:





完成以上操作,我们已经可以完成 JMeter 与 MySQL 的集成,并且可以查询 MySQL 数据库;那么如果我们想要每次执行一次查询,查询出一列固定的内容,依次查询出我们需要的列时,就需要借助参数化。

将查询语句参数化

一说到参数化,在 JMeter 里巨匠就应该想到 CSV Data Set config,本次依旧不例外。

具体步调如下所示:

(1)在线程组下新增 CSV Data Set config,新建 txt 类型的文件,命名为 jdbd.txt,其内容如下:





配置 CSV Data Set config 如下:





(2)将 JDBC Request 里的 Query 语句设置为:select ${jdbc} from cf_tb_sequence:





(3)添加一个循环控制器,将循环次数设置为2:





(4)运行后查看下结果树。

第一个 JDBC 请求显示的响应信息为:





第二个 JDBC 请求显示的响应信息为:





经过参数化后,我们可以循环查询每列的数据。

查询指定条件的语句

有些时候我们查询时,需要使用带 where 子句的查询 SQL,在 JMeter 的 JDBC Request 中同样可以实现此功能。

即使用占位符,来替换 SQL 语句中 where 子句指定的部分。

具体步调如下:

(1)将 JDBC Request 请求中的 Query Type 修改成 Prepared Select Statement:





(2)在 Query 中将 SQL 语句的 where 子句中的参数数值都使用?号进行取代。

举例:我们想要使用如下 SQL 查询语句:
select name,current_value from cf_tb_sequence where name = '0103' or current_value = '44';
我们此时写为:
select name,current_value from cf_tb_sequence where name = ? or current_value = ?;




(3)在下方的 Parameter values 中把值填上,多个值用,分隔,数量与?连结一致(第一个值对应第一个?,以此类推即可):





(4)Parameter types 填为 varchar,多个参数用,分隔,数量与?连结一致(不管什么数据类型均填写为 varchar):





(5)禁用失落 CSV Data Set config,将循环控制器的循环次数变成1,此时运行查看结果树:





可以看到我们成功查询出满足 select name,current_value from cf_tb_sequence where name = '0103' or current_value = '44'的数据。

更多内容回复查看:
游客,如果您要查看本帖隐藏内容请回复
C VC C++ MFC 汇编 函数 脚本 辅助 多开 注入 内存 插件 破解 基址 窗口 大漠 绑定 编程 交流 论坛 实例 源码

20

主题

62

帖子

42

金币

连长

Rank: 7Rank: 7Rank: 7

积分
183

新兵

沙发
发表于 2018-12-3 09:23:55 | 只看该作者
转发了
C VC C++ MFC 汇编 函数 脚本 辅助 多开 注入 内存 插件 破解 基址 窗口 大漠 绑定 编程 交流 论坛 实例 源码

13

主题

50

帖子

26

金币

连长

Rank: 7Rank: 7Rank: 7

积分
150

新兵

板凳
发表于 2018-12-3 09:24:06 | 只看该作者
转发了
C VC C++ MFC 汇编 函数 脚本 辅助 多开 注入 内存 插件 破解 基址 窗口 大漠 绑定 编程 交流 论坛 实例 源码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

VC中文网 - 豫ICP备14012807号|小黑屋|联系客服|金币冲值|VC中文网

GMT+8, 2019-11-20 07:08 , Processed in 0.437500 second(s), 30 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表
pk10投注技巧分享