Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ApacheJMeter从csv文件读取SQL变量_Jmeter - Fatal编程技术网

ApacheJMeter从csv文件读取SQL变量

ApacheJMeter从csv文件读取SQL变量,jmeter,Jmeter,需要对Oracle数据库进行负载测试要求是同时向数据库发出sql查询从CSV文件读取变量这是否可行 有一个CSV文件,其值如下 Name Email Justin justin@beiber.com George george@washington.com ... Micheal micheal@jackson.com 然后有10、20、30个用户发出类似的查询 select name,phone,city from address where nam

需要对Oracle数据库进行负载测试要求是同时向数据库发出sql查询从CSV文件读取变量这是否可行

有一个CSV文件,其值如下

Name        Email
Justin      justin@beiber.com
George      george@washington.com
...
Micheal     micheal@jackson.com
然后有10、20、30个用户发出类似的查询

select name,phone,city
from address
where name = <<feild1-from-csv>>
and email = <<feild2-from-csv>>
...
选择姓名、电话、城市
发件人地址
其中名称=
和电子邮件=
...

我建议将测试逻辑分为两部分:

  • 从CSV加载信息并将其存储为JMeter变量
  • 使用第1点中的变量对Oracle执行SQL代码
  • 关于实现,我建议使用两个独立的线程组,第一个线程组将从CSV加载内容,第二个线程组将进行实际测试

    重要提示:不要忘记选中测试计划级别的“连续运行线程组”框,以确保第二个线程组在第一个线程组之后运行

    第一个线程组的配置示例:

  • 柜台

    • 开始-1
    • 增量-1
    • 参考名称-计数器
    • 文件名-csv文件的路径
    • 变量名称-名称、电子邮件
    • 分隔符-如果使用制表符-“\t”,如果使用逗号-”,“而不带引号
    • 允许引用数据-False
    • EOF上的回收-错误
    • EOF上的停止线程-True
    • 共享模式-所有线程
  • Beanshell采样器(这是可选的,JMeter 2.10足够智能,可以为您存储变量,但我更喜欢自己控制一切)

  • Beanshell取样器的代码应如下所示:

    props.put("name" + vars.get("counter"), vars.get("name"));
    
    props.put("email" + vars.get("counter"), vars.get("email"));
    
    它获取当前的“name”变量并将其存储为name+counter属性

    因此,给定3行是CSV文件,您将具有以下属性:

    name1=Justin
    email1=justin@beiber.com
    name2=George 
    email2=george@washington.com
    name3=Micheal
    email3=micheal@jackson.com
    
    您可以使用调试采样器查看JMeter变量和属性值

    之后,在第二个线程组中,您可以将存储的属性引用为:

    ${__P(name1,)}
    

    在JDBC请求采样器中


    两者都应该起作用

    我建议将测试逻辑分为两部分:

  • 从CSV加载信息并将其存储为JMeter变量
  • 使用第1点中的变量对Oracle执行SQL代码
  • 关于实现,我建议使用两个独立的线程组,第一个线程组将从CSV加载内容,第二个线程组将进行实际测试

    重要提示:不要忘记选中测试计划级别的“连续运行线程组”框,以确保第二个线程组在第一个线程组之后运行

    第一个线程组的配置示例:

  • 柜台

    • 开始-1
    • 增量-1
    • 参考名称-计数器
    • 文件名-csv文件的路径
    • 变量名称-名称、电子邮件
    • 分隔符-如果使用制表符-“\t”,如果使用逗号-”,“而不带引号
    • 允许引用数据-False
    • EOF上的回收-错误
    • EOF上的停止线程-True
    • 共享模式-所有线程
  • Beanshell采样器(这是可选的,JMeter 2.10足够智能,可以为您存储变量,但我更喜欢自己控制一切)

  • Beanshell取样器的代码应如下所示:

    props.put("name" + vars.get("counter"), vars.get("name"));
    
    props.put("email" + vars.get("counter"), vars.get("email"));
    
    它获取当前的“name”变量并将其存储为name+counter属性

    因此,给定3行是CSV文件,您将具有以下属性:

    name1=Justin
    email1=justin@beiber.com
    name2=George 
    email2=george@washington.com
    name3=Micheal
    email3=micheal@jackson.com
    
    您可以使用调试采样器查看JMeter变量和属性值

    之后,在第二个线程组中,您可以将存储的属性引用为:

    ${__P(name1,)}
    

    在JDBC请求采样器中

    两者都应该起作用