作者 |浩瀚
小編 | 不吃豬頭肉

引言
在功能安全的開發(fā)、測試過程中概念階段的活動一般都是由主機廠負(fù)責(zé),而從系統(tǒng)開發(fā)到單元實現(xiàn)則是由供應(yīng)商負(fù)責(zé),對于供應(yīng)商所做的一系列測試通常稱為零部件級測試。根據(jù)ISO 26262功能安全標(biāo)準(zhǔn)的劃分,功能安全在零部件階段的測試包括:軟件單元測試、軟件集成測試、硬件集成測試、嵌入式軟件測試、軟硬件集成測試。本次主要探討軟件在零部件級的軟件測試。

目前功能安全零部件測試的困難
1.來自O(shè)EM的認(rèn)可壓力:隨著主機廠對功能安全的重視和投入,主機廠越來越專業(yè),審核要求也越來越嚴(yán)格,不僅要求過ISO 26262產(chǎn)品認(rèn)證和流程認(rèn)證,并且親自下場對各輸入物及詳細(xì)內(nèi)容進行審查。
2.技術(shù)儲備不足:大多數(shù)零部件供應(yīng)商沒有專門的功能安全團隊,缺少功能安全開發(fā)能力和測試能力。
3.資源不足:大部分零部件供應(yīng)商缺少完整的測試工具鏈,各階段測試人員配備不齊。目前國內(nèi)的功能安全標(biāo)準(zhǔn)正處于由國家推薦性標(biāo)準(zhǔn)逐漸向強制性標(biāo)準(zhǔn)過渡的時期,加之在新能源汽車出海的大趨勢下,功能安全標(biāo)準(zhǔn)也正在加速與國際接軌。未來功能安全標(biāo)準(zhǔn)將成為汽車供應(yīng)鏈廠商的準(zhǔn)入門檻之一。那么執(zhí)行滿足功能安全標(biāo)準(zhǔn)要求的測試已是刻不容緩且必須解決的問題,下面將依據(jù)功能安全標(biāo)準(zhǔn)和公司在軟件測試方面的積累提供滿足功能安全測試的解決方案。

