JMeter对数据库的更新操作

关于JMeter如何连接MySQL数据库,前面文章已经详解的讲解过了。因为配置数据库连是比较固定的步骤,这里就不重复讲解了。

本篇文章主要详细说明,使用JDBC Request组件,如何对数据库进行更新的各种操作。

JMeter中更新语句的操作步骤:

  1. 添加测试计划。
  2. 添加线程组,设置线程组的次数。
  3. 添加JDBC Connection Configuration组件,配置数据库连接。
  4. 添加JDBC Request请求,编写SQL语句,进行参数化。
  5. 运行脚本,发送SQL请求。
  6. 添加察看结果树,查看结果。

说明:更新操作包含insertupdatedelete三种操作,都是一样性质的,所以我们就以insert操作为例进行说明。

1、执行一条insert语句

使用JMeter发送一条insert语句非常的简单。

JDBC Request组件中做如下操作:

  1. 选择数据库连接配置。
  2. 选择Query Type:因为是执行一条insert语句,所以选择Update Statement即可。
  3. 把完整一条insert语句,输入到Query文本框中。

如下图所示:

 

说明:这是最基础的insert操作,发送了一条固定的insert请求。

2、insert语句实现参数化

JMeter中在insert请求中实现参数化也非常的简单。

JDBC Request组件中做如下操作:

  1. 选择数据库连接配置。
  2. 选择Query Type:因为是执行一条insert语句,所以选择Update Statement即可。
  3. 把完整一条insert语句,输入到Query文本框中。
  4. 把需要参数化的部分,替换成参数化变成的引用即可。

使用函数助手为例进行演示,如下图所示:

说明:其他形式的参数化也都可以,如利用CSV这个元件去做语句的参数化。本例中是用函数助手方便演示。

提示:如果有些字段是自增长的值或者是有默认值,那么就可以不写,让其自动填充。

Jmeter高级性能测试实战icon-default.png?t=LA92https://edu.csdn.net/course/detail/35834

3、一次执行多条insert语句

使用JMeter发送一次执行多条insert语句非常的简单,就是直接写入多条insert语句,之间用;分隔开。

JDBC Request组件中做如下操作:

  1. 选择数据库连接配置。
  2. Database URL 后增加一个参数allowMultiQueries=true,才可以执行多条SQL语句(重点)。
  3. 选择Query Type:我们可以选择Update StatementPrepared Update StatementCallable Statement,这三种类型语句都可以。
    选择Update Statement类型,执行一条insert语句发送一次请求。
    而选择Prepared Update StatementCallable Statement类型,则全程只发送一起请求。
  4. 把完整一条insert语句,输入到Query文本框中。

如下图所示:

4、使用Beanshell生成加密数据示例

我们在更新数据库的时候,有时候会有部分数据直接插入是不可以的,需要加密处理。

那么就可以使用BeanShell 取样器组件完成对数据的加密操作。

然后把加密好的数据,存储到JMeter的线程变量中,方便进一步的引用。

提示:加密代码,可以找开发要,也可以自己扒源码找。

JMeter中更新有加密数据的操作步骤:

  1. 添加测试计划。
  2. 添加线程组,设置线程组的次数。
  3. 添加JDBC Connection Configuration组件,配置数据库连接。
  4. 添加BeanShell 取样器组件,编写加密算法,并把加密的数据存储到线程变量中。
  5. 添加JDBC Request请求,编写SQL语句,使用参数化,并引用加密的线程变量。
  6. 运行脚本,发送SQL请求。
  7. 添加察看结果树,查看结果。

(1)测试计划内包含的元件

添加元件操作步骤

  1. 创建测试计划。
  2. 创建线程组:选中“测试计划”右键 —> 添加 —> 线程(用户) —> 线程组
  3. 在线程组下,添加配置原件JDBC连接配置组件:选中“线程组”右键 —> 添加 —> 配置元件 —> JDBC Connection Configuration
  4. 在线程组下,添加取样器BeanShell 取样器组件:选中“线程组”右键 —> 添加 —> 取样器 —> BeanShell 取样器
  5. 在线程组下,添加取样器JDBC Request组件:选中“线程组”右键 —> 添加 —> 取样器 —> JDBC Request
  6. 在线程组下,添加监听器“察看结果树”组件:选中“线程组”右键 —> 添加 —> 监听器 —> 察看结果树

