jmeter接口测试4-使用数据库mysql构造参数

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就是我们每次需要的值

 下次在详细写

原文地址:https://www.cnblogs.com/xueli/p/10727517.html