首页 > 编程语言 >适合程序员的DB性能测试工具 JMeter

适合程序员的DB性能测试工具 JMeter

时间:2023-08-17 14:37:17浏览次数:30  
标签:JMeter java DB JDBC 测试 sql 测试工具 执行

背景

1、想要一款既要能压数到mysql,又要能压数到postGre,还要能压数到oracle的自动化工具
2、能够很容易编写insert sql(因为需要指定表和指定字段类型压数据),然后点击运行按钮后,就能直接运行;不要写应用代码,因为我比较懒
3、可以指定测试时间,或者TPS等执行时行为。因为压数有数量级要求
4、sql插入的值,最好能动态生成;

目前选择了JMeter,初步的用起来还比较的可爱和丝滑。使用步骤和遇到的问题如下:

Q1 JMeter能同时测试 Mysql,postGreSql,oracle 数据库吗?

能支持的,JMeter 是用java写的,添加对应的JDBC驱动后,理论上任何数据库都可以进行测试。 这货还能测试常用的HTTP接口,TCP,FTP等,支持的种类还挺多。 在得到肯定回答后,开始了正式动手

Q2 JMeter 如何下载,安装和配置了?

两种下载方式

官网,非常慢:下载地址:https://jmeter.apache.org/

百度网盘下载地址: https://pan.baidu.com/s/1Ymoqk9besbSGSVha7OhW3Q 提取码:altb
和官网源文件 SHA512对比过,没有更改,请放十二个心使用。

安装

由于下载的是zip包,解压到本地目录即可。入下图:

适合程序员的DB性能测试工具 JMeter_mysql

配置

系统环境变量里增加
JMETER_HOME 解压包目录
Path %JMETER_HOME%\bin
ClassPath %JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib/logkit-2.0.jar;

启动

JMeter由于是java开发,运行依赖jvm。具体java安装配置,不详讲 进入bin目录。点击jmeter.bat。

启动后大概长这样

适合程序员的DB性能测试工具 JMeter_sql_02

Q3 JMeter 如何配置 mysql 连接信息?

把Mysql 驱动加入到测试计划里,否则执行的时候会找不到对应驱动。在配置页面--->browse里加入mysql驱动位置

适合程序员的DB性能测试工具 JMeter_数据库_03

新建一个ThreadGroup,默认配置就好。

(见名知意,编程术语里叫线程组,测试术语里叫做用户数,可以指定测试的时候,模拟多少个用户,其实是多少个线程)

适合程序员的DB性能测试工具 JMeter_数据库_04

在ThreadGroup下新建JDBC链接信息。
路径Add===>Config Element===>JDBC Connection Configuration 配置JDBC链接信息。比如数据库url,用户名,密码,驱动名字等。入下图

适合程序员的DB性能测试工具 JMeter_mysql_05

Q4 JMeter 如何配置测试的insert sql

在新建的ThreadGroup下新建JDBC Request。路径 Add--->Sampler---->JDBC Request
简单的三步配置,即可执行sql:

  1. 指定数据源
  2. 选择Update Statement
  3. 填写Sql

一般到这里,就可以调试性的执行了;如果要查看sql执行结果请看Q9;如果执行错误,需要排查问题请看Q9和Q8

Q5 Jmeter 在测试 insert 语句时,能动态生成插入字段的值吗?

可以的。目前有三种方式支持动态插入值。
第一种:用户变量定义
定义用户变量: 测试计划里,用户定义变量设置

适合程序员的DB性能测试工具 JMeter_sql_06

在Sql里,用${变量名}的方式进行使用;

INSERT INTO `orders`(`order_id`,`sku_id`, `pay_type`, `pay_amount`, `pay_time`,  `remark`) VALUES (${order_id},1, 1, 12.03, '2023-08-14 14:34:23',  '第一个测试');

第二种:从excel文件中指定,不详述;比第一种值的来源更灵活

第三种:使用JmeterBean shell。非常的灵活,对写java代码的同学无门槛

用法:新建BeanShell PreProcessor :路径add===》Pre Processor===>eanShell PreProcessor

BeanShell 语法,基本上是java语法。

适合程序员的DB性能测试工具 JMeter_sql_07

在sql里使用 ${order_id_shell} 对变量进行引用。这个脚本里,我用时间戳作为订单ID;注意这个值只支持String

Q6 jmeter 里如何设置,测试总次数或者测试持续时间

想要压测一定的数据量到库里,不可能只执行一次就完了吧。可以设置sql执行总次数或者持续执行sql的时间来解决。

注意 测试总次数和测试持续时间,两者选其一;
测试 总次数=图里的线程数*循环次数
测试持续时间,以秒为单位

适合程序员的DB性能测试工具 JMeter_数据库_08

Q7 数据库里的自增,在JMeter里能实现吗?

可以实现的,JMeter里有计数器,再加上变量引用,能解决自增的问题。并且还能保证在多个线程并发情况下,保证自增ID的唯一。
新建Counter:路径 在Add=config Element=>Counter里
填写;初始值,增量值;申明外部使用的变量名即可;使用也是通过${order_id_auto_incr}方式;这个变量在Bean shell脚本里也可以使用;大大增强了编码的灵活性

适合程序员的DB性能测试工具 JMeter_数据库_09

Q8 JMeter里能看到执行的错误日志吗?

