Apache jMeter:执行负载测试和延迟验证

时间:2015-03-06 09:45:48

标签: jmeter load-testing

我想在SOAP Web服务上执行负载测试。

有两个请求:

  1. createDocument 即可。 输入:名称,大小,日期。 输出:新创建的id文档
  2. getDocument 即可。 输入:文档ID。 输出:ID,名称,大小,日期
  3. 我想对 createDocument 方法执行负载测试。不是火箭科学,我使用SOAP采样器,非常简单。

    但是在第二步中,在负载测试之后(出于性能原因),我将通过使用id调用 getDocument 来检查文档是否真的是创建的。

    我的想法:

    • 为SOAP采样器创建一个线程组
    • 在线程组上,添加后处理器Beanshell
    • 在后处理器中,将文档ID存储在Java列表中
    • 为验证创建其他线程组
    • 在测试计划中,选中“连续运行线程组”
    • 在验证线程中找到循环Java列表的方法
    • 对于每个id,执行SOAP调用

    我不知道如何遍历Java列表并为每次迭代调用SOAP采样器。有什么想法吗?

    或者一般来说,您是否有更符合jMeter标准的解决方案?

    谢谢

1 个答案:

答案 0 :(得分:1)

在第二个线程组中:

  1. 添加一个Beanshell Sampler,它将使用文档ID遍历列表,并将它们存储到JMeter变量中,如:

    List IDs = bsh.shared.IDs;
    
    int counter = 1;
    
    for (String ID : IDs){
        vars.put("ID_" + counter,ID);
        counter++;  
    }
    
  2. 这将产生如下变量:

    ID_1=somedocumentid
    ID_2=someotherdocumentid
    ....
    etc.
    
    1. 添加ForEach控制器并按如下方式进行配置:

      • 输入变量前缀:ID
      • 输出变量名称:任何有意义的内容,即CURRENT_ID
      • 确保“数字前”添加“_”选中
    2. ForEach Controller将使用ID_前缀迭代所有定义的变量,您将能够将当前值引用为${CURRENT_ID}

      参考资料: