壓力測試、負載測試和容量測試都是效能測試中的內容。
壓力測試:檢查被測系統在惡劣環境下的表現,比如記憶體不足,CPU高負荷,網速慢,等等。在 這種情況下,被測系統往往運行緩慢,能暴露許多在高速運行時不易發生的問題,例如線程不同步
負載測試:檢查被測系統處理大量使用者訪問或響應的能 力。
容量測試:檢查被測系統處理大資料量的能力,例如儲存或讀取一個超長的檔案。
大概你現在還是對壓力測試和負載測試有個模糊的 認識。呵呵不怕。現在有更精彩的解釋。
外面的負載叫壓力,內部的壓力叫負載。負載測試主要關注系統內部的情況,如容量、可擴充性、功能等。 壓力測試主要關心系統外部的表象。看系統在有多個進程並發時的表現,能夠堅持多少小時不出問題等等。
很形象的解釋
(負載過關了, 但是壓力不一定能夠過關。你能夠挑100斤,但是不一定能夠連續挑一個月)
有一個農夫決定買一匹騾子,他認為這個騾子至少 得能扛動3袋大米,他才會決定買這匹騾子(這相當於使用者提出的效能需求)。結果他來到農貿集市上,試了好幾頭騾子,都不合適,最後終於有一頭騾子能夠比較輕鬆的扛動這3袋大米,而且還瀟洒的走了幾步(這相當于于效能測試通過)。 然後農夫高高興興地牽著這頭騾子回家,而且給它扛了4袋大米(相當於讓系統超負荷運行),因為他跑了太遠才買到了這匹不可多得的騾子,他想看看它到底能有多強,所以農夫決定, 讓這匹騾子就扛著這四袋大米走回家試試看,這匹騾子真的很厲害,剛開始的時候還一顛一跑的,可是後來實在路太遠了,騾子越馱越費勁(在超負荷情況下檢驗系 統能正常運行多久,這相當於壓力測試),快到家的時候,已經是走兩步歇一步了。終於到家了, 農夫非常自豪地叫出自己的老婆,說:“老婆子,快來看看,看我買到了一頭多麼厲害的騾子啊!”,老婆出來後,農夫把他和騾子在一路上的經曆都告訴了老太 婆,誰知這個老太婆卻說:“你真蠢,這麼大老遠的路,也不讓騾子馱著你,竟然和這頭傻騾子一樣走回來!”,農夫聽了,覺得非常後悔,說:“那好吧,既然在 路上它沒有馱我,那就讓它現在補上,也算是對我的補償。”,騾子還沒有反應過來,就看那老農夫一個箭步,跳到了騾子背上(這相當於容量測試的極限點),可憐的騾子,無論如何也不會想到,這狠心的農夫竟然在它走了這麼久之後,不但沒有幫 它卸掉身上的重擔,更沒有給它喝口水,竟然變本加厲的跳到了它那本已彎曲的背上。可憐的騾子啊,就這麼一命嗚乎了!就看見那個騾子、農夫和4袋麥子一起轟然倒地。(相當於已經到了系統的最大拐點,造成了系統癱瘓,無法使用,容量測試結束)。
==================================================================================
發現網上對於這幾概念非常的混亂,Wally專門收集了一下比較經典 的解釋,嘿嘿:
效能測試(或稱多使用者並發效能測試)、負載測試、強度測試、容量測試是效能測試領域裡的幾個方 面
效能測試(Performance Test):通常收集所有和測試有關的所有效能,通常被不同人在不同場合下進行使用。測試軟體在系統中的運行效能,度量系統與預定義目標的差距。
關注點:how much和how fast
負載測試(Load Test):負載測試是一種效能測試,指資料在超負荷環境中運行,程式是否能夠承擔。通過逐步增加系統負載,確定在滿足效能指標的情況下,系統所能承受的最大負載量。
關注點:how much
強度測試(Stress Test): 強度測試是一種效能測試,他在系統資源特別低的情況下軟體系統運行情況,目的是找到系統在哪裡失效以及如何失效的地方。包括
Spike testing:短時間的極端負載測試
Extreme testing:在過量使用者下的負載測試
Hammer testing:連續執行所有能做的操作
壓力測試:通過逐步增加系統 負載,確定在什麼負載條件下系統處於失效狀態,以此來獲得系統能提供的最大服務等級。
容量測試(Volume Test):確定系統可處理同時線上的最大使用者數,使系統承受超額的資料容量來發 現它是否能夠正確處理。
關注點:how much(而不是how fast)
容量測試,通常和資料 庫有關,容量和負 載的區別在於:容量關注的是大容量,而不需要表現實際的使用。
其中,容量測試、負載測試、強度測試的英文解釋為:
Volume Testing = Large amounts of data
Load Testing = Large amount of users
Stress Testing = Too many users, too much data, too little time and too little room
舉例:一個人背X斤
負載測試:200斤情況下,是否能堅持5分鐘。
壓力測試:200,300,400...斤情況下,他的表現,什麼時候失敗,失敗之後什麼表現,重新扛200是否正常。
容量測試:在堅持5分鐘的情況下,他一次最多能扛多少斤。
負載測試[/url]:負載測試是 一種效能測試[/url],指資料在超負 荷環境中運行,程式是否能夠承擔。 強度測試:強度測試是一種效能測試,他在系統資源特別低的情況下軟體系統運行情況。
容量測試:確定系統可處理同時線上的最大使用者數。
1.強度測試或壓力測試:強度或壓力測試是在一種需要異常數量、頻率或資源的方式下,執行可重複的負載測試,以檢查程式對異常情況的抵抗能力,找出效能瓶 頸。異常情況,主要指那些峰值、極限值、大量資料的長時間處理等,包括:串連或類比了最大(實際或實際允許)數量的客戶機; 所有客戶機在長時間內執行相同的、效能可能最不穩定的重要業務功能;已達到最大的數 據庫[/url]大小,而且同時執行多個查詢或報表事務當中斷的正常頻率為每秒一至兩個時,運行每秒產生十個中 斷的測試案例;運行可能導致虛存作業系統[/url]崩潰或大量資料對磁碟進行存取操作的測試案例等。壓力 測試可以分為穩定性測試和破壞性測試:
穩定性壓力測試。在選定的壓力值下,持續運行24小時以上的測試。通過壓力測試,可以考察各項效能指標是否在指定範圍內,有無記憶體流失、有無功能性故障 等。 破壞性壓力測試。在壓力穩定性測試中可能會出現一些問題,如系統效能明顯降低,但很難暴露出其真實的原因。通過破壞性不斷加壓的手段,往往能快速造成系統 的崩潰或讓問題明顯的暴露出來。
在壓力測試中,會給程式加上一些跟蹤機制(如log日誌[/url] 等),然後查看監視系統、伺服器等效能的記錄檔是必要的,找出問題出現的關鍵時間或檢查測試回合參數,通過分析問題或參數從而有目的地調整測試策略或測 試環境,使壓力測試結果真實地反映出軟體的效能。
2.效能測試系統的效能指標,一般贏在產品需求文檔中有明確定義,有三種形式描述軟體系統的效能指標:
給出產品效能的主要指標,如在100000記錄中查詢一個特定資料的時間為0.5秒。以某個發行的版本為基準,如比上一個版本的效能提高30-50%。 和競爭者的同類產品比較。
效能測試,根據其目的分為:產品效能品質測試,通過測試,決定產品是否達到產品規格書所要求的效能指標(非功能性需求)基準值測試,通過對當前產品的效能 測試,確定產品具體的效能指標,建立效能指標基準。基準值,作為後繼產品發布的效能參考(在新版本中,效能指標要求只升不降)或和競爭者產品比較的參 考。
效能規劃測試,通過不斷的測試,確定所需要的硬體設定(記憶體、CPU、網路等)、軟體配置,以滿足實現定義的效能指標要求。這種測試,對於軟體系統的部署 是非常有意義的。同時,也可以進一步瞭解硬體參數、軟體參數對系統效能的影響程度,從而保證系統具有很好的擴充性或事先制定較好的系統增容的計劃。
效能測試的方法,主要有:穩定壓力載入,一次性將負載加到某個水平,持續一段時間,也稱為flat測試。 逐漸載入或交替載入到某個負載水平,也稱為“ramp-up”測試。 峰穀測試,確定從系統高峰時間的負載轉為幾乎空閑、再攀升到高負載這樣峰值交替情況下的系統效能狀態/指標。這種測試兼有容量測試的特點或屬於容量測試的 一部分。
效能測試,一般都通過測試載入器[/url] 來類比人為的操作而進行。效能測試的重點在於測試環境的建立、前期資料的設計與後期資料的分析。因為效能測試需要獲得一定特定條 件下(如100、200、500、1000個即時的串連)的系統佔用資源(CPU、記憶體等)資料或系統行為表現,而且還要依靠測試載入器或軟體系統記錄下這 些指標變化的資料結果。例如,如果對一個Browser/Server結構的網路即時線上的培訓系統軟體進行測試,系統效能焦點是在不同數量的並發串連 下,伺服器的CPU、記憶體的佔用率、用戶端的回應時間等。測試過程中,並發串連的不斷增加(負載的增加)在系統效能上的表現越來越明顯。在系統效能測試 時,載入過程中,每到一個測試點時須讓系統平穩運行一段時間後再擷取資料,以消除不同測試點的相互影響。從表中可以看出,同樣是300個使用者,1?00與 60?的效能表現差別很大,載入的方式對系統效能影響也較大,所以,盡量類比不同的載入方式來進行系統的效能測試。除此之外,還可以測試TCP、 HTTPS等不同串連方式下的資料,進行比較。通過比較和分析,可以清楚知道系統的效能狀況,以及什麼樣的條件下系統效能達到最佳狀況、什麼地方是效能的 瓶頸。效能測試要求測試環境應盡量與產品運行環境保持一致,應單獨運行,盡量避免與其 他[/url]軟體同時使用。
3.容量測試軟體測試通過 效能測試,如果找到了系統的極限或苛刻的環境中系統的效能表現,在一定的程度上,我們完成了負載測試和容量測試。容量可以看作系統效能指標中一個特定環境 下的一個特定效能指標,即設定的界限或極限值。容量測試目的是通過測試預先分析出反映軟體系統應用特徵的某項指標的極限值(如最大並發使用者數、資料庫記錄 數等),系統在其極限值狀態下沒有出現任何軟體故障或還能保持主要功能正常運行。容量測試還將確定測試對象在給定時間內能夠持續處理的最大負載或工作[/url]量。對軟體容量的測試,能讓軟體開發商或使用者瞭解該軟體系 統的承載能力或提供服務的能力,如某個電子商務網站所能承受的、同時進行交易或結算的線上使用者數。知道了系統的實際容量,如果不能滿足設計要求,就應該尋 求新的技術[/url]解決方案,以提高 系統的容量。有了對軟體負載的準確預測,不僅能對軟體系統在實際使用中的效能狀況充滿信心,同時也可以協助使用者經濟地規劃應用系統,最佳化系統的部署。
壓力測試、容量測試和效能測試的關係:壓力測試可以看作是容量測試、效能測試和可靠性測試的一種手段,不是直接的測試目標。壓力測試的重點在於發現功能 性測試所不易發現的系統方面的缺陷。而容量測試和效能測試是系統測試的主要目標內容,也就是確定軟體產品或系統的非功能性方面的品質特徵,包括具體的特徵 值。容量測試和效能測試更著力於提供效能與容量方面的資料,為軟體系統部署、維護、品質改進服務,並可以協助市場定位、銷售人員對客戶的解釋、廣告宣傳等 服務。壓力測試、容量測試、效能測試,測試的方法相似、相通,在實際測試工作中,往往結合起來進行,以提高測試效率。一般會設定專門的效能測試實驗室,完 成這些工作。即使用虛擬手段類比實際操作,所需要的用戶端有時還是很大的,所以效能測試實驗室的投資較大。