最终测试计划中的元件如下:

点击运行按钮,会提示你先保存该脚本,脚本保存完成后会直接自动运行该脚本。

(2)JDBC连接配置组件内容

基本的JDBC连接配置,界面内容详解可以看前面的文章【JMeter连接数据库】。

主要是定义数据库连接池的名称,还有最下方关于数据库的基本信息配置。

如下图所示:

 

 

Jmeter高级性能测试实战icon-default.png?t=LA92https://edu.csdn.net/course/detail/35834

 

3)BeanShell取样器界面内容

把生成加密内容的BeanShell代码,写入到界面的脚本输入框中。

如下图所示:

完整代码放在下面:

import java.io.PrintStream;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;

public class PWDEncryptionUtils {

    // 静态方法,类直接调用
    // 对明文密码进行加密
    public static String encryptPwd(String pwd) {
        return stringMD5(pwd);
    }

    public static String stringMD5(String input) {
        try {
            MessageDigest messageDigest = MessageDigest.getInstance("MD5");
            byte[] inputByteArray = input.getBytes();
            messageDigest.update(inputByteArray);
            byte[] resultByteArray = messageDigest.digest();
            return byteArrayToHex(resultByteArray);
        } catch (NoSuchAlgorithmException localNoSuchAlgorithmException) {
            localNoSuchAlgorithmException.printStackTrace();
        }
        return null;
    }

    public static String byteArrayToHex(byte[] byteArray) {
        char[] hexDigits = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
        char[] resultCharArray = new char[byteArray.length * 2];
        int index = 0;
        byte[] arrayofByte = byteArray;
        int j = byteArray.length;
        for (int i = 0; i < j; i++) {
            byte b = arrayofByte[i];
            resultCharArray[(index++)] = hexDigits[(b >>> 4 & 0xF)];
            resultCharArray[(index++)] = hexDigits[(b & 0xF)];
        }
        return new String(resultCharArray);
    }

//    public static void main(String[] args) {
//        PWDEncryptionUtils test = new PWDEncryptionUtils();
//        String result = test.encryptPwd("12345678");
//        System.out.println("result = " + result);
//    }

}

//调用执行步骤

// 1.创建实例
PWDEncryptionUtils test = new PWDEncryptionUtils();

// 2.调用加密函数
String pwd=test.encryptPwd("${__RandomString(8,0123456789,)}");

// 3.存储数据到JMeter线程变量中
vars.put("new_pwd",pwd);

说明一下:

  • 这里主要看最后的三行代码,使用函数助手生成的8位数字为数据,进行加密运算。
  • 然后存入到JMeter的线程变量中,变量名为new_pwd
  • 最后,后续的请求中可以引用该变量。

提示:在调试BeanShell代码的时候,可以添加Debug Sampler组件来查看获取结果。

如下图所示:

 

 

4)JDBC Request组件中内容

填写应用的数据库连接池名称,然后编写insert语句,最后加入参数化和加密数据的引用。

我把加密后的数据放在了slogan字段中了,如下图所示:

(5)查看结果

我把线程组中的线程数设置为3,也就是执行三次该请求。

结果如下图所示,执行了三次SQL请求:

我们在去数据库中查看数据是否添加成功。

如下图所示,新增了三条数据,并且slogan字段中的数据是经过加密的。

 

 

以上就完整的实现了,把经过加密的数据,存储到数据库中的演示。

5、注意事项

(1)The server time zone value服务器时区异常

如果报错,如下:

Cannot create PoolableConnectionFactory (The server time zone value '???��������??��??' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.)

解决方法:数据库连接URL后面加 serverTimezone=GMTserverTimezone=GMT%2B8,即可解决。

(2)执行多条SQL语句

