背景:做接口压力测试时可能需要从数据库中读取数据作为参数进行传递,jmeter提供JDBC连接的相关元件,本文记录jmeter连接mysql数据库进行参数传递的关键步骤和方法
1、下载mysql数据库驱动包并添加到测试计划中
1.1 先查看服务器中安装的数据库版本,下载一个高于数据库版本的数据库驱动包,如:服务器mysql版本为5.6.0,我下载的是mysql-connector-java-8.0.11.jar
1.2 在jmeter的测试计划中添加下载的jar文件
2、在线程组中添加JDBC Connection Configuration并配置数据库连接参数
2.1 右键线程组->添加->配置元件->JDBC Connection Configuration
2.2 填写配置信息,如下图所示
参数说明:
Varibale Name:注意变量名,后面添加jdbc请求时需要与该名字一致
Database URL:数据库连接地址,jdbc://mysql/地址:port/db_name,加上“?useUnicode=true&characterEncoding=utf8”为了避免后续相关测试的时候中文显示乱码
JDBC Driver class:com.mysql.jdbc.Driver
Username:数据库用户名
Password:数据库密码
3、添加JDBC Request
3.1 线程组->添加->Sample->JDBC Request
3.2 添加需要查询的语句【不带变量】
参数说明:
Variable Name:之前配置的JDBC Connection Configuration的Variable Name名称保持一致
Query Type:含变量的sql查询,选择Prepared Select Statement,不含变量的sql查询,选择Select Statement,同理update的选项
Query:输入sql语句,注意不要加分号
Parameter values:引用用户定义的其他变量
Parameter types:变量的类型
Variable names:保存查询结果,供其他元件调用,这里需要是order_no需要作为变量保存结果;当查询结果是多个字段时,变量用逗号隔开,如new_order_no,new_id。
Result variable name:上面Variable names中的变量是个数与列对应的,Result variable name是把整个结果存在一个数组中,返回结果有点类似json字符串
3.3 运行下脚本,检查是否可以正常从数据库查询数据【不带变量】
3.5 添加需要查询的语句【带变量】,选择Query Type为prepared select statement
3.5.1 方法一:SQL中带变量可以通过?占位符填充变量,如下图所示
3.5.2 方法二:直接在SQL语句中通过${} 引用参数
3.5.3 检查带变量输出的结果以及将结果保存为数组输出的结果
4、实际的测试过程中通常我们只需要查询一次,查询结果供其他请求使用,可以通过仅一次控制器实现
4.1 线程组->添加->逻辑控制器->仅一次控制器,将JDBC request移动到仅一次控制器内部,如下图所示
关于其他请求调用JDBC Request变量的方法请关注后续笔记