V模型與測試級別[1]
2015-06-24
2.1.1 V模型
2.2.1 單元測試
2.2.2 集成測試
2.2.3 系統測試
2.2.4 驗收測試
2.1.1 V模型
- 單元測試:驗證軟件單元是否按照單元規格說明(詳細設計說明)正確執行,即保證每個最小的單元能夠正常運行。單元測試一般由開發人員來執行,首先設定最小的測試單元,然后通過設計相應的測試用例來驗證各個單元功能的正確性;
- 集成測試:檢查多個單元是否按照系統概要設計描述的方式協同工作。集成測試的主要關注點是系統能夠成功編譯,實現了主要的業務功能,系統各個模塊之間數據能夠正常通信等;
- 系統測試:驗證整個系統是否滿足需求規格說明;
- 驗收測試:從用戶的角度檢查系統是否滿足合同中定義的需求或者用戶需求;
V模型的特點
- V模型體現的主要思想是開發和測試同等重要,左側代表的是開發活動,而右側代表的是測試活動;
- V模型針對每個開發階段,都有一個測試級別與之想對應;
- 測試依舊是開發生命周期中的階段,與瀑布模型不同的是,有多個測試級別與開發階段對應;
- V模型適用於需求明確和需求變更不頻繁的情形;
2.2.1 單元測試
基本含義
- 單元測試的對象:可以是模塊、類、函數和對象等,不同的軟件語言來決定;
- 單元測試的主要目的:是驗證單元是否滿足了詳細設計規格說明,發現需求和設計中的錯誤;
- 單元測試設計的主要輸入(測試依據):是詳細設計規格說明、軟件設計和數據模型等;
- 單元測試的測試技術:主要采用白盒測試技術,黑盒測試技術作為單元測試的輔助;
- 單元測試應該覆蓋功能需求和非功能需求;
- 單元測試經常會使用測試驅動的方法(測試驅動開發);
測試環境
- 單元測試處理的對象直接來自開發人員,通常由開發人員來開展單元測試;
- 單元測試可能並不能形成完成的系統,因此需要驅動模塊和樁模塊的支持:
- 樁模塊:用以模擬被測模塊工作過程中所調用的模塊,他們一般只進行很少的數據處理,例如打印入口和返回;
- 驅動模塊:用以模擬被測模塊的上級模塊,它接受測試數據,把相關的數據傳送給被測模塊,啟動被測模塊,並打印相應的結果;
- 驅動模塊和樁模塊是測試使用的軟件,而不是軟件產品的組成部分,但它需要一定的開發費用;
單元測試關注點
- 單元模塊接口參數;
- 實際參數和形式參數的個數是否相同;
- 實際參數和形式參數的屬性是否匹配;
- 調用函數的參數順序、個數和屬性是否匹配;
- 單元模塊局部數據結構;
- 不合適或者不相容的類型說明;
- 變量沒有初始化;
- 不正確的變量名;
- 單元模塊的獨立路徑測試;
- 誤解或者用錯了算符優先級;
- 混和類型運算;
- 與控制流相關的測試;
- 錯誤的修改了循環變量;
- 循環中止條件不可能出現;
- 與異常處理相關的測試;
- 輸出的錯誤信息難以理解;
- 錯誤的信息和實際的錯誤不符;
2.2.2 集成測試
基本含義
- 集成測試,又叫組裝測試、聯合測試等;
- 集成測試是對組件之間的接口進行測試,以及和系統其他部分的相互作用;
- 最簡單的形式是兩個已經測試的單元組合成一個組件,來測試它們之間的接口和數據交換;
- 集成測試的主要工作:把單元測試通過的各個模塊逐步集成在一起,來測試數據是否能夠正確傳遞和調用,以及各個模塊是否能正確的協同工作;
- 集成測試可以應用在不同的測試級別,比如單元集成測試、系統集成測試等;
集成測試的關注點
- 單元模塊是否傳輸了錯誤的數據,或者沒有傳輸數據;
- 接受數據的單元不能操作或者崩潰,比如單元功能缺陷、接口格式不兼容、協議不兼容等;
- 單元之間通訊正常,但是使用不同的方法來解析收到的數據,比如規格說明矛盾、理解錯誤等;
- 數據能正常傳輸,但是傳輸時間錯誤,比如時序問題,或者傳輸的時間間隔太短,比如吞吐量、負荷、容量等問題;
2.2.3 系統測試
基本含義
- 系統測試是將已經集成好的軟件系統,作為計算機系統的一部分,與計算機硬件、某些支持軟件、數據和人員等系統元素結合起來,在實際運行環境下對計算機系統進行一系列嚴格有效的測試;
- 系統測試關注的是項目或產品范圍中定義的整個系統或產品的行為;
- 在系統測試中,測試環境應該盡量和最終使用的目標或產品使用的環境相一致,從而減少和環境相關的失效;
測試目標
- 系統測試的目標是確認整個系統是否滿足了規格說明中的功能和非功能需求,以及滿足的程度;
- 系統測試應該發現由於需求不正確、不完整或實現和需求不一致而引起的失效,並識別沒有文檔化或被忘記的需求;
- 常見的系統測試包括壓力測試、容量測試、性能測試、安全測試、容錯測試等;
為什么系統測試
- 在較低的測試級別,測試主要是針對技術規格說明的,即從軟件開發者的技術觀點角度加以考慮。而系統測試從客戶或用戶的觀點來考慮整個系統。測試人員確認系統是否完全正確的滿足了需求。
- 許多功能和系統屬性是從系統的所有組件相互調用的過程中得到的,因而只能在整個系統級別才能看到,也只能在這個時候才能進行觀察並測試。
2.2.4 驗收測試
基本含義
- 驗收測試通常是由使用系統的用戶來進行,同時系統的其他利益相關者也可能參與其中;
- 驗收測試目的是通過驗收測試,對系統功能、系統特定部分或特定的系統非功能特征進行測試;
- 發現缺陷不是驗收測試的主要目標,驗收測試也可以用來評估系統是否可以在市場部署、用戶使用系統的准備情況等;
驗收測試類型
- 合同驗收測試
- 規范驗收測試
- Alpha和Beta測試
- 用戶驗收測試
- 運行(驗收)測試
參考
[1] 軟件生命周期中的測試 [下載]