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



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

有两个请求:

  1. 创建文档 输入:名称、大小、日期输出:新创建的id文档
  2. getDocument 输入:文档id

我想对createDocument方法执行负载测试。不是火箭科学,我使用SOAP采样器,非常简单。

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

我的想法:

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

我不知道如何在Java列表上循环,并为每次迭代调用SOAP采样器。知道吗?

或者一般来说,您有更符合jMeter的解决方案吗?

感谢

在第二个线程组中:

  1. 添加一个Beanshell Sampler,它将遍历具有文档ID的列表,并将它们存储到JMeter Variables中,类似于:

    List IDs = bsh.shared.IDs;
    int counter = 1;
    for (String ID : IDs){
        vars.put("ID_" + counter,ID);
        counter++;  
    }
    

这将导致如下变量:

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

    • 输入变量前缀:ID
    • 输出变量名称:任何有意义的名称,即CURRENT_ID
    • 确保勾选了"在数字之前添加"_"

ForEach Controller将遍历所有带有ID_前缀的已定义变量,您将能够将当前值引用为${CURRENT_ID}

参考材料:

  • JMeter用户手册最佳实践的"共享变量"章节
  • 如何使用BeanShell:JMeter最喜欢的内置组件指南
  • ForEach Controller文档条目

最新更新