軟體驗證及確認

在軟體專案管理、軟體工程及軟體測試中，驗證及確認（，簡稱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
 預先定義貓的健康標準，以此標準飼養符合條件的高品質成貓，期待其能抓老鼠。（期待而不保證）

在社群中，確認、驗證及的定義類似：

確認是評估建模或模擬及其相關資料是否準確表達其預期機能的程序
 资格认可是認證建模與模擬可以用在特定用途的正式認證過程。
 驗證是評估電腦建模或模擬及其相關資料是否準確描述開發者概念描述及規格的程序。

相關概念
驗證及確認都是屬於軟體品質保證的一部份，但只靠驗證及確認無法確保軟體品質，需配合計劃、可追蹤性、組態管理及其他軟體工程的概念才能確保軟體品質。

分類
對於要求完美性能的任務關鍵系統，會使用形式方法確認系統的正確性，不過形式方法的成本相當的高，若是非任務關鍵系統，一般會使用其他的驗證及確認方式，例如等。

測試用例

測試用例是驗證及確認過程中使用的工具，測試用例一组条件或变量，测试者根据它来确定应用软件或軟體系統是否正确工作。

測試用例是為了驗證而準備，其目的是評估後續建構產品的程序是否正確。

測試用例是為了確認而執行，是評估產品是否依照使用者的需求而設計及製造的程序，若在軟體開發生命週期的前面，會用其他方法（例如）進行確認。

監管環境
有一些產業的驗證及確認需符合相關法令的相容性要求，一般會由政府機構或是產業主管部份進行指導。例如美国食品药品监督管理局要求醫療設備的軟體及補丁均需經過確認的程序。

有關條目

 形式验证
 機能性規格


 國際軟體測試認證委員會
 軟體驗證
 軟體需求規格

 驗證及確認
 V模型 (軟體開發)

參考資料

Category:软件质量
Category:形式方法
Category:软件测试