【问题标题】:Apache jMeter : Perform load test and delay verificationApache jMeter:执行负载测试和延迟验证
【发布时间】:2015-03-09 16:18:44
【问题描述】:

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

有两个请求:

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

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

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

我的想法:

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

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

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

谢谢

【问题讨论】:

  • 我确实通过添加一个 tearDown 线程来执行我的验证来改进测试计划,但我仍然认为该解决方案不是最先进的。有更好的主意吗?谢谢

标签: jmeter load-testing


【解决方案1】:

在第二个线程组中:

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

    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 Controller 并配置如下:

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

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

参考资料:

【讨论】:

  • 谢谢你的答案。您存储 id 的方式很有趣。
猜你喜欢
  • 2018-01-15
  • 2015-01-16
  • 1970-01-01
  • 2014-12-30
  • 2012-04-18
  • 2015-01-06
  • 2018-09-28
  • 2012-07-29
  • 2021-12-30
相关资源
最近更新 更多