1. 程式人生 > >效能測試,負載測試,壓力測試以及容量測試有什麼聯絡與區別

效能測試,負載測試,壓力測試以及容量測試有什麼聯絡與區別

1.負載測試,英文是Load testing。 

負載測試是模擬實際軟體系統所承受的負載條件的系統負荷,通過不斷載入(如逐漸增加模擬使用者的數量)或其它載入方式來觀察不同負載下系統的響應時間和資料吞吐量、系統佔用的資源(如CPU、記憶體)等,以檢驗系統的行為和特性,以發現系統可能存在的效能瓶頸、記憶體洩漏、不能實時同步等問題。負載測試更多地體現了一種方法或一種技術。 負載測試將使測試物件承擔不同的工作量,以評測和評估測試物件在不同工作量條件下的效能行為,以及持續正常執行的能力。 

負載測試的目標是確定並確保系統在超出最大預期工作量的情況下仍能正常執行,不是為了破壞系統。此外,負載測試還要評估效能特徵,例如,響應時間、事務處理速率和其他與時間相關的方面。 

 關注點是how much 

2.壓力測試,英文是Stress Testing。 

 壓力測試可以被看作是負載測試的一種,即高負載下的負載測試,或者說壓力測試採用負載測試技術。 

強度或壓力測試是在一種需要異常數量、頻率或資源的方式下,執行可重複的負載測試,以檢查程式對異常情況的抵抗能力,找出效能瓶頸。異常情況主要指那些峰值、極限值、大量資料的長時間處理等,關注: 

 Spike testing:短時間的極端負載測試  Extreme testing:在過量使用者下的負載測試  Hammer testing:連續執行所有能做的操作 例如: 

 連線或模擬了最大(實際或實際允許)數量的客戶機; 

 所有客戶機在長時間內執行相同的、效能可能最不穩定的重要業務功能;  已達到最大的資料庫大小,而且同時執行多個查詢或報表事務; 

 當中斷的正常頻率為每秒一至兩個時,執行每秒產生十個中斷的測試用例;  執行可能導致作業系統崩潰或大量資料對磁碟進行存取操作的測試用例等。 壓力測試可以分為穩定性測試和破壞性測試: 

 穩定性壓力測試:在選定的壓力值下,持續執行24小時以上的測試。通過壓力測試,可以考察各項效能指標是否在指定範圍內,有無記憶體洩漏、有無功能性故障等。 

 破壞性壓力測試:在壓力穩定性測試中可能會出現一些問題,如系統性能明顯降低,但很難暴露出其真實的原因。通過破壞性不斷加壓的手段,往往能快速造成系統的崩潰或讓問題明顯的暴露出來。 

 在壓力測試中,會給程式加上一些跟蹤機制(如log,日誌等),然後必須要檢視監視系統、伺服器等效能的日誌檔案,找出問題出現的關鍵時間或檢查測試執行引數,通過分析問題或引數從而有目的地調整測試策略或測試環境,使壓力測試結果真實地反映出軟體的效能。 

3.效能測試,英文performance testing 

效能測試是通過自動化的測試工具模擬多種正常、峰值以及異常負載條件來對系統的各項效能指標進行測試。負載測試和壓力測試都屬於效能測試,兩者可以結合進行。 系統的效能指標,一般應在產品需求文件中有明確定義,有三種形式描述軟體系統的效能指標: 

 給出產品效能的主要指標,如在100000記錄中查詢一個特定資料的時間為0.5秒。  以某個已釋出的版本為基線,如比上一個版本的效能提高30-50%。  和競爭對手的同類產品比較。 效能測試,根據其目的分為: 

 產品效能質量測試,通過測試,決定產品是否達到產品規格書所要求的效能指標(非

功能性需求)  基準值測試,通過對當前產品的效能測試,確定產品具體的效能指標,建立效能指

標基準。基準值,作為後繼產品釋出的效能參考(在新版本中,效能指標要求只升不降)或和競爭對手產品比較的參考。  效能規劃測試,通過不斷的測試,確定所需要的硬體配置(記憶體、CPU、網路等)、

軟體配置,以滿足實現定義的效能指標要求。這種測試,對於軟體系統的部署 是非常有意義的。同時,也可以進一步瞭解硬體引數、軟體引數對系統性能的影響程度,從而保證系統具有很好的擴充性或事先制定較好的系統增容的計劃。 效能測試的方法,主要有: 

 穩定壓力載入,一次性將負載加到某個水平,持續一段時間,也稱為flat測試。  逐漸載入或交替載入到某個負載水平,也稱為“ramp-up”測試。 

 峰谷測試,確定從系統高峰時間的負載轉為幾乎空閒、再攀升到高負載這樣峰值交

