2012-01-04 97 views
11

我最近開始使用JMeter爲我的Web應用程序創建負載測試。我非常喜歡這個工具,在觀看一些視頻後,開始創建測試非常簡單。包含靜態資源,如圖像,CSS,JS等在測試

但是有一件事我不清楚。

閱讀JMeter主頁後,有一個"Best practice" section。除其他事項外,它說:

做的最重要的事情是過濾掉你不感興趣的所有請求。例如,有一個在記錄圖像請求沒有點(JMeter的可以指示下載的所有圖像。在頁面上 - 請參閱HTTP請求)。這些只會讓你的測試計劃雜亂無章。

我在其他頁面上看到過這種情況,並說您不應該在測試中包含對圖像或任何其他靜態資源的請求。然而,我仍然無法找到一個單獨的頁面,它給出了一個很好的解釋,爲什麼你不應該包含靜態資源。

當然,JMeter不是瀏覽器,但是對靜態資源的請求無疑會影響應用程序的性能?有人可以給我一個很好的解釋:-)

回答

7

這一切都取決於你試圖測試。

一般來說,我有兩種類型的性能測試:使用JMeter進行性能測試:特定測試,我在看我擔心的事情,以及「安全網絡」測試,在這裏測量整個應用程序以確保它確實按照我期望的方式工作。

特定的測試幾乎總是處理Web應用程序的動態方面 - 服務器端代碼(.aspx,.php,.jsp等)。這是大多數應用程序都有其瓶頸的地方 - 運行服務器端腳本的努力比從磁盤檢索CSS文件並將其提供給瀏覽器而無需任何額外處理的努力高出許多倍。如果我正在測試服務器端腳本,我不想也加載資源 - 因爲它們混淆了測試,並在測試客戶端使用帶寬。我不希望我的測試失敗,因爲我的JMeter服務器正在每個線程上下載一個5MB視頻文件並佔用所有帶寬,而當我實際嘗試做的是查看服務器每秒可以支持多少次登錄時。

測試你的web服務器提供靜態文件的能力幾乎沒有什麼意義 - 微軟,阿帕奇團隊,誰已經在這方面做了出色的工作;除非您有特別的關注,否則有更好的方式來花費您的測試預算。

安全網測試把整個事情放在一起證明它確實按我期望的方式工作。通常,我在生產環境中運行這些應用程序,因此我擁有CDN,生產級硬件和「實時」應用程序配置。我通常爲此採用基於雲的測試服務,因此我可以看到來自不同位置的性能,併產生足夠的負載來壓縮生產級套件。你可以使用JMeter來做這件事(並且過去有幾種JMeter Cloud服務)。它很昂貴,可能需要停機,你只能把它當作安全網。

+0

+1。我更喜歡你的答案。 – 2012-01-04 12:22:11

+0

感謝您給出了一個很好的答案,真的很好解釋! – Daniel 2012-01-04 13:30:30

1

除非你的應用程序是由只看一頁然後去的臨時訪問者使用,否則很有可能靜態資源被下載一次,然後服務從瀏覽器緩存中。此外,雖然靜態資源會影響用戶的帶寬和整體響應時間,但它們對服務器負載應該有一個小的影響,並且它們可能不是您想測量的那種類型。

我想你需要嘗試模仿實際的,真正的用戶會怎樣處理這個應用程序。

6

當你想要做一個合適的性能測試(尤其是壓力測試),你需要出示你的應用程序的響應時間,在時間的用戶/線程數的函數,你需要包括所有靜態資源,只是正如jMeter Proxy在記錄測試時保存它們一樣。

要將瀏覽器緩存考慮在內,您可以使用HTTP Cache ManagerOnce Only controller,以便每個線程只在第一次請求時下載一次靜態內容。
HTTP緩存管理器是推薦的方式,並且設置起來更容易,只需將它包含在測試中即可作爲線程組的第一個孩子。
Once只有在您第一次請求需要登錄用戶時才定期使用控制器。

非靜態的HTTP請求的參數化BTW建議,你會不會如搜索相同的產品名稱或例如每次都購買同一本書,這通常是一個起點,可以讓您對應用程序的性能效率有一個大致的瞭解。

希望這有助於...

相關問題