軟件單元、集成測試
2.1軟件單元、集成的靜態(tài)測試
靜態(tài)測試是指在不運行軟件的情況下,檢查軟件是否符合業(yè)內(nèi)通用的編碼規(guī)范/建模規(guī)范,像MISRA、MAB等,盡早發(fā)現(xiàn)軟件的數(shù)據(jù)流/控制流問題,以及選用一些代碼度量的約束,來提高軟件質(zhì)量。
基于MBD的靜態(tài)分析
模型的靜態(tài)分析主要是通過選擇合適的建模標(biāo)準(zhǔn)和模型度量指標(biāo)來進行驗證,它的分析原理就是利用模型的一些屬性和結(jié)構(gòu)信息來推斷代碼的行為和可能存在的問題。對于模型生成的代碼也需要做代碼靜態(tài)分析。
建模規(guī)范選擇
在進行代碼靜態(tài)分析時,通常依據(jù)使用的語言和遵循的規(guī)則來選用編碼規(guī)范。在進行模型靜態(tài)分析時,依據(jù)使用的建模工具和要求來選擇建模規(guī)則。1)所有基于MBD的開發(fā)都需要選擇MAB建模規(guī)范;2)使用了Simulink 和 Stateflow 的模型工具需要選擇MISRA SLSF;3)使用了TargetLink的模型工具需要選擇MISRA TL;4)如果需要符合ISO 26262對于模型的標(biāo)準(zhǔn)要求,需要選擇定制的功能安全規(guī)范。工具選擇:對于模型的靜態(tài)測試通常選用MES的MXAM工具,MXAM是一款高度自動化的靜態(tài)分析工具,可支持多種模型類型的檢查,并且提供了符合ISO 26262標(biāo)準(zhǔn)的檢查規(guī)范。手寫代碼的靜態(tài)分析
代碼的靜態(tài)分析主要從編碼規(guī)范的檢查、程序流和數(shù)據(jù)流的分析、代碼度量分析等三個維度展開。它的分析原理是對編寫的代碼進行逐行檢查,尋找潛在的錯誤、漏洞和不符合規(guī)范的代碼結(jié)構(gòu)。
編碼規(guī)范選擇
在進行代碼靜態(tài)分析時,通常依據(jù)使用的語言和遵循的規(guī)則來選用編碼規(guī)范。1)C代碼:通常選用最新的MISRA編碼標(biāo)準(zhǔn)MISRA C 2023;2)C++代碼:a.基于C++98/03開發(fā)選用MISRA C++ 2008b.基于C++11及C++14標(biāo)準(zhǔn)選用AUTOSARC.基于C++17的標(biāo)準(zhǔn)選用MISRA C++ 20233)考慮信息安全時需要遵循CERT和CWE規(guī)范。工具選擇:對于代碼的靜態(tài)測試通常選用Helix QAC,它支持多種編碼標(biāo)準(zhǔn),以及擁有業(yè)界領(lǐng)先的編碼規(guī)范覆蓋度,擁有豐富的命令行,更容易實現(xiàn)自動化,方便與持續(xù)集成系統(tǒng)進行融合。
2.2軟件單元、集成的動態(tài)測試
動態(tài)測試通過實際執(zhí)行代碼來驗證軟件的行為和性能是否符合預(yù)期,動態(tài)測試可以發(fā)現(xiàn)靜態(tài)測試中未被檢測到的缺陷,確保軟件安全需求及安全機制執(zhí)行正確,無非預(yù)期的輸出,并為軟件接口的一致性和完整性提供證據(jù)。軟件單元的動態(tài)測試測試范圍:軟件單元詳細(xì)設(shè)計規(guī)范、軟件單元接口文檔。測試方法:
基于需求的測試:使用不同輸入來激發(fā)軟件單元代碼中的各種執(zhí)行路徑,驗證輸出符合預(yù)期,從而驗證軟件單元設(shè)計規(guī)范和分配的軟件安全要求滿足設(shè)計要求。
接口測試:考慮軟件單元輸入信號的無效/有效等價類和邊界值,模擬輸入檢測輸出的正確性,從而驗證軟件單元與接口文檔的一致性、輸出的正確性。
故障注入測試:故障注入測試一般要修改被測的軟件單元(比如改變變量的值,引入代碼突變或破壞CPU寄存器的值),主要用來驗證軟件單元的“故障檢測及處理”功能的正確性,以及軟件的魯棒性。
軟件集成的動態(tài)測試測試范圍:軟件架構(gòu)設(shè)計文檔、細(xì)化的軟硬件接口規(guī)范。測試方法:
基于需求的測試:驗證多個單元或組件集成后的軟件功能,正向、反向的功能驗證。用來驗證分配給軟件架構(gòu)的軟件要求,確保軟件架構(gòu)能夠滿足系統(tǒng)級別的需求。
接口測試:考慮集成的組件、模塊輸入信號的有效/無效等價類和邊界值,模擬輸入檢測輸出的正確性,以檢查單元和單元或組件和組件之間數(shù)據(jù)的一致性和完整性。
故障注入測試:注入任意的接口故障以測試安全機制(例如通過損壞軟件接口),以測試與安全機制相關(guān)的軟硬件接口的正確性。
資源使用測試的目的是確認(rèn)在最壞的情況下,資源CPU、ROM、RAM等的使用情況。只有在目標(biāo)硬件上執(zhí)行軟件測試或目標(biāo)處理器的仿真器支持資源占用測試時,才能正確評估軟件資源占用情況,一般可以在PiL和HiL測試階段進行驗證。背靠背測試針對于基于MBD的開發(fā),要求對模型生成的代碼和模型進行等效性驗證。軟件動態(tài)測試環(huán)境模型動態(tài)測試環(huán)境MIL:TPT + MATLAB/Simulink模型的動態(tài)測試主要是對模型的功能和接口進行測試,在TPT中選擇平臺和被測模型,工具可以自動獲取接口信息并生成測試框架。測試框架中包含test driver和被測模型,test driver在測試執(zhí)行期間與被測系統(tǒng)(SUT)進行交互,通過測試框架將測試用例定義的輸入信號激勵給到被測系統(tǒng)(SUT),再回采被測模型的輸出結(jié)果并對其進行評估。

代碼動態(tài)測試環(huán)境SiL:PC端+交叉編譯鏈將模型生成的代碼或手寫代碼編譯成能在目標(biāo)機上運行的代碼,在PC端進行驗證。
a.模型生成的代碼:TPT/FUSION + MATLAB/Simulink
用于對模型生成的代碼進行背靠背測試,使用TPT的FUSION DLL調(diào)用Simulink生成的代碼,對模型和模型生成的代碼進行相同的輸入,對比測試輸出結(jié)果。

b.手寫代碼:VectorCAST + 交叉編譯鏈
VectorCAST支持300+種交叉編譯鏈,它可以調(diào)用交叉編譯工具將源碼編譯成目標(biāo)機上的可執(zhí)行代碼,可以自動解析源代碼生成測試套件,測試人員能夠根據(jù)測試套件使用工具提供的測試用例生成方法或手動創(chuàng)建測試用例,然后測試套件和測試用例會被傳輸?shù)侥M器或者目標(biāo)板執(zhí)行測試,最終將執(zhí)行的結(jié)果返回到上位機界面以供查看。

