0x00 前提
假设有URL为http://www.xxx.com/test/?p1=${p1}&p2={p2}
MySQL数据库:host:192.168.0.199 , 账号:root ,密码:1234 ,数据库名:ver214
表中值为:
CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`par1` varchar(200) DEFAULT NULL,
`par2` varchar(200) DEFAULT NULL,
PRIMARY KEY (`id`))
0x01 创建Jmeter测试
结构如图
视图中组件的解释:
线程组
JDBC Connection Configuration(数据库设置)
JDBC Request
BeanShell PostProcessor
循环控制器
计数器
HTTP请求
察看结果树
0x02 配置数据库变量
0x03 设置BeanShell的后处理
在这里的Script中获取并设置变量,在vars中的变量名为"cnt"
vars.put("cnt", vars.getObject("obj_db").size();
0x04 配置循环
设置循环次数为:${cnt}
0x05 配置计数器
递增设置为:1
设置引用变量名称:cnter
这种逻辑控制器可以看做为for循环。可以类比成这个样子“for(int cnter = 0; cnter < ${cnt}; ++cnter}”
使用方法为${cnter}
0x06 配置BeanShell前处理
在测试的URL中需要获取2个表中字段par1,par2分别放到URL的p1,p2中做参数。
vars.put("p1", vars.getObject("obj_db").get(${cnter}).get("par1"));
解释,获取obj_db这个数据表中第${cnter}行,“par1”列,并将它放在vars中的键值为p1。
0x07 配置HTTP取样器
按照常规用法,只是在参数设置中如下:
p1 ${p1}
p2 ${p2}
这里会自动从vars中获取键值为p1/p2的变量
0x08 结论
这样做可以省事,直接读取数据库中,可以处理一些从数据看中获取数据的问题,另外在这里我知道了关于前后处置的异同。这种情况主要锻炼了Jmeter的变量设置和操作控制域的问题,满有意思的,记录下。当然这里还有关于线程的一些干扰需要注意。