如果不小心编写的脚本有问题,执行的时候,报错了,需要去排查,可以看JMeter本身的执行日志,在安装目录下的\bin\jmeter.log里

Q9 JMeter 能看到SQL执行结果吗?

想看看SQL执行结果,或者类似的HTTP执行返回后的结果 可在View Results Tree里查看。路径 Add===>Listener===>View Results Tree 之前没配置mysql 驱动jar包,返回报错了

适合程序员的DB性能测试工具 JMeter_数据库_10

Q10 JMeter如何查看测试报告

预测试已通过,正式压测后,想看看测试接口执行总次数(Samples),TPS(Throught),平均相应时间(Average),最大响应时间(Max),最小响应时间(Min),接口正确率(Std.Dev),错误率(Error)等指标,需要添加 Summary Report。路径 Add===>Listener======Summary Report

适合程序员的DB性能测试工具 JMeter_sql_11

总结

天天写CRUD接口,到底写的这些接口性能咋样了?敢拿出来遛遛吗?JMeter可以让我们用数据来说话;我写的接口性能非常好,延迟小,吞吐量大。每个程序员都值得试试

标签:JMeter,java,DB,JDBC,测试,sql,测试工具,执行
From: https://blog.51cto.com/u_16205794/7122164

相关文章

  • PLSQL:DBMS_XMLPARSER包
    使用==DBMS_XMLPARSER==,你可以访问XML文档的内容和结构。它描述了处理XML文件的计算机程序的行为。在结构上看,XML文档和SGML文档是一样的。XML文档是由称为==实体==的存储单元组成的,实体中包含解析的和未被解析的数据。解析后的数据由字符串组成,其中一些代表字符数据,一些代表标记......
  • Spring Boot集成Sharding JDBC分库分表
    背景近期公司购物车项目需要使用ShardingJDBC分表,特记录下。ps:未分库依赖引入<!--sharding-sphereVersion:4.1.1--><dependency><groupId>org.apache.shardingsphere</groupId><artifactId>sharding-jdbc-spring-boot-starter</artifactId><ver......
  • centos7安装mariadb-10.10.6-linux-systemd-x86_64.tar.gz
    [root@kht100data]#mysql_install_db--user=root--basedir=/usr/local/mariadb--datadir=/usr/local/mariadb/dataInstallingMariaDB/MySQLsystemtablesin'/usr/local/mariadb/data'...2023-08-1711:07:360[Note]StartingMariaDB10.10.6-MariaDB......
  • Oracle DB :用户自定义数据类型
    用户自定义类型可以使用Oracle内嵌的数据类型和其他用户自定义类型作为对象类型的构建块,对象模型构成了在应用中数据的结构和行为。下面将描述用户自定义类型的种类。提示:可以参考createType和createtypebody获取更多的创建用户定义数据类型的信息;==对象类型==对象类型是真......
  • 模糊测试面面观 | 模糊测试工具知多少
    自1988年威斯康星大学的BartonMiller首次提出模糊测试这一概念以来,模糊测试领域经历了持续长久发展。模糊测试作为一种软件测试方法,旨在通过向程序输入模糊、随机、异常的数据,探测和发现潜在的漏洞和错误。这种方法备受安全研究人员的青睐。随着时间的推移,这一领域呈现出了蓬勃发......
  • 快照隔离级别原理 | StoneDB 技术分享 #1
    设计:小艾审核:丁奇编辑:宇亭作者:罗中天(花名:德里克)浙江大学在读硕士、StoneDB内核研发实习生ANSISQL-92标准中规定了四种事务隔离级别和三种异象:读未提交(ReadUncommitted)、读已提交(ReadCommitted,简称RC)、可重复读(RepeatableRead,简称RR)和串行化(Serializable),其中读......
  • redis:AOF与RDB
    AOF学习自:redisAOF实现原理在Redis的配置文件redis.conf中有一节名为APPENDONLYMODE,其中有这两项:appendonly和appendfilename,是代表AOF持久化,该机制对应的文件以aof为后缀。AOF(AppendOnlyFile)持久化机制是Redis用来保证数据高可靠性和持久性的一种机制。其机制是通过将R......
  • [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序
    1.今天开发了一套服务程序,使用的是Odbc连接momhistory.在我本机用VS打开程序时,访问一切正常,当发布出来装在电脑上,连接momhistory时提示:[Microsoft][ODBC驱动程序管理器]未发现数据源名称并且未指定默认驱动程序 2.检查ODBC数据源配置时感觉也没啥问题。3.发现“要用......
  • jmeter详解-线程组详解(1)-Thread Group
    Jmeterplugin插件的分类StandardSet组件:对线程组进行了扩展,扩充了许多丰富图表的监听器,可以用Jmeter来监控服务器ExtrasSet组件:支持远程监控,图表展示更加丰富ExtraswithLibsSet组件:提供对JSON的支持,新增了JMS取样器WebDriverSet组件:与WebDriver进行了集成,进行自动化测......
  • modbus基础
    Modbus是一种单主站的主从通信模式,Modbus只能有一个主站,允许多个从站(0-247);从站之间不能交流;主站发送数据,从站应答;一主多从;1.地址码,表,功能码地址码一般是Modbus协议的第一个字节(8位),每个从站都必须有唯一的地址码,主站通过指定地址码将指令发送到相应的从站,地址吗范围0-255,0......