性能测试|JMeter 连接数据库
jmeter 连接 mysql 数据库
总体步骤如下:
下载 mysql 的 jar 包放入到 jmeter 的 lib 下,然后重启 jmeter
配置 JDBC Connection Configuration
配置 JDBC Request
在请求中引用查询到的结果变量,可以结合计数器取每一个结果值:${_V(tname${index})}
具体实施步骤
下载 Mysql jdbc 驱动包
尽量保证其版本和你的数据库版本一致,至少不低于数据库版本,否则可能有问题。
mysql 官网下载地址:https://dev.mysql.com/downloads/connector/j/
JDBC 驱动在 mysql 的官网下载:https://dev.mysql.com/downloads/file/?id=477058,不需要注册,直接点击左下角的小字
在测试计划下面把 JDBC 驱动包导入,如下图
线程组下添加一个配置元件 JDBC Connection Configuration
Variable Name:自定义参数,在 JDBC Request 中会用到
Database URL:jdbc:mysql:// 数据库 IP 地址:数据库端口/数据库名称;jdbc:mysql://localhost:3306/mysql?serverTimezone=UTC&characterEncoding=utf-8,注意:?后面的 serverTimezone=UTC&characterEncoding=utf-8 不能缺少,否则会报时区错误。
JDBC Driver Class:com.mysql.jdbc.Driver
Username:数据库用户名
Password:数据库密码
在添加一个 Sampler:JDBC Request
4.1 由于只需要在数据库中取一次数据,即 jdbc 取样器只需要执行一次,可以使用仅一次控制器;如下图:
配置路径:逻辑控制器——仅一次控制器
运行之后,数据库会返回某一列下的数据
在 http 请求中引用 tname 变量名,如果有一列数据返回,引用变量的时候可以输入 ${tname_1},发送请求的参数值就是 周启元
variables names 参数使用方法:
Jmeter 官网的解释是:如果给这个参数设置了值,它会保存 sql 语句返回的数据和返回数据的总行数。假如,sql 语句返回 2 行,3 列,且 variables names 设置为 A,C,那么如下变量会被设置为:
A_#=2(总行数)
A_1=第 1 列,第一行;如上面的变量 ${tname_1};
A_2=第 1 列,第 2 行
C_#=2(总行数)
C_1=第 3 列,第 1 行
C_2=第 3 列,第 2 行
如果返回结果为 0,那么 A_#和 C_#会被设置为 0,其他变量不会设置值。
如果第一次返回 6 行数据,第二次只返回 3 行数据,那么第一次的 6 行数据变量会被清除
可以使用{A_#}、{A_1}...来获取相应的值
如果想循环数据库返回的值,可以使用计数器,加引用的变量 ${_V(tname${index})};如下图
根据上方数据库返回的 tname 列下有 9 行数据,在计数器中最大值填入 9,在输入一个变量名 index;
在 http 请求中引用数据量返回的变量+计数器的变量:${_V(tname${index})};
运行结果
评论