Jmeter 链接MySQL测试

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

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')

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: mysql