执行多条SQL语句时,查询语句selectupdateinsert语句不能在同一个JDBC Request组件中执行。

当执行多条SQL 语句时,每条语句后面加;

并且在 Database URL 后增加一个参数allowMultiQueries=true,否则将不能够执行多条语句,报错。

(3)更新操作中文乱码

需要在 Database URL 后增加一个参数characterEncoding=utf-8,这样就可以解决更新操作时候的中文乱码了。

提示:一定要设置为UTF-8编码吗?不一定,要跟你的数据库的编码保持一致,就不会中文乱码了。

(4)Datebase URL添加参数规则

Datebase URL后增加参数,在dbname后加?,如有多个参数,每个参数用&隔开,如:

jdbc:mysql://127.0.0.1:3306/guest?serverTimezone=GMT&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true Jmeter高级性能测试实战icon-default.png?t=LA92https://edu.csdn.net/course/detail/35834

 

 

 

传说三哥
关注 关注
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Jmeter 连接 mysql 执行update select
jiayinian的专栏
09-16 1154
准备工作 使用不同的数据库,我们需要引入不同的jar包。 方式1:直接将jar包复制到jmeter的lib目录 ,重启jmeter 生效 mysql数据库:无需引入其他数据库驱动jar包。 以mysql 示例  数据库名:  sms,  JDBC Driver Class:  org.gjt.mm.mysql.Driver 下载地址链接:http://pan.baidu.com/s/1
Jmeter学习笔记十三:Jmeter完成数据库的delete、update、select操作
我们仨
03-06 3091
1.Jmeter完成数据库的单个delete操作 步骤如下: 添加测试计划 添加线程组 添加JDBC Connection Configuration,配置信息参考Jmeter连接MySQL数据库 添加JDBC Request并输入sql语句 添加察看结果树,发送sql请求,然后查看数据库,可以看到sid=102的数据已经被删除了! 2.Jmeter完成数据库的批量dele...
常见的浏览器兼容性测试工具
软件测试前沿技术分享
07-19 1112
常见的浏览器兼容性测试工具有以下几种 IETester 这是我最先用的测试浏览器兼容性的工具,想必也是大家用的最多的一个,IETester是一个免费的Web浏览器调试工具,可以模拟出不同的js引擎来帮 助程序员设计效果统一的代码。IETester可以在独立的标签页中开启IE5.5、IE6、IE7,IE8 beta2这4个不同版本的IE。可以方便的解决IE浏览器的兼容问题。 S...
JMeter-JDBC,连接数据库增、删、改、查操作
weixin_50501942的博客
06-08 997
这是一个可调用语句类型,只要语法正确,任何语句,再多的条数都能支持,所以查询或者插入数据,进行多个sql语句操作,那么就要选择Callable statement。插入多条sql语句,则要现在Callable statement。
Jmeter-更新数据库驱动信息
Teamo_mc的博客
12-07 284
由于JDK版本自动升级,导致数据库驱动报错: Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary. 需要
Jmeter连接数据库--查询数据、插入数据更新数据
Yorkie_Lin的博客
06-12 920
Jmeter连接数据库--查询数据、插入数据更新数据连接数据库,提前准备连接Jar包配置连接环境下载jar包创建连接查询单条语句查询多条语句查询插入单条语句插入多条语句插入 连接数据库,提前准备连接Jar包 配置连接环境 下载jar包 1、点击以下链接,是其他优秀博主提供: 链接: link. 2、直接下载到本地,解压包,复制mysql-connector-java-5.24.jar包放到Jmeter安装目录的lib目录下 创建连接 配置包引用到测试计划 操作:测试计划–添加–配置元件–JDBC Con
jmeter连接数据库.txt
06-11
Apache JMeter是一款开源的压力测试工具,主要用于对Web应用进行功能测试以及性能测试。它能够模拟大量的并发用户访问服务器,以此来评估系统的性能表现。此外,JMeter还支持多种协议,包括HTTP、HTTPS、FTP等,并且...
JMeter数据库压力测试
zhang_15222的博客
01-15 511
jmeter数据库压力测试 一、数据库压测 不断的给数据库施加压力,验证数据库处理的性能 二、测试步骤 1、启动jmeter,打开界面工具,添加一个线程组,添加驱动jdbc request 2、添加一个JDBC Connection Configuration,连接池配置文件 Variable Name:连接池名称。JDBC Request会通过此名称来获取连接池的配置,名称可以随意填写,但是最好具体实际的业务意义,方便理解和记忆。 其他的可以默认,可以根据实际情况来调节优化性能。 Databa
Jmeter操作数据库 - lemonshop
10-11
Jmeter操作数据库 - lemonshop
使用 JMeter数据库压力测试[多图]1
08-08
这个组件允许自定义动态SQL语句,确保每次数据库操作的SQL都是不同的,从而提高测试的准确性和真实性。 综上所述,JMeter压力测试的关键步骤包括配置测试计划、设置线程组参数以模拟并发用户、利用用户定义变量生成...
jmeter连接数据库
最新发布
06-03
总之,JMeter结合JDBC驱动使得我们能够对数据库进行详细的性能测试,评估其处理能力、响应时间和资源消耗,从而帮助优化数据库的性能和稳定性。在实际工作中,根据具体需求,你可能还需要配置其他的JDBC连接池,或者...
Jmeter】——Update Statement & Callable Statement & Select Statement 分析
王金龙
02-27 6178
九牛一毛
jmeter数据库配置及修改(工作日记3)
liao_11的博客
01-04 779
jmeter 数据库
jmeter完成数据库的单个update及批量update操作
一个有趣灵魂的测试员,指点江山,挥斥方遒
04-05 1473
步骤: 添加测试计划 添加线程组,设置线程组的次数 添加JDBC Connection Configuration 添加jdbc请求并输入sql语句,进行参数化 发送sql请求 添加察看结果树 一、单个update 1、添加JDBC Connection Configuration,配置数据库连接 2、添加JDBC请求及参数 3、察看结果树 二、批量update操作 批量update方法有:可...
Jmeter数据库批量增删改查
Free355的博客
06-12 2038
JMeter可以通过JDBC请求实现对数据库的批量增删改查。JDBC请求模拟了一个JDBC请求,它是连接池中的一个虚拟用户。JDBC请求可以定义SQL语句和预编译参数,以执行数据库增删改查操作
JMeter】JDBC Request 的 Query Type
01-08 1144
本文转载自:http://www.cnblogs.com/imyalost/p/6498029.html 页面如下: 其中Query Type(SQL语句类型)包含十个类型,每个类型作用都不同,下面分别介绍。 1、Select statement 这是一个查询语句类型;如果JDBC Request中的Query内容为一条查询语句,则选择这种类型。 PS:多个查询语句(不使用参数的情况下)可以放在...
多测师肖sir_高级讲师_第2个月第23讲解jmeter操作数据库
多测师肖sir的博客
10-11 318
jmeter操作数据库
JMETER JDBC操作
weixin_33725722的博客
05-09 99
本文目标 1.添加测试计划 2.配置JDBC连接 3.插入数据 4.使用控制器 5.查看插入结果   1.添加测试计划 添加mysql驱动   2.添加测试计划 3.添加JDBC连接   在这里JDBC连接自动提交修改为false。   4.添加JDBC REQUEST   VARIABLE NAME BOUND TO POOL ...
jmeter内置变量 vars 和props使用详解
热门推荐
dream_na的博客
08-23 1万+
递四方速递
JMeter压测数据库的具体操作
04-24
JMeter压测数据库的具体操作可以通过以下步骤实现: 1. 在JMeter中创建一个Thread Group,设置好线程数、循环次数等参数。 2. 添加一个JDBC连接配置元件,输入数据库连接信息,例如数据库驱动类、URL、查询用户名和密码等。 3. 添加一个JDBC请求元件,输入SQL查询语句。 4. 在结果树中添加一个Aggregate Report元件,查看压测结果报告。 5. 启动压测。 重要提示:使用JMeter进行数据库压测时,需要特别注意对数据库操作是否会对现有数据造成影响,请确认操作无误后再进行压测。
写文章

