Jmeter(七) - 从入门到精通 - 建立数据库测试计划实战<MySQL数据库>(详解教程)
1.简介
在实际工作中,我们经常会听到数据库的性能和稳定性等等,这些有时候也需要测试工程师去评估和测试,上一篇文章宏哥主要介绍了jmeter连接和创建数据库测试计划的过程,宏哥在文中通过示例和代码非常详细地介绍给大家,希望对各位小伙伴和童鞋们的学习或者工作具有一定的指导和参考学习价值,遇到类似的问题脑子一片空白的童鞋们可以参考一下。这一篇宏哥就以MySQL数据为例结合上一篇的理论知识在这里带领小伙伴和童鞋们实战一下。这里宏哥为了增加小伙伴们的学习兴趣和便于记忆理解,因此列举了一个谍战剧中执行刺杀任务的场景,首先组成刺杀任务的小队,然后通过接头暗号建立联系,其次就开始执行刺杀任务,期间有核查组员的人物背景、其他组员支援、以及自己组员的牺牲、任务的变更等等,最后确认暗杀任务是否执行成功。
2.环境准备
1、MySQL数据库
2、下载mysql jdbc 驱动
3、JMeter
2.1安装MySQL
首先确保你已经安装好数据库MySQL。如果没有可以参考宏哥的这篇文章:传送门。查看有没有安装MySQL命令:net start,打开控制台(在开始,运行输入cmd)然后出入“net start” 就是打开了服务看看列出来的有没有 MySQL之类的如果没有,就是没有安装。如下图所示:
2.2JMeter
JMeter安装启动好待用。
2.3下载MySQL驱动
1、下载MySQL驱动。下载地址:https://dev.mysql.com/downloads/connector/j/
常用的包如下:
Windows 下 mysql-connector-java-5.1.7-bin.jar
Mac下 MySQL Connector/J没有对应的 Mac 版,可以选择Platform Independent:mysql-connector-java-8.0.15.zip
注意:驱动包的版本一定要与你数据库的版本匹配,驱动版本低于mysql版本有可能会导致连接失败报错
2、解压下载的MySQL驱动,如下图所示:
3、将解压的MySQL的jdbc驱动(mysql-connector-java-8.0.20.jar),将其放到D:\software\apache-jmeter-5.1.1\lib目录下。如下图所示:
注意:敲黑板,敲脑壳啦!!!放完驱动以后,要记得重启jmeter
3.建立数据库测试计划
在本节中,您将学习如何创建基本的测试计划以测试数据库服务器和操作数据库(增、删、改、查)。本示例使用MySQL数据库驱动程序。要使用该驱动程序,必须将其包含的.jar文件(例如mysql-connector-java-XXX-bin.jar)复制到JMeter ./lib目录。
3.1新建测试计划
首先我们新建一个测试计划,并将其命名为:Test MySQLDB Plan,如下图所示:
3.2在测试计划下添加驱动地址
在建立好测试计划以后,点击“Browse...”,选择我们前边下载解压好的驱动路径,我们需要将驱动的地址(路径)添加到测试计划下边,如下图所示:
3.3添加用户
新建完测试计划以后,我们前边也讲过了,这时候就要添加用户了。你要对每个JMeter测试计划进行的第一步是添加一个线程组(用户)。线程组告诉JMeter您要模拟的用户数量,用户应多久发送一次请求以及应发送多少次请求。这里就相当于谍战片中我们开始选择队员组队的过程,默认是一人一个小组,如果你觉得不够可以在控制面板修改人数等等。如下图所示:

