jmeter3_数据库sql使用动态参数
2种方法,法1从数据库读取参数值列表,法2从文件读取。
1.法1从数据库读取参数值列表
1.1 把查询的返回值当做参数值列表
添加jdbc型sampler,并把查询结果映射为变量。注意:用了once only控制器。如果不加once only控制器,jmeter默认每个线程每次执行都执行一遍当前sampler,其实只用查询一次,后续迭代使用给个值即可。
1.2 验证查询中使用动态sql
注意:
- query type使用动态sql,选择Prepared Select Statement.
- 变量值引用了上一步定义的变量。注意:名称有点差异,下一步讲。
- Parameter Type:设为varchar,这里是基于mysql的数据类型的。一开始以为用java的,写的String,报错。
1.3 从计数器和组合变量逐条获取参数值
加了Counter控制器。否则,默认只取第1条,这样sql重复执行n边,用的DB的buffer,不能测试性能。
注意:
- Maximum value:${testrecordid_#},表示变量值查询的条数。
- Exported Variable Name:计数器的变量名,在动态sql中被引用。
- 回去看动态sql的变量值:${testrecordid_1},表示结果集的第1条记录;${_V(testrecordid${N})}表结果集的第N条记录,因为N被技术其控制递增,所以实现的参数值遍历。
1.4 验证结果
第2、3次执行,入参值是不一样的。
2.法2从csv文件读取参数值列表
2.1.从CSV Data Set config读取文件
- 添加CSV Data Set Config组件,选择csv文件。可以为不同的线程设置不同的文件,用到${__threadNum}(表线程号)内置函数区分文件。
- 把取值映射为变量,支持多个字段对应多个变量。
2.2.验证查询从变量取值,且自动递进
直接使用原始变量名${testrecordid}。
自动迭代,第1、2次测试的参数值不同。
ps:真正使用时,建议使用csv读取方式,更简便,也减轻对db的压力。