在軟體測試中不僅要檢查程式是否出錯、程式是否和軟體產品的設計規格說明書一致,而且還要檢驗所實現的正確功能是否就是客戶或使用者所需要的功能,兩者缺一不可,這兩部分活動構成了一個完整的測試活動。這就是軟體測試中有名的V&V,即Verification和Validation。實際上,在整個軟體開發生命週期,Verification和Validation每時每刻都存在著。
1. 驗證——Verification
Verification,翻譯為“驗證”,也可以譯為“檢驗”,即驗證或檢驗軟體是否已正確地實現了產品規格書所定義的系統功能和特性。驗證過程提供證據表明,軟體相關產品與所有生命週期活動(需求分析、設計、編程、測試等)的要求(如正確性、完整性、一致性、準確性等)相一致。
驗證是否滿足生命週期過程中的標準、實踐和約定;驗證為判斷每一個生命週期活動是否已經完成,以及是否可以啟動其他生命週期活動建立一個新的基準。
在 ISO9000 中,“驗證”的嚴格定義是:驗證是通過檢查和提供客觀證據,表明規定要求已經滿足的認可。“驗證”強調的是“規定規格要求”
2. 有效性確認——Validation
Validation,翻譯為“確認”,但更準確地翻譯,應該是“有效性確認”,這種有效性確認要求更高,要能保證所生產的軟體可追溯到使用者需求的一系列活動。確認過程提供證據,表明軟體是否滿足客戶需求(指分配給軟體的系統需求),並解決了相應問題。
在 ISO9000 中,“確認”的嚴格定義是: 確認:是通過檢查和提供客觀證據,表明一些針對某一特定預期用途的要求已經滿足的認可。“確認”強調的是“預期用途的要求”
3. 兩者的區別和聯絡
為了更好地理解這兩個測試活動的區別,可以概括地說,驗證(Verification)是檢驗開發出來的軟體產品和設計規格書的一致性,即是否滿足軟體廠商的生產要求。但設計規格書本身就可能有問題、存在錯誤,所以即使軟體產品中某個功能實現的結果和設計規格書完全一致,但所設計的功能不是使用者所需要的,依然是軟體嚴重的缺陷。因為設計規格書很有可能一開始就對使用者的某個需求理解錯了,所以僅僅進行驗證(Verification)測試還是不充分的,所以還需要進行性確認(Validation)測試。確認(Validation)就是檢驗產品功能的有效性,即是否滿足使用者的真正需求。
這就是BOEHM對V&V的最著名又最簡單的解釋是
- Verification:Are we building the product right?是否正確地構造了軟體?即是否正確地做事,驗證開發過程是否遵守已定義好的內容
- Validation: Are we building the right product? 是否構造了正確的軟體?即是否正在做使用者真正所需要的事。
我們還可以給出在目的、對象、參與人員和時機等各個方面的區別和聯絡。
目的:
- 驗證的目的是證實設計階段輸出是否確保設計階段輸入要求;
- 確認的目的是通過產品確認設計是否滿足使用要求。
對象:
- 驗證的對象是設計輸出檔案,計算書或樣品等;
- 確認的對象是最終產品(樣品)。
參與人員:
- 驗證的參與人員通常是設計部門;
- 確認的參與人員必須包括使用者或能代表使用要求的人員。
時機:
- 驗證的時機是設計適當階段,一般是設計階段輸出形成結果時;
- 確認的時機是成功的設計驗證後,一般針對最終產品,也可分階段確認。
預知後事如何,請讀下回分解:第10回 在軟體開發各個階段的測試工作
著作權,軟體測試演義
——系列討論的目錄,見: 軟體測試演義——中進階系列(序)