Jmeter 数据库测试参数化

1、JDBC Request 参数化

  • 方法一、Jmeter 参数化,在 sql query 中使用变量
    •  Jmeter 参数化,使用 csv 参数化
    •  sql query 中使用 ${变量名} 引用

Jmeter 数据库测试参数化

Jmeter 数据库测试参数化

Jmeter 数据库测试参数化

Jmeter 数据库测试参数化

  • 方法二、在 sql query 中使用 "?" 作为占位符,并传递参数值和参数类型
    • 传递的参数值是常量,多个变量使用 "," 分隔(注意:Parameter values 中传入多个参数时,前提时 sql 中需要多个参数)

Jmeter 数据库测试参数化

    • 传递的参数值是变量,使用 csv 参数化 id 再使用 ${变量名} 的方式  

Jmeter 数据库测试参数化

Jmeter 数据库测试参数化

Jmeter 数据库测试参数化

2、Variables names 参数使用方法

  • Jmeter 官网给的解释是:如果给这个参数设置了值,它会保存 sql 语句返回的数据和返回数据的总行数。假如,sql 语句返回2行,3列,且 variables names 设置为 A,B,那么如下变量会被设置为:
A_#=2 (总行数)
A_1
=(第1列, 第1行)
A_2
=(第1列, 第2行
B_#
=2 (总行数)
B_1
=(第2列, 第1行)
B_2
=(第2列, 第2行)
  • 如果返回结果为 0,那么 A_# 和 B_# 会被设置为 0,其它变量不会设置值。
  • 如果第一次返回 6 行数据,第二次只返回 3 行数据,那么第一次多的 3 行数据变量会被清除。
  • 可以使用 ${A_#}、${A_1}...获取相应的值
  • 实例如下
    • 添加一个 "Debug Sampler" 用来查看输出的结果,设置 variables name 为 A,B,C,D
    •  A 代表第一列所有的数据,A_# 可以获取到第一列的行数  
    •  A_n:获得第一列第 n 行的数据
    • 假如我们只需要第一列和第三列的数据,可以写成  A,,C ;中间的 "," 不可以省略

 Jmeter 数据库测试参数化

Jmeter 数据库测试参数化

Jmeter 数据库测试参数化

Jmeter 数据库测试参数化

3、Result variable name(使用上一次查询结果作为参数)

  • JDBC Request(查询所有信息)请求设置如下

Jmeter 数据库测试参数化

Jmeter 数据库测试参数化

  • 添加 BeanShell Sampler
vars.put("新变量名",vars.getObject("变量名").get(第几个值).get("数据库表列名").toString());

Jmeter 数据库测试参数化

  • BeanShell Sampler 下面添加 JDBC Request,再通过上面的结果变量 ${re} 作为查询条件进行反验证 BeanShell Sampler 取值成功

Jmeter 数据库测试参数化

Jmeter 数据库测试参数化