配置/使用,以MySQL为例
一、导入数据库(MySQL)的jar包
1. 连接数据库,需要引入外部的jar包
1.1. 下载地址:https://dev.mysql.com/downloads/
1.2. 选择:Connector/J
,进入页面
1.3. 点击下载压缩包
1.4. 不登录,直接选择 No thanks, just start my download.
2. 解压,将jar包放到jmeter的lib目录下
3. 重启jmeter
二、连接数据库配置(JDBC Connection Configuration)
位置:线程组右键 ==> 添加 ==> 配置元件 ==> JDBC Connection Configuration
配置说明:
-
Variable Name for create pool
:数据库的名称 -
Database Connection Configuration
连接数据库相关参数配置说明,如下:-
Database URL
:数据库连接地址
格式:jdbc:<数据库类型>://<数据库链接地址>:<数据库端口号>/<数据库名>
例:jdbc:mysql://127.0.0.1:3306/testdb -
JDBC Driver class
:JDBC Driver需要在 测试计划 中进行导入
使用的是什么数据库就选择什么驱动进行链接,例:com.mysql.jdbc.Driver
在测试计划页面,选择解压好的lib目录下的jar包
-
Username
:连接数据库的用户名 -
Password
:连接数据库用户的密码
-
三、发送数据库请求(JDBC Request)
可以将JDBC请求(SQL查询)发送到数据库
位置:线程组右键 ==> 添加 ==> 取样器 ==> JDBC Request
配置项的含义及解释
配置项 | 说明 |
---|---|
Variable Name of Pool declared in JDBC Connection Configguration | 与JDBC Connection Configuration中的Variable Name for create pool保持一致 |
Query Type | 查询类型 |
Query | sql语句 注:sql语句后面不需要加 ; 变量用 ? 占位例:select * from users where user_name ='xxx' |
Parameter values | 需要传递的变量值 多个变量用 , 隔开 |
Parameter types | 变量类型 例:字段数据类型,varchar |
Variable Names | 保存sql语句返回的数据和返回数据总行数 用 , 隔开跳过列为空 |
Result Variable Name | 创建一个对象变量,保存所有返回的数据 |
query timeout(s) | 超时时间 默认为0,代表无限时间 |
Limit ResultSet | 和 limit 类似作用,限制 sql 语句返回结果集的行数 |
Handle ResultSet | 定义如何处理callable statements语句返回的结果 默认是存储为字符串 |
添加Debug Sampler
添加Debug Sampler
,可以查看变量的数据,方便调试
位置:线程组右键 ==> 添加 ==> 取样器 ==> Debug Sampler
运行测试的例子
1. 只有sql语句的情况
运行结果
2. 将sql语句进行参数化
运行结果和上面相同
注意:
- sql语句中的变量使用
?
占位,可以避免SQL注入的问题 - sql使用占位符时,
Query Type
必须选择Prepared Select Statement
或者Prepared Update Statement
Parameter value
、Parameter type
填写值的数量要保持一致,用,
分隔
3. 变量和参数化结合
用户定义变量
运行结果
注意:sql语句中使用变量时,如果是字符串需要加上引号
4. Variable Names的使用
可以将sql语句查询出的数据进行提取
运行结果
调试取样器-查看提取的数据
解释:
- a_#、b_#、d_#表示的是获取的数据的总条数
- a_1:第一列第一行的数据
- a_2:第一列第二行的数据
- b_1:第二列第一行的数据
- b_2:第二列第二行的数据
注意:
Variable Names
跳过列为空,例:a,b,,d- 如果返回结果为0,那么a_#、b_#、d_#会被设置为0,其它变量不会设置值
- 可以通过
${变量名_#}
来获取总条数 - 可以通过
${变量名_n}
来获取变量名所在的列的第n行的值,例:${a_1}获取第一行第一列的值
5.Result variable name的使用
设置一个变量名,将返回的结果赋值给这个变量
调试取样器-以一个对象的形式返回所有数据
官网参考文档:https://jmeter.apache.org/usermanual/build-db-test-plan.html#building
发送数据库请求(JDBC Request)报错参考:https://www.cnblogs.com/colorfully/p/13870280.html