jmeter测试中,测试数据一般和测试用例分离
测试数据一般可以使用csv构造,进行参数化
但也可以使用mysql等数据库构造
方案一:一个线程循环调用mysql数据,不是并发,不适用于性能测试,更适合接口测试
记录一下:
需求:如果sex是0,那么执行操作1
如果 sex是1,那么执行操作2
具体操作根据实际情况确定,这个例子用bash shell sample代替具体的操作
本地mysql数据库中我新建了 个database,取名jmeter,其中创建了user表
1.首先需要配置jmeter 的mysql源
添加JBDC connection Configuration
注意:
variablename for create pool:jetertest(jmetertest这个名字自己定义的,记住下面要使用)
max number of Conection JDBC连接池最大连接数
0:线程之间独立,不共享线程池
n :确保该值大于等于最大线程数
Database url:
jdbc:mysql://127.0.0.1:3306/YourDatabaseName?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true
2. 创建一个 JDBC request
3.在debug sample 可以看到结果sexarray
4. 循环遍历mysql返回的sexarray,使用循环控制器和计数器来实现
(1)循环控制器,设置最大的循环次数,在debug sample可以看到一共有4条数据,也就是sex_#=4
(2)计数器 因为循环数据的格式为sex_1,sex_2,sex_3,sex_4,这里使用计数器来构造下划线后面的1,2,3,4
sex_i
(3)使用函数助手来构造sex_i这种需要的格式sex_i
使用函数助手_v构造参数样式
构造格式sex_${i},点击生成,将截图3上的字符串拷贝到if判断语句
、
5 使用条件控制器if来判断执行的请求
sex=0执行请求0 sex=1执行请求1
添加个bash shell sample 或者实际中需要的http请求等
6 运行结果分析
因为数据库mysql sex分别为0,1,1,1
那么对应的beanshell取样器0,1,1,1
注意这里始终都是一个线程循环执行,不能算真正的并发
方案2:使用mysql数据库构造并发的参数化
这里使用
select sex from user where id =${id}
将${id}中的id进行参数化
select sex from user where id=1; select sex from user where id=2; select sex from user where id =3;select sex from user where id =4;
这样每次就可以循环取到每一个sex中的值,sex_1就是我们每次需要的值
下次在详细写