首先來說說性能測試:性能是軟件的一種非功能特性,他關注的不是軟件是否完成了特定的功能,而是軟件在完成特定功能是展示出來的及時性。及時性從不同的視角代表不同的指標:
- 用戶:響應時間
- 系統管理員:資源利用率,可擴展性,系統穩定性,系統容量
- 開發人員:系統架構,數據庫設計,設計和代碼實現
可見,系統穩定性對系統管理員的意義重大,穩定性的好壞也可以直接影響到最終用戶所關心的“響應時間”,所以說穩定性測試時性能測試中非常重要的一環。
穩定性測試(亦可稱可靠性測試)通過給系統加載一定的業務壓力,讓系統持續運行一段時間(一般為7x24小時),檢測系統是否能夠穩定運行。
如何實施
- 識別並確認軟件主要業務(是否需要穩定性測試)
- 將穩定性測試的重心放在軟件最有Value的地方,比如說一個搶票系統,它最有value的地方是當有一定數量的用戶同時進行買票操作是系統的相應時間,資源利用率等是否能夠正常且穩定,而不是用戶如何添加新的聯系人,修改個人信息等
- 羅列主要用戶場景及相應負載量
- 用戶場景可以根據軟件主要業務進行設定
- 對主要場景負載量需要有一個清晰的定義(或者通過負載測試驗證了用戶場景的負載量,這將作為一個標准的負載在穩定性測試中使用)
- 制定穩定性指標模型(Modeling)
- 根據用戶場景建模,創建合適合理的穩定性指標模型(之后會有一個例子)
- 測試環境准備(對軟硬件環境的配置:配置的來源可以是客戶環境模擬、需求文檔規定的配置或者配置測試得出的最佳配置)
- 識別穩定性的主要性能指標(KPI)
- 用來描述穩定性測試關注的系統指標,比如響應時間、CPU、內存使用率等等,需要根據具體業務進行定義
- 測試的執行和數據收集 按照相應穩定性指標模型(Modeling)分析測試結果
- 將測試結果應用在穩定性測試模型中,觀察是否滿足穩定性要求
- 持續改進(如有必要)
穩定性指標模型(例子)
下面我們拿一個BI(商業智能)的例子來進行我們的穩定性測試建模
- 軟件主要業務:從大量元數據中提取(ETL)客戶關心的數據並最終生成報表(本文以微軟平台BI為例:SSIS,SSAS,SSRS)
- 用戶場景:利用SSIS 包進行ETL操作將元數據計算轉化后導入到數據立方體(Cube)中。
- 典型負載:每小時3000個用戶,100000條數據,執行7x24小時
- 測試環境:需求文檔中規定的配置
- 主要性能指標:
- ETL時間:9分鍾,差別:1分鍾,方差:<0.1
- 系統相關:CPU,Memory,Private Mbytes/sec等
- 穩定性指標模型:
- 計算公式
2. 穩定性模型
3. 從圖表中可以看出:
-
- ETL上限為12分鍾(即如果超過12分鍾就證明有瓶頸,需要調查)
- ETL平均值為9分鍾
- 控制線的上下方分別為Avg加減3倍的方差
- 實際使用時間圍繞平均值上下分布(標准為同一向不能出現連續7個點:如連續7個實際檢測值都在平均值的上方,這時就需要進行調查)
4. 系統方面的指標也可以按照這個方法去分析。(當然,對系統資源占用要求不高的系統可以直接通過占用曲線來分析穩定性)
7. 執行測試獲取結果,套用指標模型進行分析
總結
總的來說,穩定性測試是用來驗證產品在一定的負載下是否能夠長時間的穩定運行,其主要目的是驗證能力,並在能力的驗證過程中找到系統不穩定的因素並進行分析解決。