Jmeter-jdbc协议

1、下载对应数据库的jar包,放到jmeter的lib文件夹下
2、配置jdbc的配置原件
在这里插入图片描述
不同的数据库 url 写法不一样:
在这里插入图片描述
driver class 不同的数据库,也是不一样
mysql 5: com.mysql.jdbc.Driver
mysql8:手动编辑:com.mysql.cj.jdbc.Driver

3、使用JDBC取样器,编写数据库命令,存放查询到的数据
在这里插入图片描述
sql语句,CRUD

​ query type: select statement 、 update statement、 prepared select statement 、 prepared update statement

带有 prepared开头,是脚本中,可以带有参数

  • sql中带参数的写法: 两种
    • 直接在sql中,进行变量引用 ${var} 但是不推荐
    • 用 ? 变量占位符 ====推荐
    • 示例select id from user where name=?and useid?;这里将name条件的值进行参数化,防止sql注入
    • 这时我们需要在下方的Parameter values处引用之前设置好的这个变量的值和Parameter types类型,多个用,隔开
      在这里插入图片描述
      variable:变量名

variable names:这里是将查询到的数据存入mobiles中
在这里插入图片描述
这种格式我们如果要调用,可以用foreach控制器进行调用
比如:你需要获取这个电话号码进行登录接口参数化
ForEach控制器:
在这里插入图片描述
调用测试结果:
在这里插入图片描述
这种只是适合做接口自动化,如果是做性能的话,我们没循环执行一遍都会去查询一次数据库,jmeter自身花费时间,测出数据不准确,所以我们应该只让他执行一次查询:

方案:使用仅一次控制器或者setUP线程组
在这里插入图片描述
1、setup线程组先从数据库读取数据存放在一个变量中,在把变量的值设置为属性,方便其他线程组调用,

使用循环控制器,把从数据库从读取的值,全部设置为属性
在这里插入图片描述
mobile_${d}:把每个属性的值存入一个变量中,方便后续调用

${__V(mobiles_${d},)}:利用V函数拼接,数据库中读取的值,赋值给上面的变量

计数器元件(下面线程组的计数器也是一样的设置):
在这里插入图片描述

2、在主线程组中,参数化使用上面的值进行登录
在这里插入图片描述
${__P(mobile_${f},)}:这里运用__P函数调用,属性的值,这里为什么是(mobile_${f}而不是上面的(mobiles_${d},是因为上面一个线程组的计数器元件不能被其他的线程组使用,所以我在下面一个线程组中设置一个与上面线程组相同的计数器,这样调用 d 和 {d}和 d{f}实际的下标是一样的,所以能够获取到设置的属性值

计数器元件:
在这里插入图片描述
这里的最大值(Maximun value):像循环从数据库中获取的总条数,但因为参数(mobiles_#)不能跨线程组使用,所以又设置成了属性,调用

注意:可以用__counter函数代替计数器,但是如果不是每次递增1的话,就不能用__counter函数

所以这样做下来,感觉使用仅一次控制器的方案会更简单一些,后面去试一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值