如何在jmeter内部实现递归调用?

时间:2016-10-04 15:18:36

标签: jmeter

我需要模拟一个测试场景,我的应用程序发送一个包含100个查询的请求。在后端,此请求被分解为包含每个查询的请求。因此,来自Jmeter的具有100个查询的请求将在后端上成为100个请求。现在 - 来自后端的响应可以包含每个查询的请求数据,也可以包含唯一的queryID。发回queryID是服务器告知此查询仍在运行的方式。例如,如果Jmeter发送一个包含100个查询的请求,它可能会返回80和20个唯一queryID的数据。因此,我的测试应用程序每15秒发出一次带有这20个queryID的回调请求,直到它返回请求的数据或超时。

这是我到目前为止所实施的内容。

-main_request_with_100_queries
--XPath_extractor_to_extract_any_queryIDs_found
-if_controller_to_check_if_queryID_MatchNr_is_greater_than_0
--15_second_pause
--beanshell_preprocessor_to_create_the_request_body_with_all_queryIDs
--callback_request_with_queryIDs

我想要实现的是为我的callback_request提供另一个XPath提取器,如果找到任何queryID,则返回if_controller

我试图通过使用module_controller来完成这项工作,但到目前为止还没有运气。有没有人实现过这样的东西?任何人都可以提出一些想法吗?

1 个答案:

答案 0 :(得分:0)

在响应中有queryID之前,您可以使用While Controller继续发出请求。

While Controller [ "${querid.present}"=="true" ]
   HTTP Request
     Pre Processor [to_create_the_request_body_with_all_queryIDs]
     Post Processor [to check for query ID. if no query id  - change querid.present to false ]

如果可能,请尝试使用正则表达式提取器。 xpath非常慢,可能会影响脚本的性能。查看here了解详情。

Creating modular test script in JMeter