Jmeter 链接MySQL测试

1.环境部署

1.1官网下载MySQL Connector

https://dev.mysql.com/downloads/connector/j/

1.2 解压后,将jar放到jmeter/lib目录下

1.3 在测试计划中添加引用

2.脚本设置

2.1设置JDBC Connection Configuration

先添加一个setUp线程中,在setUp中添加“配置元件”-JDBC Connection Configuration

注:当然你也可以根据测试需求在执行线程组中添加JDBC Connection Configuration,放在setUp中主要是为了避免每次迭代都重新创建链接

在Variable Iame for created pool中写入创建链接的引用名,后续使用此名称

在Database Connection Configuration 中写入链接数据库信息

Database URL:数据库连接 URL
JDBC Driver class :数据库驱动
Username :数据库登录用户名
Password :数据库登录密码
Connection Properties 建立连接时要设置的连接属性

数据库

驱动

URL

MySQL

com.mysql.jdbc.Driver

jdbc:mysql://host:port/{dbname}

PostgreSQL

org.postgresql.Driver

jdbc:postgresql:{dbname}

Oracle

oracle.jdbc.driver.OracleDriver

jdbc:oracle:thin:user/pass@//host:port/service

sqlServer

com.microsoft.sqlserver.jdbc.SQLServerDriver

jdbc:sqlserver://host:port;databaseName=databaseName

还可以根据自己需求自定义其他参数

2.2 设置 JDBC Request

2.2.1 参数说明

  • Variable Name:填写前面创建的数据库连接池的名字
  • Query type:填写的sql语句
  • Parameter valus:参数值
  • Parameter types:参数类型,可参考:Javadoc for java.sql.Types
  • Variable names:保存sql语句返回结果的变量名
  • Result variable name:创建一个对象变量,保存所有返回的结果
  • Query timeout:查询超时时间
  • Handle result set:定义如何处理由callable statements语句返回的结果

2.2.2 Query type 参数设置

  • Select statement:查询语句,只能进行一条sql语句的查询
  • callable statement:如果需要进行多条sql语句的查询
  • Update Statement:这是一条更新语句包含insert和update,也是只能进行一条sql语句的查询
  • Prepared Select Statement:用于多次执行的select语句
  • prepared select:用于绑定变量重用执行计划,对于多次执行的SQL语句,prepared select 的第一次执行消耗很高,它的性能主要体现在重复执行上
  • Prepared Update Statement:和我们的prepared select用法极为类似
  • Commit:将未存储的SQL语句写入数据库,使用不多

2.2.3 Parameter valus的使用

在sql query中使用”?“作为占位符,并传递参数值和参数类型

3.获取返回值

3.1 通过参数名获取

当Variable names中设置了参数名,可以使用参数名获取参数值

  • keyA_# 获取A列总行数
  • keyA_1 获取A列第一个值
  • keyA_2 获取A列第二个值
  • keyB_2 获取B列第二个值
  • ...

执行时直接引用参数名

def key_all = vars.get('row_key_#')
log.info('总行数 '+key_all)
def key_1 = vars.get('row_key_1')

3.2 for each 遍历

请求中引用输出变量名${F_row_key}

输出:

4.记录一个坑

设置唯一数时,使用jmeter计数器,设置自增规则后,在JSR223中引用

4.1原始JSR脚本(报错)

直接引用以${}形式引用'${P_select}'

def P_select = '${P_select}'
log.info('当前key '+ P_select)

导致'${P_select}'计数器在执行取值阶段数据异常,并没有按照预想递增方式取值;

5并发演示:

以线程1-3为例,所以迭代取值都为key = 16

4.2 修改后JSR

使用vars方式取值:

def P_select = vars.get('P_select')
log.info('当前key '+P_select)

能够按照设定依次递增取值

5.补充

跨线程组传参

线程组1
props.put('P_row_pk',row_pk)
线程组2接收
String props_pk = props.get('P_row_pk')

数据库修改链接数

查询容器
docker ps
进入容器,或进入MySQL安装目录
sodo docker exec -it mysql bash
连接MySQL
mysql -u root -ppassword -h localhost
查询当前连接数
SHOW VARIABLES LIKE 'MAX%';
修改连接数
set global max_connections = 151

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Oxygen2Test

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

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

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

打赏作者

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

抵扣说明:

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

余额充值