3.4添加JDBC连接配置
通过上边的操作,我们已经定义了用户挑选了队员组成了精干小组,然后我们必须定义这些用户(队员)所要去的目的地,和目的地建立联系。不要这些用户累死累活的干了半天的活,知不道是为谁干得活。在本部分中,你需要和目的地建立联系。我们需要设置一些字段,这些字段相当于谍战片中的接头暗号,例如:《智取威虎山》杨子荣与坐山雕的接头暗号:脸红什么?精神焕发。怎么又黄拉?度防冷涂的蜡;长江长江我是黄河,等等。暗号对上了,才可以建立联系。否则认为有危险,不是建立联系,具体在测试中的表现就是报错了!!!,下边控制面板的参数字段在上一篇已经说过了,这里就不赘述了,宏哥直接填写了,有不明白的可以看看上一篇文章。如下图所示:
3.5添加JDBC请求
通过上边的操作,我们已经定义了用户并且已经知道目的地和接头人建立了联系之后,然后我们就需要给这些用户分配具体的任务了(谁负责监视,谁负责刺杀,谁负责放哨)。在本部分中,你将指定要执行的JDBC请求(刺杀任务)。这里就开始执行刺杀任务,期间有核查组员的人物背景、其他组员支援、以及自己组员的牺牲、任务的变更等等
3.5.1查询(核查组员信息)
3.5.2插入(其他组员支援)
3.5.3修改(组员档案变更)
3.5.4删除(自己组员牺牲)
3.6添加监听器以查看/存储测试结果(监听器-查看任务是否成功)
您需要添加到测试计划中的最后一个元素是 Listener。该元素负责将JDBC请求的所有结果存储在文件中并显示结果。如下图所示:
3.7保存与执行测试计划
保存与执行测试计划,查看任务结果,如下图所示:
宏哥为了让小伙伴们看得清楚,讲后边的三个请求都修改成disable了,修改后由黑色变成了灰色。然后慢慢的逐个再将其修改成enable。如下图所示:
3.7.1核查人员信息情况
1、首先查询MySQL数据,如下图所示:
2、看一下JMeter执行后与上边的查询结果一致,说明核查人员信息成功。如下图所示:
3.7.2核查人员支援情况
1、首先查询MySQL数据,只有四个人员,如下图所示:
2、JMeter执行后,北京宏哥前来支援,我们分别查看MySQL和JMeter的结果,如下图所示:
JMeter:
MySQL:
3.7.3核查人员变更情况
1、首先查询MySQL数据,只有五个人员,如下图所示:
2、JMeter执行后,将“赵六”变更成“赵丽”,我们分别查看MySQL和JMeter的结果,如下图所示:
JMeter:
MySQL:
3.7.4核查人员牺牲情况
1、首先查询MySQL数据,只有五个人员,如下图所示:
2、JMeter执行后,李四在任务中牺牲,我们分别查看MySQL和JMeter的结果,如下图所示:
JMeter:
MySQL:
4.小结
1、Cannot load JDBC driver class 'com.mysql.jdbc.Driver'
原因:未在jmeter安装目录下的./lib目录下放入mysql-connector-java-X.X.X-bin.jar
解决方法:将mysql-connector-java-X.X.X-bin.jar放入到./lib目录,并重启jmeter
2、CLIENT_PLUGIN_AUTH is required
原因:导入的 mysql-connector-java-X.X.X-bin.jar版本问题(原来导入mysql-connector-java-8.0.17.jar),上网查资料,知驱动和mysql数据库的版本也有关系(参考mysql-connector-java之6.0.6版本,SQLNonTransientConnectionException: CLIENT_PLUGIN_AUTH is required异常问题 - wenqi0501的个人空间 - OSCHINA https://my.oschina.net/u/3640994/blog/3000068)
mysql官网驱动版本和数据库版本说明,地址:https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-versions.html
解决方法:替换成mysql-connector-java-5.1.47.jar后问题解决
3、Variable Name must not be null in Insert
原因:未在JDBC Request的控制面板里填写绑定的连接池
解决办法:填写和JDBC Connection Configuration一样的连接池即可
4、以下是各数据库Database URL、JDBC Driver class 填写方式
数据库名 | Database URL | Driver class |
MySQL | jdbc:mysql://host[:port]/dbname | com.mysql.jdbc.Driver |
PostgreSQL | jdbc:postgresql:{dbname} | org.postgresql.Driver |
Oracle | jdbc:oracle:thin:@//host:port/service OR jdbc:oracle:thin:@(description=(address=(host={mc-name})(protocol=tcp)(port={port-no}))(connect_data=(sid={sid}))) | oracle.jdbc.OracleDriver |
Ingress (2006) | jdbc:ingres://host:port/db[;attr=value] | ingres.jdbc.IngresDriver |
Microsoft SQL Server (MS JDBC driver) | jdbc:sqlserver://host:port;DatabaseName=dbname | com.microsoft.sqlserver.jdbc.SQLServerDriver |
Apache Derby | jdbc:derby://server[:port]/databaseName[;URLAttributes=value[;…]] | org.apache.derby.jdbc.ClientDriver |
好了今天的建立数据库测试计划实战<MySQL数据库>就分享到这里。
您的肯定就是我进步的动力。如果你感觉还不错,就请鼓励一下吧!记得随手点波 推荐 不要忘记哦!!!
别忘了点 推荐 留下您来过的痕迹
Jmeter(七) - 从入门到精通 - 建立数据库测试计划实战<MySQL数据库>(详解教程)的更多相关文章
- SaltStack 入门到精通第三篇:Salt-Minion配置文件详解
SaltStack 入门到精通第三篇:Salt-Minion配置文件详解 作者:ArlenJ 发布日期:2014-06-09 17:52:16 ##### 主要配置设置 ##### 配置 默认值 ...
- Jmeter(五) - 从入门到精通 - 创建网络计划实战和创建高级Web测试计划(详解教程)
1.简介 上一篇中宏哥已经将其的理论知识介绍了一下,这一篇宏哥就带着大家一步一步的把上一篇介绍的理论知识实践一下,然后再说一下如何创建高级web测试计划. 2.网络计划实战 通过上一篇的学习,宏哥将其 ...
- Jmeter(六) - 从入门到精通 - 建立数据库测试计划(详解教程)
1.简介 在实际工作中,我们经常会听到数据库的性能和稳定性等等,这些有时候也需要测试工程师去评估和测试,因此这篇文章宏哥主要介绍了jmeter连接和创建数据库测试计划的过程,宏哥在文中通过示例和代码非 ...
- Jmeter(四) - 从入门到精通 - 创建网络测试计划(详解教程)
1.简介 在本节中,您将学习如何创建基本的 测试计划来测试网站.您将创建五个用户,这些用户将请求发送到JMeter网站上的两个页面.另外,您将告诉用户两次运行测试.因此,请求总数为(5个用户)x(2个 ...
- Spark入门到精通--(第二节)Scala编程详解基础语法
Scala是什么? Scala是以实现scaleable language为初衷设计出来的一门语言.官方中,称它是object-oriented language和functional languag ...
- Simulink仿真入门到精通(十七) Simulink代码生成技术详解
17.1 基于模型的设计 基于模型设计是一种流程,较之传统软件开发流程而言,使开发者能够更快捷.更高效地进行开发.适用范围包括汽车电子信号处理.控制系统.通信行业和半导体行业. V字模型开发流程整体描 ...
- 数据库篇:mysql锁详解
前言 sql事务的执行,如果需要锁定数据进行更新操作,则必定离不开锁 共享锁和排他锁 表锁 行锁 Record Lock 间隙锁 Gap Lock 行锁+间隙锁 Next-Key Lock 加锁场景( ...
- Jmeter(十六) - 从入门到精通 - JMeter前置处理器(详解教程)
1.简介 前置处理器是在发出“取样器请求”之前执行一些操作.如果将前置处理器附加到取样器元件,则它将在该取样器元件运行之前执行.前置处理器最常用于在取样器请求运行前修改其设置,或更新未从响应文本中提取 ...
- Jmeter(十八) - 从入门到精通 - JMeter后置处理器 -下篇(详解教程)
1.简介 后置处理器是在发出“取样器请求”之后执行一些操作.取样器用来模拟用户请求,有时候服务器的响应数据在后续请求中需要用到,我们的势必要对这些响应数据进行处理,后置处理器就是来完成这项工作的.例如 ...
随机推荐
- 微信小程序-swiper(轮播图)抖动问题
ps:问题 组件swiper(轮播图)真机上不自动滚动 一直卡在那里抖动 以前遇到这个问题,官方一直没有正面回复.就搁置了,不过有大半年没写小程序了也没去关注,今天就去看了下官方文档,发觉更新了点好东 ...
- C#黔驴技巧之去重(Distinct)
前言 关于C#中默认的Distinct方法在什么情况下才能去重,这个就不用我再多讲,针对集合对象去重默认实现将不再满足,于是乎我们需要自定义实现来解决这个问题,接下来我们详细讲解几种常见去重方案,孰好 ...
- 带你看看Java的锁(二)-Semaphore
前言 简介 Semaphore 中文称信号量,它和ReentrantLock 有所区别,ReentrantLock是排他的,也就是只能允许一个线程拥有资源,Semaphore是共享的,它允许多个线程同 ...
- Day_09【常用API】扩展案例6_将用户给定的字符串首个字符大写,并分别加上"set"和"get"输出
定义如下方法public static String getPropertyGetMethodName(String property) (1)该方法的参数为String类型,表示用户给定的成员变量的 ...
- 关于Fragment的点击切换数据滞留问题
场景再现:当我使用tabLayout + Fragment 切换不同的fragment时,出现了数据重复显示的问题: 思考逻辑: - 每次切换fragment都会重新获取数据,但是list集合是全局的 ...
- python入门及数字、字符串类型
目录 python开发框架 开发 1. 开发语言 2. 语言比对 3. python安装 4. Python开发IDE:pycharm ,eclipse python入门 1. 第一句Python 2 ...
- [hdu4123]dfs区间化+RMQ
题意:给一个树编号0~n-1,一个数组a[i]为节点i在树上走的最大距离(不重复点),然后求最大的区间,使得区间最大差异小于某个值.dfs求出每个数组,同时区间化.枚举区间左边界,右边界同样递增,类似 ...
- dot 使用教程
dot使用教程 安装: windows: 安装后需要将安装文件的bin目录添加到命令行, 可以在命令行生成图片 linux: mac: dot和vscode 安装插件:Graphviz (dot) l ...
- express.static设置缓存
之前因为服务器端脚本不大,都是直接手写,按请求文件后缀名设置cache-control的max-age. 今天决定还是改成express,发现原来express.static()方法设置缓存,直接在参 ...
- Codeforces1144A(A题)Diverse Strings
A. Diverse Strings A string is called diverse if it contains consecutive (adjacent) letters of the L ...