我想对SOAP Web服务执行负载测试。
有两个请求:
- 创建文档 输入:名称、大小、日期输出:新创建的id文档
- getDocument 输入:文档id
我想对createDocument方法执行负载测试。不是火箭科学,我使用SOAP采样器,非常简单。
但在第二步中,在负载测试之后(出于性能原因),我想通过使用id调用getDocument来检查文档是否真的创建了。
我的想法:
- 为SOAP采样器创建线程组
- 在线程组上,添加一个后处理器Beanshell
- 在后处理器中,将文档id存储在Java列表中
- 为验证创建其他线程组
- 在测试计划中,选中"连续运行线程组"
- 在验证中,线程找到一种方法来循环Java列表
- 对于每个id,执行一个SOAP调用
我不知道如何在Java列表上循环,并为每次迭代调用SOAP采样器。知道吗?
或者一般来说,您有更符合jMeter的解决方案吗?
感谢
在第二个线程组中:
-
添加一个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.
添加一个ForEach控制器并按如下方式配置:
- 输入变量前缀:
ID
- 输出变量名称:任何有意义的名称,即
CURRENT_ID
- 确保勾选了"在数字之前添加"_"
- 输入变量前缀:
ForEach Controller将遍历所有带有ID_
前缀的已定义变量,您将能够将当前值引用为${CURRENT_ID}
参考材料:
- JMeter用户手册最佳实践的"共享变量"章节
- 如何使用BeanShell:JMeter最喜欢的内置组件指南
- ForEach Controller文档条目