替情況下的系統性能狀態/指標。這種測試兼有容量測試的特點或屬於容量測試的一部分。 效能測試,一般都通過測試工具來模擬人為的操作而進行。效能測試的重點在於測試環境的建立、前期資料的設計與後期資料的分析。因為效能測試需要 獲得一定特定條件下(如100、200、500、1000個實時的連線)的系統佔用資源(CPU、記憶體等)資料或系統行為表現,而且還要依靠測試工具或軟 件系統記錄下這些指標變化的資料結果。例如,如果對一個Browser/Server結構的網路實時線上的培訓系統軟體進行測試,系統性能焦點是在不同數 量的併發連線下,伺服器的CPU、記憶體的佔用率、客戶端的響應時間等…… 

測試過程中,併發連線的不斷增加(負載的增加)在系統性能上的表現越來越明顯。在系統性能測試時,載入過程中,每到一個測試點時須讓系統平穩運 行一段時間後再獲取資料,以消除不同測試點的相互影響。所以,儘量模擬不同的載入方式來進行系統的效能測試。除此之外,還可以測試TCP、HTTPS等不 同連線方式下的資料, 進行比較。通過比較和分析,可以清楚知道系統的效能狀況,以及什麼樣的條件下系統性能達到最佳狀況、什麼地方是效能的瓶頸。效能測試要求測試環境應儘量與 產品執行環境保持一致,應單獨執行,儘量避免與其他軟體同時使用。 4.容量測試,英文Volume Testing 

通過效能測試,如果找到了系統的極限或苛刻的環境中系統的效能表現,在一定的程度上,我們完成了容量測試。 

容量可以看作系統性能指標中一個特定環境下的一個特定效能指標,即設定的界限或極限值。 

容量測試目的是通過測試預先分析出反映軟體系統應用特徵的某項指標的極限值(如最大併發使用者數、 資料庫記錄數等),系統在其極限值狀態下沒有出現任何軟體故障或還能保持主要功能正常執行。容量測試還將確定測試物件在給定時間內能夠持續處理的最大負載或工作量。對軟體容量的測試,能讓軟體開發商或使用者瞭解該軟體系統的承載能力或提供服務的能力,如某個電子商務網站所能承受的、同時進行交易或結算的線上 使用者數。知道了系統的實際容量,如果不能滿足設計要求,就應該尋求新的技術解決方案,以提高系統的容量。有了對軟體負載的準確預測,不僅能對軟體系統在實 際使用中的效能狀況充滿信心,同時也可以幫助使用者經濟地規劃應用系統,優化系統的部署。 

 關注點是how much,而不是how fast 例如: 

 通過編輯一個巨大的檔案來測試文書處理軟體  通過傳送一個巨大的作業來測試印表機  通過成千上萬的使用者郵箱來測試郵件伺服器 

 有一種比較特別的容量測試是叫作“零容量測試”,它是給系統加上空任務來測試的。 5.總結 

壓力測試可以看作是容量測試、效能測試和可靠性測試的一種手段,不是直接的測試目標。壓力測試的重點在於發現功能性測試所不易發現的系統方面的缺陷。而容量測試和效能測試是系統測試的主要目標內容,也就是確定軟體產品或系統的非功能性方面的質量特徵,包括具體的特徵值。容量測試和效能測試更著力於提供效能與容量方面的資料,為軟體系統部署、維護、質量改進服務,並可以幫助市場定位、銷售人員對客戶的解釋、廣告宣傳等服務。壓力測試、容量測試、效能測試,測試的方法相似、相通,在實際測試工作中,往往結合起來進行,以提高測試效率。一般會設定專門的效能測試實驗室,完成這些工作。即使用虛擬的手段模 擬實際操作,所需要的客戶端有時還是很大的,所以效能測試實驗室的投資較大。  

 負載測試是通過改變系統負載方式、增加負載等來發現系統中所存在的效能問題。負

載測試是一種測試方法,可以為效能測試、壓力測試所採用。負載測試的載入方式也有很多種,可以根據測試需要來選擇。 

 壓力測試是在給系統不斷加壓,增加併發量,直到崩潰,找到系統所能承受的極限值。  容量測試是在預先分析的極限值下,系統是否還能正常執行。比如系統考慮預期的業

務處理量會增加,這個業務資料量可以根據現在的實際業務資料量和一個增加的速度得到未來的業務資料量,然後根據計算得到的業務資料量作為一個容量來測試,當業務資料量到了預期的時候,系統跑起來是否一切正常。  

6. 負載測試與效能測試 

負載測試是為了發現系統的效能問題,負載測試需要通過系統性能特性或行為來發現問題,從而為效能改進提供幫助,從這個意義看,負載測試可以看作效能測試的一部分。但它們兩者的目的是不一樣的,負載測試是為了發現缺陷,而效能測試是為了獲取效能指標。因為效能測試過程中,也可以不調整負載,而是在同樣負載情況下改變系統的結構、改變演算法、改變硬體配置等等來得到效能指標資料,從這個意義看,負載測試可以看作是效能測試所採用的一種技術,即效能測試使用負載測試的技術、使用負載測試的工具。效能測試要獲得在不同的負載情況下的效能指標資料。