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

近期用JMeter做接口测试,遇到了一个需要用到数据数据库的场景:一个关于数据报告的页面,需要将数据库里面的数据求和或者取均值之后,展示出来,如果要断言的话,需要连接数据库,通过写sql语句,将sql查询结果与页面的结果进行对比。

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

一、加载JDBC驱动

二、连接数据库

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

一、加载JDBC驱动

一)本地准备驱动jar包

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

1、网盘下载

准备好MySQL的驱动,找不到的可在网盘下载:链接:夸克网盘分享,提取码:6WWw,将文件放到JMeter安装文件夹下

2、在官网下载

进入官网MySQL :: Download Connector/J,选择:Platform Independent。点击Download,解压后找到jar文件,将文件放到JMeter安装文件夹下

二)导入驱动包

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

二、连接数据库

一)添加元件JDBC Connection Configuration

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

二)配置JDBC Connection Configuration

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

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

名称:自定义

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,选择默认值即可, 当选择此选项时,查询结果将以字符串的形式存储在变量中

二)添加HTTP请求

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

三)添加响应断言

1、引用一个变量

引用变量的形式就是${变量名_行数},例如${count_1},表示引用查询结果中count字段第1行的数据,${变量名_#}表示返回的行数,例如${count_#}表示返回了几行。

2、引用多个变量

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

可以添加一个Debug Sample,查看每个值是怎么取的,${count_#}表示返回的行数,${count_1}表示返回的count字段的第一行的值,${count_2}表示返回的count字段的第二行的值,${fee_1}表示返回的fee字段的第一行的值,${income_1}表示返回的income字段的第一行的值。。。依次类推。

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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenCV读取一张8位无符号单通道图像并显示

#include <iostream> #include <opencv2/imgcodecs.hpp> #include <opencv2/opencv.hpp> #include

Spring—事务及事务的传播机制

Spring—事务及事务的传播机制 &#x1f50e;事务的定义&#x1f50e;Spring—事务的实现铺垫Spring 编程式事务Spring 声明式事务Transactional 的参数注意事项Transactional 的工作原理 &#x1f50e;Spring—事务的隔离级别MySQL—事务的隔离级别Spring—事务的隔离级别Spri…

Prometheus学习

Prometheus学习 promethueus exporter就是以 后台进程的方式运行在系统当中&#xff0c;不断去采集数据 1、红框框中是 prometheus基于数学算法输入的一个查询输入框 2.监控项的分类 3.数据采集的形式分类&#xff08;promethueus exporter就是以 后台进程的方式运行在系统当…

前端vue入门(纯代码)27_路由的query参数

安静地努力&#xff01;&#xff01;&#xff01; 【25.Vue Router--路由的query参数】 多级路由在src/router/index.js中【三级路由】的配置如下&#xff1a; // 该文件专门用于创建整个应用的路由器 import VueRouter from "vue-router"; //引入组件 import Abo…

springboot家政服务管理平台

本系统为了数据库结构的灵活性所以打算采用MySQL来设计数据库&#xff0c;而java技术&#xff0c;B/S架构则保证了较高的平台适应性。本文主要介绍了本系统的开发背景&#xff0c;所要完成的功能和开发的过程&#xff0c;主要说明了系统设计的重点、设计思想。 本系统主要是设…

Docker学习笔记23

Docker Swarm架构&#xff1a; Swarm中以集群&#xff08;Cluster&#xff09;为单位进行管理&#xff0c;支持服务层面的操作。 集群是Swarm所管理的对象。 基本概念&#xff1a; 节点&#xff08;Node&#xff09;为Swarm集群中的一个Docker Engine实例。其中管理节点&#…

Elasticsearch索引库、文档操作

一、索引库操作 1、创建索引库&#xff1a; #创建索引库 PUT /索引库名 {"mappings": {"properties": {"info":{"type": "text","analyzer": "ik_smart"},"email":{"type": "…

前端工程打包部署

打包 直接执行第二个脚本build即可 打包后的文件将会放在dist目录下 部署 NGINX&#xff1a;是一款轻量级的Web服务器/反向代理服务器及电子邮件&#xff08;IMAP/POP3&#xff09;代理服务器。其特点是占用内存少&#xff0c;并发能力强&#xff0c;在各大型互联网公司都有非…

JDBC技术【JDBC概述、获取数据库连接、 下载数据库驱动】(一)-全面详解(学习总结---从入门到深化)

目录 JDBC概述 JDBC编写步骤 获取连接 下载数据库驱动 获取数据库连接 Properties文件的使用 JDBC概述 数据的持久化 持久化(persistence)&#xff1a;将内存中的数据保存到可永久保存的存储 设备中&#xff08;如磁盘&#xff09;。 持久化的主要应用是将内存中的数据存储…

微信小程序canvas生成图片并保存

需求&#xff1a; 做一个类似下图的功能。图片内容是动态的&#xff0c;用canvas画出来&#xff0c;生成临时图片&#xff0c;再保存。 实现&#xff1a; <view class"canvasBox"><canvas canvas-id"myCanvas" class"myCanvas">&l…

B. Building Company

Problem - B - Codeforces 思路&#xff1a;我们能够发现这其实类似于操作系统的问题&#xff0c;其思想就是我们先把能完成的工程完成&#xff0c;然后加入完成工程后得到的奖励&#xff0c;然后再看是否会有新的工程能够完成&#xff0c;然后一直重复知道不会再出现新的工程能…

Unity/Shader 零碎知识点

来源&#xff1a;shader入门精要-冯乐乐 坐标系 Unity使用的是左手坐标系&#xff1b;观察空间&#xff0c;通俗来讲就是以摄像机为原点的坐标系&#xff0c;摄像机的前向是z轴的负方向&#xff0c;与模型和世界空间中的定义相反&#xff0c;z轴的坐标减少意味着场景深度的增加…