热门文章

  • mysql Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ 19525
  • JMeter中如何实现参数化(CSV) 16989
  • Jmeter HTTP Cookie管理器的使用 15233
  • MySQL数据表添加字段(三种方式)+MySQL约束概述 13712
  • 如何使用JMeter发送Post请求 13573

分类专栏

  • Jmeter高级性能测试实战 付费 79篇
  • linux基础入门 付费 68篇
  • JMETER 性能测试入门到项目实战 付费 21篇
  • JMeter性能测试使用手册 付费 24篇
  • 全栈软件测试基础入门 付费 65篇

最新评论

  • mysql数据库基础篇之MySQL 如何连接

    理智荔枝-: 大佬的文章写的太精辟了 让我深刻了解了这篇文章的精髓 谢谢大佬分享,希望继续创作优质博文。【我也写了一些相关领域的文章,希望能够得到博主的指导,共同进步!】

  • MySQL安装后的目录结构介绍

    m0_73455938: 请问mysql下载安装后Data目录是空的,里面没有东西,该怎么解决?

  • MySQL转义字符的使用+MySQL系统变量(查看和修改)

    yh变秃了却没变强: 博主的文章总是如一盏明灯,指引我前进,每一篇博文都是一次心灵的提升,你的分享总是如此珍贵,你的博文总是让我拓展了视野,增长了见识,感谢你一直以来的无私奉献。期待更多知识的分享。非常感激你的专业知识传授。

  • android 转鸿蒙开发教程 安卓转换鸿蒙系统

    CSDN-Ada助手: 恭喜你这篇博客进入【CSDN每天值得看】榜单,全部的排名请看 https://bbs.csdn.net/topics/617807594。

  • MySQL AUTO_INCREMENT:主键自增长和MySQL外键约束(FOREIGN KEY)

    秦禹辰: 博主的文章总是如一盏明灯,指引我前进,每一篇博文都是一次心灵的提升,你的分享总是如此珍贵,你的博文总是让我拓展了视野,增长了见识,感谢你一直以来的无私奉献。期待更多知识的分享。非常感激你的专业知识传授。

