性能測試又稱多用戶併發性能測試。
對於性能測試,我們必須要清晰地理解這些概念。執行性能測試,性能瓶頸分析路徑:服務器硬件瓶頸-〉網絡瓶頸(對局域網,可以不考慮)-〉服務器操作系統瓶頸(參數配置)-〉中間件瓶頸(參數配置,數據庫,web服務器等)-〉應用瓶頸(SQL語句、數據庫設計、業務邏輯、算法等)
1、壓力測試
壓力測試的目標是測試在一定的負載下系統長時間運行的穩定性,尤其關注大業務量情況下長時間運行系統性能的變化(例如是否反應變慢、是否會內存泄漏導致系統逐漸崩潰、是否能恢復);
壓力測試是測試系統的限制和故障恢復能力,它包括兩種情況:
a.穩定性壓力測試:在選定的壓力值下,長時間持續運行。通過這類壓力測試,可以考察各項性能指標是否在指定範圍內,有無內存泄漏、有無功能性故障等;
b.破壞性壓力測試:在穩定性壓力測試中可能會出現一些問題,如系統性能明顯降低,但很難暴露出其真實的原因。通過破壞性不斷加壓的手段,往往能快速造成系統的崩潰或讓問題明顯的暴露出來;
2、負載測試
測試在一定負載情況下系統性能(不關注穩定性,也就是說不關注長時間運行,只是得到不同負載下相關性能指標即可);
實際中我們常從比較小的負載開始,逐漸增加模擬用戶的數量(增加負載), 觀察不同負載下應用程序響應時間、所耗資源,直到超時或關鍵資源耗盡,這就是所說的負載測試,它是測試系統的不同負載情況下的性能指標。
3、併發測試
主要指當測試多用戶併發訪問同一個應用、模塊、數據時是否產生隱藏的併發問題,如內存泄漏、線程鎖、資源爭用問題,幾乎所有的性能測試都會涉及併發測試。
4、強度測試
強度測試檢查程序對異常情況的抵抗能力;是檢查系統在極限狀態下運行的時候性能下降的幅度是否在允許的範圍內。強度測試總是迫使系統在異常的資源配置下運行。例如:
①當中斷的正常頻率爲每秒一至兩個時,運行每秒產生十個中斷的測試用例;
②定量地增長數據輸入率,檢查輸入子功能的反映能力;
③運行需要最大存儲空間(或其他資源)的測試用例;
④運行可能導致虛存操作系統崩潰或磁盤數據劇烈抖動的測試用例,等等。
5、容量測試
容量測試的目的是通過測試預先分析出反映軟件系統應用特徵的某項指標的極限值(如最大併發用戶數、數據庫記錄數等),系統在其極限狀態下沒有出現任何軟件故障或還能保持主要功能正常運行。容量測試還將確定測試對象在給定時間內能夠持續處理的最大負載或工作量。
容量還可以看作系統性能指標中一個特定環境下的一個特定性能指標,即設定的界限或極限值。
6、Web系統的響應時間
是指從客戶端發起一個請求開始,到客戶端收到從服務器返回的響應結束,這個過程所耗費的時間。即: 響應時間=網絡響應時間+應用程序響應時間
7、舉例
一個人背X斤
負載測試:200斤情況下,是否能堅持5分鐘。
壓力測試:200,300,400... 斤情況下,他的表現,什麼時候失敗,失敗之後什麼表現,重新扛200是否正常。
容量測試:在堅持5分鐘的情況下,他一次最多能扛多少斤。