JMeter的 - 再使用后续响应数据请求
问题描述:
我们有一个工作方式如下服务:JMeter的 - 再使用后续响应数据请求
首先,搜索参数的请求被发送,为此我们得到一个searchId。然后使用该searchId继续获取信息,直到服务响应没有剩余数据(hasMore参数变为“false”)。
问题是这样的 - 我已经建立了jMeter发送第一个请求,但不确定如何继续为线程组中的每个响应并行发送请求,并且需要您的建议。我的想法是建立另一个线程组,因为我无法将其设置在第一个线程组中,但是如何获得响应并对其进行并行处理?
EDITED:
这是我结束了。 First Beanshell取样器提取searchId和hasMore并将其放入变量中。第二个采样器提取已经越来越多地把它变成变量,覆盖第一个。最后,While循环按预期工作,使用$ {__ javaScript(“$ {hasMore}”==“1”,)}。
答
我会建议您设计如下测试:
- 请求得到
searchId
-
While Controller与条件像
${__javaScript("${hasMore}" != "false",)}
- 请求继续获取信息
-
PostProcessor提取
hasMore
参数,并将其存储到相关JMeter Variable
-
PostProcessor提取
- 请求继续获取信息
这种方式“获取信息”请求将执行,直到hasMore
参数变为false
。有关更多详细信息,请参见Using the While Controller in JMeter文章。
答
我建议2线程组
第一线组:
保存searchIds文件(JSR223采样)或数据库(JDBC采样)与键计数器(1,2, ...)并将值作为searchId值
在属性$ {__ setProperty(threadCount,$ {counter})}中保存多个ID。
第二个线程组:
在定义 - 线程使用$数{__ P(经纬)}
使用$从文件(JSR223采样)或数据库(JDBC采样)
阅读{ __threadNum}关键拿到相关searchId你需要
我已经尝试了这种方法,但不幸的是后处理器BeanShell脚本被称为线程组的外部 - 我注意到这种奇怪的行为。因此,它也不会进入While控制器,直接进入组外的脚本。 –
然后将JMeter变量转换为全局JVM实例的JMeter属性,请参见[针对一个珍珠二:如何在不同线程组中使用变量](https://www.blazemeter.com/blog/knit-one-珍珠二如何使用变量不同线程组)的细节。 –