嵌入式軟件測試
嵌入式軟件測試主要是驗證在目標(biāo)環(huán)境執(zhí)行時滿足軟件安全需求(SSR),以及不包含與功能安全相關(guān)的非預(yù)期功能和特性。測試范圍:軟件安全需求(SSR)。嵌入式軟件測試環(huán)境a.目標(biāo)板+調(diào)試器 + TPT:TPT用來集成調(diào)試器,作為上位機可以進行測試用例設(shè)計及測試執(zhí)行;調(diào)試器可直接訪問內(nèi)存,讀取或修改寄存器、變量數(shù)值,以達(dá)到對軟件內(nèi)部輸入輸出參數(shù)的修改及監(jiān)控,另外調(diào)試器還可以讀取MCU中資源占用情況及各個函數(shù)的運行時間。

在嵌入式軟件測試階段,使用“目標(biāo)板+調(diào)試器+TPT”的測試方案可以驗證:
①對接收到的外部故障反饋、輸入信息進行處理;
②與外部模塊的數(shù)據(jù)通訊校驗;
③可以驗證芯片的內(nèi)置安全機制,比例處理器、內(nèi)存、看門狗、程序流的監(jiān)控等;
④資源使用測試
軟硬件集成測試
軟硬件集成測試旨在證明所集成控制器的軟件和硬件正確的交互。測試范圍:技術(shù)安全需求(TSR)、軟硬件接口規(guī)范(HSI)。軟硬件集成測試環(huán)境
a.控制器 + CANoe + VT System
在軟硬件集成測試階段,“控制器 + CANoe + VT System”可以被用來測試技術(shù)安全需求(TSR)的相關(guān)要求,包括:技術(shù)安全需求的驗證、安全機制的驗證、內(nèi)部接口驗證和外部接口驗證等。
另外,該測試方案還可以用來補充嵌入式軟件階段的測試,使用“目標(biāo)板+調(diào)試器 + TPT”的測試方案一般不能完全覆蓋軟件安全需求的測試,比如一些涉及到電壓采集、外部通訊的收發(fā)和外部模塊對自身故障的檢測處理等,可以使用HiL的方案輔助驗證。
b.控制器 + TPT + CANoe + VT System + 調(diào)試器
該測試方案主要是在普通的HiL環(huán)境下集成了調(diào)試器,可以用來測試軟硬件接口(HSI)。軟硬件接口的測試主要是依據(jù)接口的描述和功能進行驗證,已確認(rèn)硬件可以被軟件正確的控制和使用。


總結(jié)
ISO 26262標(biāo)準(zhǔn)對零部件階段的測試從模型、代碼到最后的ECU都提出了要求,每個階段的測試重點各不相同,主要目的就是為了更快更好的查出軟件問題,保證質(zhì)量。北匯信息除了能夠提供上述的測試解決方案,還可以提供對應(yīng)的測試服務(wù)。
-
軟件測試
+關(guān)注
關(guān)注
2文章
255瀏覽量
20414 -
零部件
+關(guān)注
關(guān)注
0文章
476瀏覽量
15966 -
ISO26262
+關(guān)注
關(guān)注
3文章
44瀏覽量
14877
發(fā)布評論請先 登錄
ISO 26262功能安全落地全流程解析
汽車零部件功能安全ASIL等級確定方法(二)
北匯信息Test House測試服務(wù)助力中國零部件企業(yè)出海
汽車零部件的陽光模擬試驗研究:技術(shù)原理、測試標(biāo)準(zhǔn)與試驗特點
車輛零部件測試:為汽車“骨骼與神經(jīng)”注入可靠基因的精密工程
通訊零部件CNC加工:您的零部件加工真的確定夠“快”嗎
關(guān)于零部件清洗機工藝流程的詳細(xì)介紹
微電機關(guān)鍵零部件制造誤差對其質(zhì)量的影響權(quán)重分析
汽車零部件的MES系統(tǒng)解決方案:實現(xiàn)智能制造轉(zhuǎn)型的核心利器
如何給汽車零部件進行疲勞耐久測試?
尋跡智行亮相2025汽車零部件物流大會,共探智慧物流新思路
汽車零部件開發(fā)項目管理
汽車零部件檢測功能性測試技術(shù)
汽車零部件可靠性測試項目
符合ISO 26262的零部件級的軟件測試解決方案
評論