JMeter核心配置元件之JDBC连接配置

一、docker安装mysql

  • 拉取镜像

    docker pull mysql:latest
    
  • 创建本地文件夹

    sudo mkdir -p ~/docker/mysql/{conf,logs,data}
    
  • 进入目录

    cd /docker/mysql
    
  • 启动容器

    docker run --name mysqlserver \
    -v $PWD/conf:/etc/mysql/conf.d \
    -v $PWD/logs:/logs \
    -v $PWD/data:/var/lib/mysql \
    -e MYSQL_ROOT_PASSWORD=123123 \
    -d -i -p 3306:3306 mysql:latest
    
  • 查看进程

    docker ps -a
    

  • 进入容器

    为配置数据库做准备

    docker exec -it mysqlserver bash
    
  • 登陆mysql

    输入密码123123

    mysql -uroot -p
    

  • 开启远程访问权限

    use mysql;	
    
    select host,user from user;
    
    ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123123';
    
    flush privileges;
    

二、创建数据表

  • 查询本机IP地址

    ifconfig
    
  • 连接数据库

  • 创建数据库及表

    -- 创建数据库
    CREATE DATABASE  IF NOT EXISTS `jmeter_class`;
    
    ---跳转到jmeter_class数据库
    USE `jmeter_class`;
    
    ---删除user表
    DROP TABLE IF EXISTS `user`;
    
    ---创建user表
    CREATE TABLE `user` (
      `uid` int(11) NOT NULL AUTO_INCREMENT,
      `username` varchar(100) DEFAULT NULL,
      `password` varchar(100) DEFAULT NULL,
      PRIMARY KEY (`uid`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
    
    

三、mysql connector依赖包下载

由于connector依赖包的版本与mysql 的版本有对应关系,如果版本不兼容将报错,所以需要先查看安装的mysql 版本,具体如下所示:

  • docker mysql版本查询

    查询出的结果mysql是8.027版本

    #进入容器内部
    docker exec -it mysqlserver bash
    
    #输入密码
    mysql -uroot -p
    
    #查看数据库版本
    select version();
    

  • mysql connector依赖包下载

    需在页面中Select Operating System选项中找到Platform Independent点击,会跳转到下载页面,选择mysql-connector-java-8.0.27.zip下载即可

四、管理connector依赖包

把mysql connector依赖包,放置在jmeter安装目录下lib中,然后重启jmeter,如图所示:

或者在Jmeter的Test Plan中直接引入jar包,如下图所示:

五、jmeter连接MySQL数据库

  • 选择测试计划-右键添加配置元件-JDBC Connection Configuration

  • 填入数据库连接信息

    • Variable Name for created pool:变量名,类似服务别名,可自行定义

    • DataBase URL:基本格式【jdbc:mysql://数据库地址:端口】,【jdbc:mysql://】是jdbc连接mysql数据库固定前缀,常用格式,加入后缀防止乱码

      jdbc:mysql://{ip}:{port}/{dbname}?useUnicode=true&characterEncoding=utf8
      
      #举例
      jdbc:mysql://192.168.28.241:3306/jmeter_class?useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true
      
    • JDBC Driver Class:选择对应的驱动类

    • Username:用户名

    • Password:密码

六、配置JDBC Request

  • 取样器参数详解

现在线程组中加入JDBC Request取样器,如图所示:

Variable Name of Pool declared in JDBC Connection Config :数据库连接池的名称,需要与JDBC Connection Configuration的Variable Name名称保持一致

Query:填写要被执行的SQL语句

Parameter valus:参数值

Parameter types:参数类型

Variable names:保存sql语句返回结果的变量名

Result variable name:创建一个对象变量,保存所有返回的结果

Query timeout:查询超时时间

Handle result set:定义如何处理由callable statements语句返回的结果

我们添加一个监听器,保存脚本运行一次,查看执行结果。

  • 插入数据取样器,需要注意的是插入语句时,Query Type要选择Preparete Update Statement。

  • 查询数据取样器,需要注意的是插入语句时,Query Type要选择Select Statement。

七、JDBC Request参数化

方法(一):在被执行的SQL语句中使用“?”作为占位符,并传递参数值和参数类型。

  • 在Test Plan界面User Defined Variables中定义需要的变量、

  • JDBC Request取样器界面SQL Query输入框中以${变量名}的形式引用变量。被执行的SQL语句中使用“?”作为占位符,并传递参数值和参数类型。

方法(二):自定义用户变量,然后进行引用

八、参考

1、jmeter压测练习:https://github.com/princeqjzh/iJmeter

2、dbeaver下载:https://dbeaver.io/download/

3、mysql connector依赖包下载:https://downloads.mysql.com/archives/c-j/

posted @ 2022-08-03 20:35  xyztank  阅读(887)  评论(0编辑  收藏  举报