驗證是ISO26262中關(guān)于成果認(rèn)可最重要的環(huán)節(jié)。
ISO26262對驗證(Verification)的定義是檢查對象是否滿足特定的要求,驗證的形式包括了驗證評審(verification review)、走查(walk-through),檢查(inspection)、驗證測試(verification testing)、模擬仿真(simulation)、原型機(jī)驗證(prototyping)和分析(analysis包括安全分析、控制流程分析、數(shù)據(jù)流分析等等)。
從驗證本身的系統(tǒng)性和正式程度從小到大排序,驗證的各個形式可以排為檢查、走查、模擬仿真、原型機(jī)驗證、分析、驗證評審。
驗證在功能安全活動不同階段的對象也有差異,比如在產(chǎn)品概念提出階段,驗證的對象主要為:依據(jù)危害風(fēng)險評估導(dǎo)出的安全目標(biāo)以及根據(jù)安全目標(biāo)定義的功能安全概念,如場景危害識別是否適用、相關(guān)性定義是否正確、是否與其他相關(guān)項定義的危害和風(fēng)險評估一致、危害事件是否覆蓋實際應(yīng)用等。如,在產(chǎn)品開發(fā)階段,驗證主要是針對硬件設(shè)計的架構(gòu),驗證其需求規(guī)范、架構(gòu)設(shè)計、模型或代碼是否符合安全要求。
驗證以建立驗證計劃作為開始,如上述的產(chǎn)品各個開發(fā)階段的驗證都是從驗證計劃開始的。
驗證計劃要包括1)所需驗證的對象:組成待驗證的成果清單,要考慮成果的復(fù)雜性,進(jìn)行適當(dāng)?shù)牟鸱郑?/span>
2)針對每個待驗證的成果,確定相應(yīng)的驗證目的,確定驗證目的時要充分借鑒前期的驗證經(jīng)驗,如維修的歷史數(shù)據(jù)、已經(jīng)使用的經(jīng)歷等,這可以指導(dǎo)驗證目的和制定的驗證方法的剪裁;
3)對工作成果采用什么樣的驗證方法,評審/檢查/走查/測試/仿真/分析,驗證方法最終要細(xì)化為“驗證規(guī)范"作為驗證支持依據(jù),同時要保證驗證方法是充分的,必要時要進(jìn)行幾種驗證形式的組合;
4)如果采用的是測試或者模擬作為驗證方法,則要明確驗證的環(huán)境和驗證所需的設(shè)備,要充分考慮驗證技術(shù)的成熟度,不能采用的未經(jīng)過經(jīng)驗證明有效性的方法和設(shè)備進(jìn)行驗證;
5)分配驗證資源;
6)驗證過程中出現(xiàn)異常時,明確應(yīng)該采取或建議采取的閉環(huán)活動;
7)對于哪些已經(jīng)經(jīng)過驗證后,進(jìn)行了變更的成果,制定回歸策略,即對驗證計劃的剪裁(是部分重復(fù)驗證,還是全部重復(fù)驗證)。
對于驗證方法的細(xì)化就形成了驗證規(guī)范,驗證規(guī)范最需要細(xì)化的是測試用例。
測試用例應(yīng)具有
1)測試用例的識別性,即該測試應(yīng)用到哪項成果,什么目的驗證;
2)測試用例針對的是哪個版本的工作成果;
3)對驗證目標(biāo)采用何種預(yù)處理或配置,比如將MCU應(yīng)用在什么場景下,配置什么功能或系統(tǒng),如果對于通用型的要素,其會在很多場合應(yīng)用,則需將要素置于一種通用的(覆蓋多種應(yīng)用場景的)條件下進(jìn)行驗證;
4)環(huán)境條件,就是與測試過程或模擬過程相關(guān)的物理條件,比如溫度。
5)驗證過程中要監(jiān)測的行為,比如輸出數(shù)據(jù),可接受的范圍,時間或容差的特性,測試時需要考核前后數(shù)據(jù)的變化趨勢,就需要對初始值進(jìn)行明確的定義;有可能存在不同的測試用例下,會存在多種預(yù)處理、配置或環(huán)境條件和規(guī)范,這時候可以采用一種明確能覆蓋多種測試用例的驗證配置進(jìn)行驗證。
6)測試通過和不通過的判據(jù)。
測試用例可以根據(jù)測試設(shè)備和測試環(huán)境、邏輯和時序關(guān)系、所利用的資源進(jìn)行分組,比如對于可以分為回歸測試用例或者完整的測試用例。
驗證要求第二/三方驗證,即不能用工作成果的完成人進(jìn)行驗證。驗證完成后要對驗證的結(jié)果進(jìn)行評估。
驗證結(jié)果評估需包括1)評估驗證的成果是不是ONLY的;
2)評估驗證計劃和驗證規(guī)范的完整性和適用性;
3)評估驗證過程中所用到的環(huán)境配置、驗證工具及標(biāo)定數(shù)據(jù)是否符合要求;
4)評估驗證結(jié)果與預(yù)期結(jié)果的一致性;
5)綜合給出驗證通過或不通過,并對于不通過的給出具體的理由以及整改建議;
6)如果存在驗證過程未按照驗證計劃或規(guī)范執(zhí)行,需要給出理由。
單一層級的驗證,比如只針對開發(fā)的硬件進(jìn)行功能、性能等安全性的評估,并不能提供硬件滿足安全要求的充分證據(jù),比如:硬件與其他接口兼容性、硬件與其他已有硬件的匹配性、硬件對整車安全的貢獻(xiàn)性、硬件開發(fā)的種種假設(shè)證明的有效性等等,這些都無法單獨在硬件驗證的層面進(jìn)行評估。
因此,為充分評估開發(fā)硬件的功能安全,往往要通過將硬件與軟件、其他要素、系統(tǒng)甚至整車集成起來,按照“驗證原型機(jī)測試"的標(biāo)準(zhǔn)去考核。ISO26262給出集成測試的相關(guān)規(guī)定。
集成與驗證的相關(guān)規(guī)定關(guān)于集成測試,某一開發(fā)的硬件要通過三個階段集成至整車系統(tǒng),完成安全目標(biāo)的確認(rèn)。
但是從集成的難度和所需要的資源的考慮,集集成階段越高,集成驗證的難度越高,占用資源越多,因此盡可能選擇低階段的集成策略。
如何選擇集成驗證的策略:
1)明確需要驗證測試的目標(biāo),比如要驗證安全機(jī)制對傳感器的診斷,EDC對數(shù)據(jù)錯誤的診斷和控制等;
2)定義這些承載這些測試目標(biāo)的相關(guān)項和測試的要求(預(yù)期的行為,集成的等級),比如驗證開發(fā)的硬件與接口的兼容性,就必須考慮硬件與系統(tǒng)的集成;
3)確定了測試的目標(biāo)和承載這些目標(biāo)的相關(guān)項和測試要求,要進(jìn)行梳理,確保每一條測試的目標(biāo)都能夠進(jìn)行至少一次地驗證,比如某項測試目標(biāo)無法在軟硬件集成階段進(jìn)行驗證,則需要到系統(tǒng)集成階段進(jìn)行驗證;
4)要考慮硬件開發(fā)概念階段是否采用了假設(shè),如SEooC的開發(fā),是基于應(yīng)用假設(shè)為前提的,對這種假設(shè)需要在系統(tǒng),甚至是整車的層面進(jìn)行集成驗證;
5)如果系統(tǒng)集成時,存在多個可能的集成變體,即所謂的多配置,那么我們就要充分評估,在未來整車量產(chǎn)時,可能采用哪些系統(tǒng)配置,盡可能地包絡(luò)這些系統(tǒng)配置(或形成系統(tǒng)的集合)完成系統(tǒng)級的驗證。
確定目標(biāo)和相應(yīng)的集成策略后,根據(jù)需要選擇相對應(yīng)的方法,ISO26262 part4 第7.4.2-7.4.4給出了三個集成階段的測試方法,總體上包括:
1)功能和非功能的測試:對集成硬件的功能和性能對照規(guī)格書要求的測試;
2)內(nèi)外接口測試:包括模擬,數(shù)字輸入輸出測試、邊界測試和等價類測試,評估接口功能兼容性、時序容錯性。
1)故障注入測試:采用特殊方法向運(yùn)行中的測試對象注入故障,如騷擾、錯誤數(shù)據(jù)、延遲時序等;
2)背靠背測試:在具有仿真模型和結(jié)果的情況下,采用實際試驗對仿真模型和結(jié)果的差異進(jìn)行評估和分析。
1)錯誤猜測法測試:類似故障注入法,基于專家知識和經(jīng)驗數(shù)據(jù)預(yù)測被測對象可能錯在的錯誤,然后設(shè)計評估方法去檢查這些錯誤;
2)來自現(xiàn)場經(jīng)驗的測試:直接從使用現(xiàn)場采集的數(shù)據(jù),如試車時的運(yùn)行數(shù)據(jù);
3)長期測試:類似來自現(xiàn)場經(jīng)驗的測試,只是將普通用戶作為測試者,收集實際使用條件下的數(shù)據(jù)。
1)資源使用測試:對集成系統(tǒng)所能容納的負(fù)載,代碼,功率等能力進(jìn)行測試;
2)壓力測試:測試對象在高負(fù)載和惡劣環(huán)境下是否能夠長期穩(wěn)定運(yùn)行的能力進(jìn)行測試。