我正在为具有AJAX调用的应用程序进行性能测试。我能够记录相同的请求但无法执行它们。请问有人帮我执行AJAX请求吗?
我需要使用任何额外的插件吗?如果是,它们是什么以及如何使用它们。
答案 0 :(得分:8)
我不知道任何能够处理AJAX调用的现有插件。技术上,AJAX请求是基本的HTTP请求,但它们需要使用每个调用一个额外的线程并行执行。
目前在JMeter中不可能有嵌套的线程组,因此您必须使用JSR223 Sampler进行一些额外的编码才能启动AJAX请求。主要请求和嵌套的AJAX调用应置于Transaction Controller下,看起来像真实的浏览器行为。
或者你可以开发自己的JMeter Sampler,它可以产生额外的线程来模拟AJAX请求。
有关上述2种方法的详细信息,请参阅How to Load Test AJAX/XHR Enabled Sites With JMeter指南。
答案 1 :(得分:1)
虽然它看起来有点休眠,但我建造了这个采样器,它对我来说很好。它创建了一个可以添加多个请求的单个采样器,并且它们都是并行触发的。 Cookie /标题管理器/变量可用于请求:
P.S。我在ConcurrentHttpRequestsSampler.java中的processResult方法中添加了一行,将响应体写入前缀为子样本名称的jmeter变量,因为来自子请求的响应体不可用于ConcurrentHttpRequests采样器上的后处理器:
try{
jmeterContextOfParentThread.getVariables().put(subResult.getSampleLabel()+"_responseBody",new String(subResult.getResponseData(),"UTF-8"));
}
catch(java.io.UnsupportedEncodingException e) {
jmeterContextOfParentThread.getVariables().put(subResult.getSampleLabel()+"_responseBody","Unable to read response data");
}
答案 2 :(得分:0)
这对我们有用-我们只是将多个HTTP Request
采样器直接放在其下:
https://github.com/Blazemeter/jmeter-bzm-plugins/blob/master/parallel/Parallel.md
通过链接:
图片注释:
此控制器的所有直接子元素将并行执行。