在軟體專案管理、軟體工程及軟體測試中,驗證及確認(verification and validation,簡稱V&V)是指檢查軟體是否符合規格及其預期目的的程序。驗證及確認也被視為一種軟體品質管理,是軟件開發過程的一部份,一般歸類在軟體測試中。
驗證及確認有時會由公正的第三方單位進行,此情形下的驗證及確認稱為獨立驗證及確認,簡稱IV&V。
定義
確認(validation)的目的是檢查產品設計是否符合其預期的目的,軟體確認的目的是檢查軟體是否符合使用者的需求而言,可以由動態檢查或是其他方式的審查來達成。
依照能力成熟度模型(CMMI-SW v1.1)的定義:
- 確認(validation):是在特定開發階段中,評估軟體是否符合階段開始前所定義條件的程序(IEEE-STD-610)。
- 驗證(verification): 是在開發階段後,評估軟體是否符合規格需求的程序(IEEE-STD-610)。
換句話說,程序確保產品符合客戶需求,而驗證程序確保產品符合要求及設計規格。確認程序確保「製造出正確的產品」(you built the right thing),也就是符合客戶需求的產品,而驗證程序確保「以正確的方式製造產品」(you built it right)。
白話來說,對於抓老鼠為目的:
- Validation
- 黑貓白貓能抓老鼠的就是好貓。
- Verification
- 預先定義貓的健康標準,以此標準飼養符合條件的高品質成貓,期待其能抓老鼠。(期待而不保證)
在建模與模擬社群中,確認、驗證及資格認可的定義類似:
相關概念
驗證及確認都是屬於軟體品質保證的一部份,但只靠驗證及確認無法確保軟體品質,需配合計劃、可追蹤性、組態管理及其他軟體工程的概念才能確保軟體品質。
分類
對於要求完美性能的任務關鍵系統,會使用形式方法確認系統的正確性,不過形式方法的成本相當的高[2],若是非任務關鍵系統,一般會使用其他的驗證及確認方式,例如句法方法等。
測試用例是驗證及確認過程中使用的工具,測試用例一組條件或變量,測試者根據它來確定應用軟件或軟體系統是否正確工作。
測試用例是為了驗證而準備,其目的是評估後續建構產品的程序是否正確。
測試用例是為了確認而執行,是評估產品是否依照使用者的需求而設計及製造的程序,若在軟體開發生命週期的前面,會用其他方法(例如軟體評審)進行確認。
監管環境
有一些產業的驗證及確認需符合相關法令的相容性要求,一般會由政府機構[3][4]或是產業主管部份進行指導。例如美國食品藥品監督管理局要求醫療設備的軟體及補丁均需經過確認的程序。[5]
有關條目
- 編譯器正確性
- 形式驗證
- 機能性規格
- 醫療軟體
- 獨立驗證及確認機構
- 國際軟體測試認證委員會
- 軟體驗證
- 軟體需求規格
- 確認 (藥品生產)
- 驗證及確認
- V模型 (軟體開發)
參考資料
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.