廖麗華
(1.上海儀器儀表自控系統(tǒng)檢驗測試所有限公司,上海 200233;2.上海工業(yè)自動化儀表研究院有限公司,上海 200233)
由于功能安全相關(guān)產(chǎn)品的軟件驗證與確認(rèn)在安全性和可靠性上有獨立性要求(技術(shù)獨立性、管理獨立性和財務(wù)獨立性),為了保證軟件測試獨立性要求的有效性,需委托獨立的第三方軟件測試機構(gòu)進行安全相關(guān)產(chǎn)品的軟件測試,且要求該測試機構(gòu)一般在軟件測試領(lǐng)域具有專業(yè)技術(shù)能力,并且是取得國家認(rèn)可的測試實施機構(gòu)。對于獨立性要求低的軟件,即使不交付于獨立的第三方軟件測試機構(gòu),也要交付于與軟件設(shè)計和開發(fā)人員獨立的部門進行測試。由于測試人員不直接參加軟件的設(shè)計與開發(fā),所以必須依據(jù)標(biāo)準(zhǔn)、文檔和測試技術(shù)全面深入分析,才能進行軟件測試,發(fā)現(xiàn)軟件中存在的問題,從而確保軟件僅執(zhí)行預(yù)期功能而不執(zhí)行非預(yù)期功能。
軟件確認(rèn)測試是通過檢查和提供客觀依據(jù),證明軟件是否滿足特定預(yù)期用途的需求[1]。安全相關(guān)產(chǎn)品的軟件確認(rèn)一般要經(jīng)過三個確認(rèn)階段,分別是軟件確認(rèn)、軟硬件集成后的嵌入式軟件確認(rèn)和整體系統(tǒng)安全確認(rèn)。本文的安全相關(guān)軟件的確認(rèn)是指將軟件需求規(guī)格說明書中每一個安全、安全相關(guān)、約束的功能、條件以及性能進行逐條確認(rèn)的測試,針對的是整個軟件與硬件集合的嵌入式軟件系統(tǒng)。安全相關(guān)產(chǎn)品軟件確認(rèn)的主要目標(biāo)是檢查和解決需求規(guī)格書的不合理性、檢查和解決設(shè)計階段中的設(shè)計錯誤和確認(rèn)軟件是否完全實現(xiàn)了軟件需求規(guī)格書規(guī)定的要求。
軟件確認(rèn)的主要方法是以測試為主,分析和建模仿真等為輔;選擇手動或自動技術(shù)對軟件的每個功能作確認(rèn)測試。一般以功能為單位、標(biāo)準(zhǔn)規(guī)范與約束條件為前提,將軟件的功能與軟件模塊作對應(yīng)分析,實現(xiàn)這些功能的測試數(shù)據(jù)、測試規(guī)程,通過手動/自動、靜態(tài)/動態(tài)、分析/統(tǒng)計等技術(shù)實施。其測試結(jié)果的接受準(zhǔn)則除了需滿足軟件需求規(guī)格書要求,還要滿足安全相關(guān)產(chǎn)品的特性或?qū)<遗袛嗟戎饔^要求。
安全確認(rèn)測試應(yīng)按照軟件確認(rèn)計劃進行,測試計劃應(yīng)包括被測軟件的范圍、測試環(huán)境的搭建、測試工具的選擇、測試進度的規(guī)劃、測試技術(shù)/措施的選擇等,具體如下。
(1)確認(rèn)組織的安排。
① 確認(rèn)測試的進入條件。
② 確認(rèn)測試的人員:確認(rèn)期間評審人員都必須在場。
(2)安全相關(guān)產(chǎn)品相關(guān)運行模式的確定,包括[1]:
① 系統(tǒng)運行前的配置,包括設(shè)置和調(diào)整;
② 啟動、教學(xué)、自動、手動、半自動、穩(wěn)定狀態(tài)運行;
③ 重啟、關(guān)機和維護;
④ 合理可預(yù)見的異常事件和誤操作。
(3)確認(rèn)測試的內(nèi)容應(yīng)[2]:
① 覆蓋軟件需求規(guī)格書的所有需求;
② 非常有代表性地覆蓋所有信號范圍以及計算
的參數(shù)的范圍;
③ 全面覆蓋表決邏輯和其他邏輯以及邏輯組合;
④ 用最終的組裝配置測試所有的保護信號;
⑤ 確保數(shù)據(jù)的精度與系統(tǒng)的響應(yīng)時間得到證實;
⑥ 確保對所有設(shè)備故障或故障組合采取正確的行動。
(4)確認(rèn)測試時要求的工具和設(shè)備在使用前應(yīng)進行校準(zhǔn)和配置(軟件和硬件參數(shù))。
(5)確認(rèn)的技術(shù)及措施(如靜態(tài)測試、動態(tài)測試)。
(6)定義通過/失敗準(zhǔn)則,包括[1]:
① 輸入的信號和順序以及輸入值;
② 期望輸出的信號和順序以及輸出值;
③ 其他可接受的準(zhǔn)則,如存儲使用、時序和數(shù)值允差。
(7)確認(rèn)測試記錄的相關(guān)要求。
(8)確認(rèn)測試報告的相關(guān)要求。
靜態(tài)測試[3]是指不運行程序,通過人工對軟件程序和文檔進行分析與檢查。靜態(tài)測試主要方式有人工審查、符號執(zhí)行、需求確認(rèn)等。
軟件系統(tǒng)確認(rèn)測試的靜態(tài)測試主要是對被測軟件的需求規(guī)格書文檔等進行靜態(tài)測試,目的是滿足安全軟件需求規(guī)格書的可測試性、正確性、一致性、完備性、向前和向后的追溯性的要求。
軟件確認(rèn)測試的靜態(tài)測試活動如表1所示。
表1 軟件確認(rèn)測試的靜態(tài)測試活動
靜態(tài)測試需滿足以下準(zhǔn)則:系統(tǒng)合格性的可行性、軟件的可測性、系統(tǒng)需求的測試覆蓋率、所用測試方法與標(biāo)準(zhǔn)的適合性、對預(yù)期結(jié)果的依從性、運行和維護的可行性。
動態(tài)測試是指通過人工或使用工具運行程序進行檢查、分析程序的執(zhí)行狀態(tài)和程序的外部表現(xiàn)。軟件系統(tǒng)確認(rèn)測試的動態(tài)測試,一般包括概率測試、過程仿真、建模、功能和黑盒測試(black-box testing)。其中:功能和黑盒測試是軟件確認(rèn)測試的必要測試方法,其余測試方法均適用于安全要求較高的軟件;而概率測試主要適用于安全要求最高的軟件(如核級安全軟件)。
黑盒測試[4]又稱功能測試、數(shù)據(jù)驅(qū)動測試或基于軟件需求規(guī)格說明的測試。在完全不考慮程序內(nèi)部結(jié)構(gòu)和內(nèi)部特性的情況下,僅依據(jù)程序功能的需求規(guī)格書確定測試用例和推斷測試結(jié)果的正確性。黑盒測試典型方法如表2所示。
表2 黑盒測試典型方法
概率測試[8]的目的是為了得到被測軟件的可靠性屬性的定量數(shù)值。該定量數(shù)值與置信度的要求密切相關(guān),并能給出每一個功能要求的一個失效概率、在某一時段的一個失效概率和錯誤控制的一個概率。
概率測試的用例選擇方法有:隨機選擇、依概率大小選擇、選取特殊狀態(tài)插入到序列中、用區(qū)間估計的方法對總體進行抽樣測試、直接在期望值附近抽樣取值、基于馬爾可夫鏈的序列選擇等。這些方法各有如下優(yōu)勢。
①在輸入域內(nèi)選擇隨機的均勻分布的測試數(shù)據(jù)。
②可靠性預(yù)測,通過測試軟件來預(yù)測軟件的使用性能。
③自動生成測試用例,通過軟件測試工具和編制程序自動生成測試序列。
④通過對軟件的量化處理,序列中每個操作都有明確的概率。
軟件確認(rèn)測試的評價應(yīng)滿足如下要求。
(1)軟件確認(rèn)的結(jié)果應(yīng)文檔化。
(2)對每一個功能,軟件確認(rèn)應(yīng)對以下結(jié)果文檔化。
① 確認(rèn)活動的按時間順序的記錄,以便追溯活動的順序;
② 所用的軟件確認(rèn)計劃的版本;
③ 確認(rèn)的功能(通過測試或分析);
④ 使用的工具和設(shè)備及其校準(zhǔn)數(shù)據(jù);
⑤ 確認(rèn)活動的結(jié)果;
⑥ 期望結(jié)果和實際結(jié)果的差異。
(3)當(dāng)期望結(jié)果和實際結(jié)果出現(xiàn)差異時,要對其進行分析,確認(rèn)是繼續(xù)進行測試還是提出變更請求,并且其都應(yīng)作為確認(rèn)結(jié)果而被文檔化。
(4)如有變更請求,應(yīng)先對其進行影響分析,以確定修改的范圍以及是否會引發(fā)新的危險或風(fēng)險。這些分析結(jié)果應(yīng)文檔化。
如有修改,軟件確認(rèn)需作回歸測試。根據(jù)影響分析的結(jié)果確定回歸測試的范圍,回歸測試的過程及結(jié)果也需文檔化。
安全確認(rèn)測試結(jié)果進行評審需考慮:測試應(yīng)表明軟件需求規(guī)格書中規(guī)定的要求都已正確滿足,且沒有執(zhí)行非預(yù)定的功能;測試用例及其結(jié)果應(yīng)文檔化以便用于后續(xù)分析,以及有安全要求的獨立評估;已歸檔的軟件確認(rèn)的結(jié)果應(yīng)表明軟件已通過確認(rèn)或未通過確認(rèn)的原因。
安全軟件的確認(rèn)貫穿于安全相關(guān)產(chǎn)品軟件實現(xiàn)的全過程[9]。為了確保安全相關(guān)產(chǎn)品能起到真正的安全防范作用,軟件的確認(rèn)一定要與產(chǎn)品信息需求達到正確性、一致性與完備性。由于軟件確認(rèn)測試是一個可重復(fù)的過程,所以配置管理很重要,需滿足以下要求:①完備性,確認(rèn)擁有用于描述軟件產(chǎn)品功能性、跟蹤程序版本和管理變化的過程;②充分性,確認(rèn)配置管理過程對于開發(fā)復(fù)雜性、軟件和系統(tǒng)規(guī)模、軟件安全級別、項目計劃和用戶要求是充分的。