2017-06-22 92 views
0

我们有一个工作方式如下服务:JMeter的 - 再使用后续响应数据请求

首先,搜索参数的请求被发送,为此我们得到一个searchId。然后使用该searchId继续获取信息,直到服务响应没有剩余数据(hasMore参数变为“false”)。

问题是这样的 - 我已经建立了jMeter发送第一个请求,但不确定如何继续为线程组中的每个响应并行发送请求,并且需要您的建议。我的想法是建立另一个线程组,因为我无法将其设置在第一个线程组中,但是如何获得响应并对其进行并行处理?

EDITED

这是我结束了。 First Beanshell取样器提取searchId和hasMore并将其放入变量中。第二个采样器提取已经越来越多地把它变成变量,覆盖第一个。最后,While循环按预期工作,使用$ {__ javaScript(“$ {hasMore}”==“1”,)}。

Project Test Plan

回答

1

我会建议您设计如下测试:

这种方式“获取信息”请求将执行,直到hasMore参数变为false。有关更多详细信息,请参见Using the While Controller in JMeter文章。

+0

我已经尝试了这种方法,但不幸的是后处理器BeanShell脚本被称为线程组的外部 - 我注意到这种奇怪的行为。因此,它也不会进入While控制器,直接进入组外的脚本。 –

+0

然后将JMeter变量转换为全局JVM实例的JMeter属性,请参见[针对一个珍珠二:如何在不同线程组中使用变量](https://www.blazemeter.com/blog/knit-one-珍珠二如何使用变量不同线程组)的细节。 –

0

我建议2线程组

第一线组:

保存searchIds文件(JSR223采样)或数据库(JDBC采样)与键计数器(1,2, ...)并将值作为searchId值

在属性$ {__ setProperty(threadCount,$ {counter})}中保存多个ID。

第二个线程组:

在定义 - 线程使用$数{__ P(经纬)}

使用$从文件(JSR223采样)或数据库(JDBC采样)

阅读{ __threadNum}关键拿到相关searchId你需要

相关问题