大家在看

  • java中生成Excel工作簿超链接
  • 【毕设】药店管理系统JAVA-springboot
  • 深入解析C#开发常用设计模式:定义、使用场景与代码示例
  • ros2 topic hz异常排查 94
  • SSM智能家居信息管理iu3jl 智能论坛

最新文章

  • 软件测试基础知识 + 经典面试理论(全网最详细)
  • 大厂软件测试工程师日常工作随记总结
  • 一文章轻松了解软件测试基础知识点
2024
08月 10篇
05月 10篇
03月 5篇
02月 12篇
01月 25篇
2023年330篇
2022年71篇
2021年71篇
2020年149篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

传说三哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家佛像玻璃钢雕塑生产厂家广东玻璃钢动物雕塑制作昆明玻璃钢卡通雕塑浙江省玻璃钢智能雕塑商场街道美陈四川商业商场美陈青海园林玻璃钢雕塑制作抽象玻璃钢卡通雕塑厂新乡抽象校园玻璃钢雕塑威海市玻璃钢人物雕塑价格禹会玻璃钢花盆花器人物玻璃钢雕塑大全江苏玻璃钢人物雕塑制作东莞玻璃钢花盆报价河北超市商场美陈哪家好四川抽象玻璃钢雕塑定做价格蚌埠玻璃钢雕塑哪家好江西个性化玻璃钢雕塑生产厂家静安区正宗玻璃钢雕塑玻璃钢雕塑摆件酒杯郑州不锈钢景观玻璃钢雕塑厂四川步行街玻璃钢雕塑图片玻璃钢花盆种多肉金水玻璃钢雕塑价格常德长沙玻璃钢雕塑品牌哪家好中山玻璃钢卡通雕塑造型福州玻璃钢骆驼雕塑沈阳定制玻璃钢雕塑设计广场玻璃钢动物雕塑直销价格贵州欧式玻璃钢雕塑香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化