В соответствии с JMeter 3.0 нет приемлемых элементов Test, вам необходимо:
- пойти на JSR223 Sampler + Groovy language и Apache HTTP Components (которые являются составными частями JMeter)
- или разработать свой собственный пробник, чтобы преодолеть ограничение группы нитей JMeter и запустить дополнительные потоки для выполнения вызовов AJAX.
Пример JSR223 Sampler Код:
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; // necessary imports
List<String> urls = new ArrayList<String>(); // initialize array of URLs
Collections.addAll(urls,args); // read URLs from "Parameters" input and add them to array
ExecutorService pool = Executors.newFixedThreadPool(urls.size()); // initialize pool of Future Tasks with number of threads equal to size of URLs provided
for (String url : urls) { // for each URL from list
final String currentURL = url;
pool.submit(new Runnable() { // Sumbit a new thread which will execute GET request
@Override
public void run() {
try {
HttpClient client = new DefaultHttpClient(); // Use Apache Commons HTTPClient to perform GET request
HttpGet get = new HttpGet(currentURL);
HttpResponse response = client.execute(get);
HttpEntity entity = response.getEntity();
EntityUtils.consume(entity);
} catch (Exception ex) {
ex.printStackTrace();
}
}
});
}
pool.shutdown(); // shut down thread pool
Подробнее: How to Load Test AJAX/XHR Enabled Sites With JMeter
Спасибо за ответ. У меня есть запрос на это, это создаст новые потоки, и это не будет мешать моему счету общего количества потоков? Предположим, что я выполняю тест с 50 пользователями (потоками), теперь, если я создам пул из 10 потоков, бремя на сервере будет увеличиваться. –
Да, именно так работают запросы AJAX, более того, это также то, как работает JMeter, когда он загружает встроенные ресурсы, используя параллельный пул потоков. Для получения дополнительных советов о том, как сделать ваш тест JMeter более реалистичным, посмотрите [Как сделать JMeter более похожим на реальный браузер] (https://guide.blazemeter.com/hc/en-us/articles/206733719-How-to-make -JMeter-behave-more-like-a-real-browser) –
@DmitriT - Есть ли способ получить тело ответа? потому что "response.getEntity();" дает вам только заголовки ответов. –