2014-09-03 156 views
4

我正在爲具有AJAX調用的應用程序進行性能測試。我能夠記錄相同的請求,但無法執行它們。任何人都可以幫我執行AJAX請求嗎?性能通過JMeter測試AJAX調用

我需要爲此使用任何額外的插件嗎?如果是的話,他們是什麼以及如何使用它們。

回答

8

我不知道任何現有的插件能夠處理AJAX調用。技術上AJAX請求是基本的HTTP請求,但它們需要並行執行,每次調用一個額外的線程。

目前在JMeter中不可能嵌套線程組,因此您必須使用JSR223 Sampler來做一些額外的編碼來啓動AJAX請求。主要的請求和嵌套的AJAX調用應該放在Transaction Controller之下,看起來像一個真實的瀏覽器行爲。

或者,您可以開發自己的JMeter採樣器,它將能夠產生額外的線程來模擬AJAX請求。

有關以上兩種方法的詳細信息,請參閱How to Load Test AJAX/XHR Enabled Sites With JMeter指南。

+0

謝謝德米特里T的幫助。 :-) – user3627319 2014-09-05 12:59:14

1

雖然它看起來有點休眠,但我構建了這個採樣器,它對我來說工作正常。它創建了一個可以添加多個請求的單個採樣器,並且它們都是並行觸發的。曲奇/頭經理/變量提供給請求:

https://github.com/blackboard/jmeter-common/tree/master/src/main/java/blackboard/jmeter/sampler/ConcurrentHttpRequests

附:我在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"); 
    } 
+0

如何使用它..你可以告訴我一些步驟..我是初學者到jmeter,並在第一頁我必須測試ajax callss – dom 2017-01-02 11:21:48

+0

1.從上面的鏈接下載所有的源代碼。 – MonkeyTester 2017-01-03 09:56:12

+0

2.使用maven構建新的採樣器 – MonkeyTester 2017-01-03 09:56:32