驗證和確認(rèn)是兩個不同的過程,通常用于軟件開發(fā)、工程和制造等各個領(lǐng)域。它們都用于確保軟件滿足其預(yù)期用途,但它們實現(xiàn)的方式不同。
確認(rèn)
驗證是檢查軟件是否符合其規(guī)格的過程。它回答了以下問題:“我們是否正確構(gòu)建了產(chǎn)品?”這意味著根據(jù)項目開始時定義的要求檢查軟件是否按預(yù)期運行。驗證通常通過靜態(tài)測試完成,這意味著軟件實際上并未執(zhí)行。相反,代碼經(jīng)過審查、檢查或遍歷以確保其符合規(guī)格。
驗證
驗證是檢查軟件是否滿足用戶需求的過程。它回答了以下問題:“我們是否在構(gòu)建正確的產(chǎn)品?”這意味著檢查軟件是否真正有用并滿足使用者的期望。驗證通常通過動態(tài)測試完成,這意味著軟件實際上是用真實數(shù)據(jù)執(zhí)行和測試的。
以下是一些典型的驗證和確認(rèn)示例:
· 驗證:檢查軟件程序的代碼,以確保其遵循正確的語法,并且所有功能均正確實現(xiàn)
· 驗證:使用真實數(shù)據(jù)測試軟件程序,以確保其產(chǎn)生正確的結(jié)果
· 驗證:審查軟件系統(tǒng)的設(shè)計文檔,以確保其完整性和準(zhǔn)確性
· 驗證:進行用戶驗收測試 (UAT),以確保軟件系統(tǒng)滿足用戶的需求
何時使用
傳統(tǒng)上,驗證應(yīng)在軟件開發(fā)過程的早期進行,而確認(rèn)應(yīng)在后期進行。這是因為驗證有助于及早發(fā)現(xiàn)和修復(fù)錯誤,從長遠(yuǎn)來看可以節(jié)省時間和金錢。確認(rèn)也很重要,但它可以在軟件基本完成后進行,因為它涉及實際測試和反饋。
另一種方法是盡早開始驗證和確認(rèn)并進行迭代。只要有可能,就可以在小規(guī)模、增量式驗證步驟之后進行驗證。驗證和確認(rèn)之間的這種迭代可以在整個開發(fā)階段使用。這種方法背后的原因是,驗證和確認(rèn)都可能有助于盡早發(fā)現(xiàn)和修復(fù)錯誤。
天氣預(yù)報應(yīng)用程序
假設(shè)有一組軟件工程師正在開發(fā)一款天氣預(yù)報應(yīng)用。他們有一個規(guī)范,其中規(guī)定:“應(yīng)用應(yīng)準(zhǔn)確顯示當(dāng)前溫度和未來 5 天的天氣預(yù)報。”在測試階段,他們會一絲不茍地審查代碼、檢查算法,并確保應(yīng)用確實按照他們的規(guī)范正確顯示溫度和預(yù)報數(shù)據(jù)。如果一切都符合規(guī)范,則應(yīng)用通過驗證,因為它符合指定的標(biāo)準(zhǔn)。
現(xiàn)在,讓我們將焦點轉(zhuǎn)移到這款天氣應(yīng)用的用戶身上。他們下載應(yīng)用、開始使用并提供反饋。一些用戶報告說,雖然溫度和預(yù)報準(zhǔn)確,但他們發(fā)現(xiàn)用戶界面混亂且難以操作。其他人則建議該應(yīng)用應(yīng)提供更詳細(xì)的每小時預(yù)報。這些反饋與用戶體驗和用戶滿意度有關(guān),而不是具體的技術(shù)規(guī)格。
驗證可確認(rèn)應(yīng)用滿足與溫度和預(yù)報準(zhǔn)確性相關(guān)的技術(shù)要求,但驗證會發(fā)現(xiàn)用戶界面和用戶需求方面的問題。應(yīng)用可能會通過驗證,但驗證失敗,因為它不能完全滿足用戶的真實需求和期望。這凸顯出驗證側(cè)重于產(chǎn)品是否滿足用戶的實際需求和期望,而這些需求和期望可能并不總是與初始技術(shù)規(guī)格相符。
社交媒體應(yīng)用程序
假設(shè)您正在開發(fā)一款新的社交媒體應(yīng)用。驗證過程將涉及確保該應(yīng)用滿足指定的要求,例如創(chuàng)建和分享帖子、發(fā)送消息和添加好友的能力。這可以通過審查應(yīng)用的代碼、測試其功能并將其與需求文檔進行比較來完成。
驗證過程將涉及確保應(yīng)用滿足用戶的需求。這可以通過進行用戶訪談、調(diào)查和可用性測試來完成。例如,您可以詢問用戶他們希望如何分享帖子,或者他們希望在應(yīng)用中添加哪些功能。
在這個例子中,驗證將確保應(yīng)用程序在技術(shù)上是合理的,而確認(rèn)將確保它是用戶友好的并且滿足用戶的需求。
在線支付處理應(yīng)用程序
一個軟件工程師團隊正在開發(fā)一款在線支付處理應(yīng)用。為了進行驗證,他們將驗證處理付款、計算交易費用和處理貨幣兌換的代碼是否已根據(jù)應(yīng)用的設(shè)計規(guī)范正確實施。他們還將通過驗證加密協(xié)議、訪問控制和身份驗證機制是否正確集成,確保應(yīng)用符合行業(yè)安全標(biāo)準(zhǔn),如支付卡行業(yè)數(shù)據(jù)安全標(biāo)準(zhǔn) (PCI DSS)。他們還將確認(rèn)用戶界面是否按預(yù)期運行,包括驗證支付表單是否收集必要信息以及錯誤消息是否正確顯示。
為了驗證在線支付處理軟件,他們會將其用于實際支付交易。一種情況是處理真實的支付交易,以確認(rèn)該軟件可以無錯誤地處理各種類型的支付,包括信用卡、數(shù)字錢包和國際交易。另一種情況是評估用戶體驗,檢查用戶是否可以輕松瀏覽應(yīng)用程序、付款并無問題地收到確認(rèn)。
使用 fMRI 預(yù)測大腦活動
開發(fā)了一款神經(jīng)信息學(xué)軟件應(yīng)用程序,用于根據(jù)功能性磁共振成像 (fMRI) 數(shù)據(jù)預(yù)測大腦活動。驗證將驗證用于預(yù)處理 fMRI 數(shù)據(jù)的算法(例如噪聲消除和運動校正)是否正確轉(zhuǎn)換為代碼。您還將確保用戶界面按規(guī)定運行,并且數(shù)據(jù)輸入和輸出格式符合定義的標(biāo)準(zhǔn),例如腦成像數(shù)據(jù)結(jié)構(gòu) (BIDS)。
驗證會將軟件生成的預(yù)測大腦活動模式與 fMRI 掃描中觀察到的實際大腦活動進行比較。此外,您還可以將軟件的預(yù)測與使用既定方法或地面實況數(shù)據(jù)獲得的結(jié)果進行比較,以評估其準(zhǔn)確性。在這種情況下,驗證可確保軟件運行時沒有內(nèi)部錯誤,如已驗證的一樣。它還確保軟件可靠而準(zhǔn)確地執(zhí)行其基于 fMRI 數(shù)據(jù)預(yù)測大腦活動的主要功能。此步驟有助于確定該軟件是否可以用于科學(xué)或臨床目的。
預(yù)測 RNA 分子的二級結(jié)構(gòu)
假設(shè)您是一位生物信息學(xué)家,正在開發(fā)一種預(yù)測 RNA 分子二級結(jié)構(gòu)的軟件工具。您的軟件以 RNA 序列作為輸入,并預(yù)測最可能的折疊模式。為了進行驗證,您需要驗證您的 RNA 二級結(jié)構(gòu)預(yù)測軟件是否使用科學(xué)文獻中描述的算法準(zhǔn)確計算自由能值。您將軟件的實現(xiàn)與已發(fā)布的算法進行比較,并驗證代碼是否精確遵循預(yù)期的數(shù)學(xué)程序。
在這種情況下,驗證可確保您的軟件正確執(zhí)行預(yù)期的計算并準(zhǔn)確遵循算法邏輯。
為了驗證您的 RNA 二級結(jié)構(gòu)預(yù)測軟件,您需要在具有已知二級結(jié)構(gòu)的多種真實 RNA 序列上運行該軟件。然后,您需要將軟件的預(yù)測與實驗數(shù)據(jù)或其他可信賴的參考工具進行比較,以檢查它是否提供具有生物學(xué)意義的結(jié)果,以及其準(zhǔn)確性是否足以達(dá)到預(yù)期目的。
會議室里的燈開關(guān)
以會議室中的燈開關(guān)為例。驗證會詢問照明是否符合要求。要求可能會指出“投影儀屏幕前的燈可以獨立于房間中的其他燈進行控制”。如果寫下了要求,而燈無法獨立控制,則照明無法通過驗證。這是因為實施不符合要求。
驗證會詢問用戶是否對照明滿意。這是一個比較主觀的問題,用單一指標(biāo)來衡量滿意度并不總是那么容易。例如,即使燈光可以獨立控制,如果燈光太亮或太暗,用戶仍可能不滿意。
總結(jié)
驗證通常是一項技術(shù)性更強的活動,需要使用有關(guān)軟件工件、要求和規(guī)范的知識。驗證通常依賴于領(lǐng)域知識,即軟件所針對的應(yīng)用程序的知識。例如,醫(yī)療設(shè)備軟件的驗證需要醫(yī)療保健專業(yè)人員、臨床醫(yī)生和患者的知識。
需要注意的是,驗證和確認(rèn)并不相互排斥。事實上,它們是互補的過程。驗證確保軟件構(gòu)建正確,而確認(rèn)確保軟件有用。通過結(jié)合驗證和確認(rèn),我們可以更有信心我們的產(chǎn)品會讓客戶滿意。