一、了解效能測試
效能測試是不斷的通過不同場景的系統表現去**系統設計與資源消耗之間的平衡。
我們可以認為效能測試是:通過在測試環境下對系統或構件的效能進行探測,用以驗證在生產環境下系統效能是否達到預估的效能需求,發現系統可能存在的效能瓶頸,進而改善優化並系統的效能,提高系統的可擴充套件性、穩定性。
從上面的描述可以看出,效能測試的主要工作包括:獲得預估的效能需求、搭建測試環境、執行測試、分析測試結果。其中,最為重要兩個工作是確定測試的目的、方案,並對結果進行分析。
二、確認測試目的
效能測試的需求包含但不限於使用者的需求。在效能測試前我們同樣需要充分了解開發、運維對系統的關注點。此外,要對被測模組的設計有深入了解,基本判斷該模組是cpu密集型或是io密集型。以上這些是為更確立測試的目的,並有針對性的梳理測試方案和分析做好準備。
效能測試的目的包括:
(1)驗證系統是否滿足預期需求;
(2)驗證系統在高壓下的表現;
(3)驗證系統是否能持續穩定的執行;
(4)探測系統的瓶頸和產生瓶頸的原因;
(5)探測系統設計與資源之間的最佳平衡,改善並優化系統的效能。
三、確認測試方案
根據效能測試目的的不同,所實施的測試方案也不同。
一般,效能測試主要包括如下幾種:
1)驗證系統在預估負載下的表現:負載測試
2)驗證系統在極端負載下的表現:壓力測試
3)驗證系統是否能持續穩定的執行:穩定性測試
以下是對上述三種測試的圖示。一般,常態負載低於瓶頸負載,從常態負載到瓶頸負載區間系統的承受能力可以看作是可擴充套件能力。當瓶頸負載小於等於常態負載時,說明該系統的效能沒有滿足預計要求,是存在問題的。探測常態負載與瓶頸負載的關係,正是負載測試所要完成的工作。壓力測試則驗證從系統到達瓶頸之後,繼續持續加壓時系統的表現。
根據效能測試的目的,選擇是進行負載、壓力、穩定性測試還是幾種測試。每種測試中一般會安排幾個場景,場景的變換主要根據壓力值、系統配置等引數而改變。首次測試一把根據預估的效能需求和經驗值開決定,後續的測試場景依賴於首次測試的各項指標的特徵。例如,首次測試後,發現系統的效能很好,完全滿足預期且機器各項負載指數很低,後續可以考慮n倍壓力值探測系統瓶頸。如果首次測試的結果表現出不能滿足預期,則需要調整各引數值進行測試,通過比較個引數值下的效能表現來分析系統瓶頸。
四、準備環境資料
1 搭建測試環境
2 準備測試資料
原則3 以小見大
測試資料是測試環境的一部分,但與環境不同,測試資料很難達到與生產環境一模一樣。一方面,生產環境的資料是動態、持續變化的,而測試中我們需要的資料是靜態的,我們無法保證資料的實時性;另一方面,生產環境的資料是龐大的,而測試環境中資料量是有限的。
在資料準備中既要關注資料的質、又要關注量。
1)質——指資料的頻率、分布要盡可能和線上一致。
2)量——指資料的規模要達到、接近或者超過線上現有水平。
通常,可以採用同比例縮放或擴放的方式,即使用過去一段時間的生產環境資料來進行測試。一般可以保證資料的頻率、分布和真實環境中是一致的。
五、效能指標分析
1 效能指標的關注
效能測試的指標可分為產品指標和資源指標兩類。對測試人員而言,效能測試的需求來自於使用者、開發、運維的三方面。使用者和開發關注的是與業務需求相關的產品指標,運維關注的是與硬體消耗相關的資源指標。
其中,資源消耗往往是制約產品指標的重要因素,是我們在效能測試中需要特別關注的指標。資源消耗包括cpu、記憶體、硬碟、網路頻寬等。
2 效能指標的統計
1) 單次業務相關的指標可以通過統計日誌資訊來計算。
2) 連續業務相關指標需要從長時間、高壓力的效能中統計和分析。
3) 資源消耗指標可以通過監控程序占用的資源、機器系統的資源變化來觀測。
其中,常見的效能分析工具有vmstat、top、free、iostat等。
3 效能指標的分析
指標分析的原則是「具體問題具體分析」,但是總的方法是盯住單場景,觀察各項指標變化趨勢;針對多場景,分析不同引數下的變化。需要注意到是,作業系統總是盡可能的去使用cpu和記憶體等資源,因此cpu滿負荷或者記憶體free較小並不能說明該資源出現不足。
在判斷資源短缺和瓶頸時需要綜合分析資源間的制約關係,並觀察各個資源值的變化。下面主要對資源消耗的各個指標進行分析。
其中,資源間的制約關係:
1)物理記憶體不夠時會使用交換記憶體,使用swap會帶來磁碟i0和cpu的開銷。
2)linux可以利用空閒記憶體作檔案系統訪問的cache,因此系統記憶體越大儲存系統的效能也越好。
六、總結
希望這份總結對大家有所幫助,總結是必要的,但僅僅是總結而已。個人理解,效能測試是一門意會大於言傳的測試。屢試不爽、受益匪淺。
【本文首發於:
效能測試方法全面綜述
對於企業應用程式,有許多進行效能測試的方法,其中一些方法實行起來要比其他方法困難。所要進行的效能測試的型別取決於想要達到的結果。例如,對於可再現性,基準測試是最好的方法。而要從當前使用者負載的角度測試系統的上限,則應該使用容量規劃測試。本文將介紹幾種設定和執行效能測試的方法,並討論這些方法的區別。簡...
效能測試方法全面綜述
對於企業應用程式,有許多進行效能測試的方法,其中一些方法實行起來要比其他方法困難。所要進行的效能測試的型別取決於想要達到的結果。例如,對於可再現性,基準測試是最好的方法。而要從當前使用者負載的角度測試系統的上限,則應該使用容量規劃測試。本文將介紹幾種設定和執行效能測試的方法,並討論這些方法的區別。簡...
軟體測試綜述
1 軟體測試的目標 發現程式中的錯誤,是為 了證明程式有錯,而不是證明程式無錯。保證軟體質量,提高軟體可靠 性的關鍵。2 軟體測試的任務 軟體測試是軟體開發工作的最後乙個環節。由於人認識客觀事物的主觀性,難免在開發 的軟體產品中產生錯誤。為了給使用者交付乙個高質量的軟體系統,必須對開發的系統進行嚴格...