jmeter测试中,测试数据通常和测试用例分离mysql
测试数据通常能够使用csv构造,进行参数化sql
但也能够使用mysql等数据库构造shell
方案一:一个线程循环调用mysql数据,不是并发,不适用于性能测试,更适合接口测试数据库
记录一下:bash
需求:若是sex是0,那么执行操做1并发
若是 sex是1,那么执行操做2函数
具体操做根据实际状况肯定,这个例子用bash shell sample代替具体的操做性能
本地mysql数据库中我新建了 个database,取名jmeter,其中建立了user表测试
1.首先须要配置jmeter 的mysql源url
添加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就是咱们每次须要的值
下次在详细写