使用数据库进行参数化
参数化性能脚本的另一种方法是通过 JDBC 使用数据库数据。JDBC 是一个应用程序编程接口,用于定义客户端如何访问数据库。
首先,将 JDBC 驱动程序下载到你的数据库(请参阅数据库供应商)。例如,可以在这里找到 mysql 驱动程序。然后,你可以通过使用以下表单将 .jar 文件添加到测试计划中来添加它:
但最好在 lib 文件夹中添加 Jar 文件并重启 JMeter。
之后,使用“JDBC 连接配置”元素配置数据库连接。像这样: 右键单击 Thread Group - > Add - > Config Element - > JDBC Connection Configuration
‘JDBC 连接配置’参数:
- 名称 - 将在线程组树中显示的连接配置的名称
- 变量名称 - 将用作数据库连接的唯一标识符的名称(可以使用多个连接,每个连接将绑定到不同的名称)
- 最大连接数 - 连接池中允许的最大连接数。在 0 的情况下,每个线程将获得其自己的池,其中包含单个连接
- Max
Wait(ms)
- 如果在 db 连接期间超过指定的超时,则池会引发错误 - Eviction Runs 之间的时间(毫秒) - 从数据库中驱逐未使用的连接的线程运行之间暂停的毫秒数
- 自动提交 - 是为相关数据库连接打开自动提交
- 空闲时测试 - 在检测到有效请求之前检查空闲连接。更多细节:BasicDataSource.html#getTestWhileIdle
- Soft Min Evictable Idle
Time(ms)
- 指定连接在数据库池中空闲之前可以被驱逐的时间段。更多细节:BasicDataSource.html#getSoftMinEvictableIdleTimeMillis - 验证查询 - 将用于验证数据库是否仍在响应的运行状况检查查询
- 数据库 URL - 数据库的 JDBC 连接字符串。请看这里的例子
- JDBC 驱动程序类 - 适当的驱动程序类名称(特定于每个数据库)。例如,MySql db 的’com.mysql.jdbc.Driver’
- 用户名 - 数据库用户名
- 密码 - 数据库密码(将在测试计划中未加密存储)
在我们的例子中,我们只需要设置必填字段:
- 变量名绑定到池。
- 数据库 URL
- JDBC 驱动程序类
- 用户名
- 密码
屏幕中的其余字段可以保留为默认值:
我们假设我们将测试用户凭据存储在数据库中:
现在,当配置数据库连接时,我们可以添加 JDBC 请求本身并使用其查询从数据库获取所有凭据: 右键单击 Thread Group - > Add - > Sample - > JDBC Request
通过使用’Select Statement’查询和’Variable Names’,我们可以解析对自定义变量的响应。
我们现在将拥有可在后续请求中进一步使用的 JMeter 变量。将使用增量后缀(email_1,email_2,email_3 ……)创建指定的变量。
要在登录请求中使用这些变量,我们需要添加一个计数器,用于从 JDBC 查询响应中访问正确的值。要在 JMeter 中添加’Counter’元素: 右键单击 Thread Group - > Add - > Config Element - > Counter
之后,我们可以使用__V 函数更新登录请求。这将返回计算变量名称表达式的结果,并可用于计算嵌套变量引用:
指定的配置足以使用数据库值跨不同用户运行脚本: