jmeter连接数据库以及操作

目录

1、下载jdbc驱动:

2、JMeter连接数据库的相关操作 可以参考:

3、数据库连接driverClass和jdbcUrl大全

4、如何插入数据库加密的数据 

5、查询的数据如何参数化?以便供api接口请求入参使用获得响应数据

6、JMeter 线程组 多个线程组的执行顺序

7、通过参数化实现接口关联

8、jmeter并发测试如何保证多线程多请求按照顺序执行


1、下载jdbc驱动:

             下载连接:MySQL :: Download MySQL Installer

             

或者 参考:如何下载MySQL的JDBC驱动包_liaowenxiong的博客-CSDN博客_mysqljdbc驱动包下载

 (将下载好的工具包mysql-connector-java-8.0.30.jar放在 xxx\apache-jmeter-5.5\lib\ext文件夹下)

2、JMeter连接数据库的相关操作 可以参考:

JMeter连接数据库的相关操作_仰望_1的博客-CSDN博客_jmeter连接数据库

3、数据库连接driverClass和jdbcUrl大全

数据库连接driverClass和jdbcUrl大全_vebasan的博客-CSDN博客

82ab4102c2164676b1c95c6118f6fa82.png

4、如何插入数据库加密的数据 

首先将要插入数据的字段进行加密,使用beanshell取样器进行加密;再将加密的数据进行参数化通过sql语句插入进去。

557ca180508d4eaa88bc454881e63917.png

beanshell中创建参数,beanshell中创建新的参数nickname,赋值为另外一个字符串
vars.put(“nickname”,nickname);引用参数值,任何一个地方均可以${nickname} 

源码:
import org.apache.commons.net.util.Base64; 
//String source = vars.get("name"); 
String source = "哈利波特";
byte[] encodedBytes = Base64.encodeBase64(source.getBytes("UTF-8")); 
String encoded = new String(encodedBytes); 
vars.put("b64", encoded);

5、查询的数据如何参数化?以便供api接口请求入参使用获得响应数据

JDBC Request 查询到数据有多条数据,通过调试取样器可以看到

openids_1、openids_2、openids_3、openids_#=3的值

95607932f38249f1bf012ffdcdb24f19.png

(openids和result是设置的变量名称如图7b6ea880d3154eb7b69f75900b08bb3b.png

将查询的多条数据进行参数化供接口传参使用,使用函数助手生成表达式:${__V(openids_${n})},如图:【函数助手对话框,选择功能函数__V,表达式中输入openids_${n},点击生成函数字符串:${__V(openids_${n},)} 】

826e5a3845de4b80af89d59ca6e05a63.png

 新建循环控制器1f1fe050ebd94c2f843c1cc3580d9820.png

 新增计时器:

12774120c3494ac486d2908320b82e9c.png

可以看到执行结果:

701bfb0888f644ceaf4735d9feeacf89.png

6、JMeter 线程组 多个线程组的执行顺序

线程组执行顺序:setUp 类 -》普通线程 类 -》teatDown 类

【测试计划】界面,“独立运行每个线程组” 选项

        勾选中,同一类型线程,根据显示顺序依次执行

        不勾选,同一类型线程,并发执行

770f688f8eeb41d698e78709ab44eff4.png

7、通过参数化实现接口关联

第四条标题中,是一个线程组里只写了一个线程数如下图

10c6812c7400438da135b4240ab18173.png

但是通过添加循环控制器和计时器进而实现查询数据进行参数化提供给请求接口的入参,一个线程组设置线程数为1,查询到n条数据,可以做到有n个参数就执行n个登录请求。那是不是就可以这样设想:一个线程组设置里面写了m个线程数,查询到n条数据,是不是就可以执行m*n个登录请求。显然比较繁琐的。可以这样实现。小编不知算不算压测的一个测试用例呢?欢迎大家来讨论!下面使用另外一种常见的方式:“只查询数据库最新的一条数据,一个线程组设置n个线程数,里面设置线程1个,执行n个登录请求”的方式。(另一种方式在下一边章节中涉及)

查询数据库最新的一条数据:

5409262862cb441c88bd15095cac5da0.png

设置正则表达式提取器:

b954560398fd4c0682d1daf1899c8933.png

 查询数据参数化填入接口入参:

7d0e604001844fa69394c7890435adf7.png  

执行查看结果:略

模板表示取第几个值:

1.$1$和$0$ 区别就是要不要匹配头完整传出来;(0显示匹配头,1不显示)

2.如果你想获取报文中的第N个字段,有两种方法:

一种使用匹配数字1~N控制,

一种是匹配数字 -1全部返回,变量_序号的模式可以自由选择你需要的第几个数。

匹配数字:0表示随机取值, 1代表取第一个值,-1表示取所有符合条件的值

正则表达式:提取一个或多个参数的方法: 

thttps://www.jb51.net/article/230612.htm

8、jmeter并发测试如何保证多线程多请求按照顺序执行

http://t.zoukankan.com/wangjunjiehome-p-14371520.html


由于第二个线程用到第一个线程的响应结果作为请求参数,如果第二个线程跑到第一个线程之前,就会有参数取不到的情况,所以对测试计划的设置做了修改,保证线程按顺序执行

jmeter自带了一个事物锁控制器。

官方把它定义为线程锁控制器(Critical Section Controller)

意思就是这个锁下面的请求,在相同的时间点只会有一个线程去执行它,也就意味着这个锁下面的事物在相同的时间点会给每个线程分配一个,不会产生竞争。

线程组>新增>逻辑控制器>线程锁控制器(临界部分控制器)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值