数据库驱动包下载与安装

示例:连接 MySQL

下载 Connector

https://dev.mysql.com/downloads/connector/j/

安装

下载完成后解压放到 JMeter 的 lib/ext

重启 JMeter

JDBC 的连接配置

添加配置元件 - JDBC Connection Configuration

参数详解

  • Variable Name for created pool:自己定义连接数据库的名称,需要记住,这里会在后续使用 JDBC Request 中用到
  • Database URL:数据库 URL,jdbc:mysql://主机 IP 或者机器名称:MySQL 监听的端口号/数据库名称,如:jdbc:mysql://localhost:3306/kyj。URL 后面的参数(可以不写)characterEncoding=utf8&useSSL=true&serverTimezone=UTC,设置时区和编码格式
  • JDBC Driver class:MySQL 新版使用 com.mysql.cj.jdbc.Driver
  • username:登录数据库的用户名
  • password:登录数据库的密码

添加 JDBC Request

参数详解:

  • Variable Name for created pool:前面自己定义的连接数据库的名称
  • JMeter 中写 SQL 语句,末尾不建议用 ;
  • JDBC Request 请求中,不支持写多条语句

知识点

  • 如果在 SQL 语句中使用变量,且是字符串类型,需要加上引号(前提是变量值没有加引号),如 '${name}'
  • 如果在 Parameter values 中使用变量,且是字符串类型,不需要加上引号,只需要在 Parameter types 里写明为 varchar 即可
  • SQL 中可以使用问号占位符,对应着 Parameter value、Parameter type 填写值的数量要保持一致,用 , 分隔
  • SQL 中使用占位符时,Query Type 必须选择 Prepared Select Statement 或者 Prepared Update Statement
  • 我们可以用 JMeter 变量去赋值,看下面例子:

关于 Query Type

  • Select statement:查询脚本,不带变量参数
  • Update statement:增删改脚本,不带变量参数
  • Prepared select statement:查询脚本,带变量参数
  • Prepared statement:增删改脚本,带变量参数

将得到的结果集进行遍历,依次再进行处理,可以使用逻辑处理器

如下,得到结果集是多条,且每个上面步骤中配置的 variable 会返回两个参数

例如 vgqid,一个是 vgqid_# 代表查到 vgqid 的数据一共多少条,另外则是这些 vgqid 所有的值,参数以 vgqid_{索引值,从1开始} 展示。

添加循环控制器设置

动态参数可以使用拼接函数 __V 和计数函数 __counter

例如在下面的登录接口中希望循环 ${vgqid_#} 次,然后取 vgqid 的值进行查询。

则可以使用 ${__V(vgqid_${__counter(true,)},)} 取出 vgqid 的值。这里需清楚配置 counter 函数的 false 和 true,如果循环控制器内还有其他的组件也需要使用变量参数获取 vgqid 的值,那就设置为 true。

关于 counter 参数

每次调用计数器函数都会产生一个新值,从 1 开始每次加 1。计数器既可以被配置成针对每个虚拟用户是独立的,也可以被配置成所有虚拟用户公用的。如果每个虚拟用户的计数器是独立增长的,那么通常被用于记录测试计划运行了多少遍。全局计数器通常被用于记录发送了多少次请求。

计数器使用一个整数值来记录,允许的最大值为 2,147,483,647。

功能:这个函数是一个计数器,用于统计函数的使用次数,它从 1 开始,每调用这个函数一次它就会自动加 1,它有两个参数,第一个参数是布尔型的,只能设置成 "TRUE" 或者 "FALSE",如果是 TRUE,那么每个用户有自己的计数器,可以用于统计每个线程各执行了多少次。如果是 FALSE,那就使用全局计数器,可以统计出这次测试共运行了多少次。第二个参数是"函数名称"。

格式:${__counter(FALSE,i)}

**使用:**我们将 __counter 函数生成的参数复制到某个参数下面,如果为 TRUE 格式,则每个线程各自统计,最大数为循环数,如果为 FALSE,则所有线程一起统计,最大数为线程数乘以循环数。

参数:

  • 第一个参数:True,测试人员希望每个虚拟用户的计数器保持独立,与其他用户的计数器相区别。False,全局计数器。
  • 第二个参数:重用计数器函数创建值的引用名。测试人员可以这样引用计数器的值:${i}。这样一来,测试人员就可以创建一个计数器后,在多个地方引用它的值。