概要:
在遵循ISO26262的流程進行基於模型的開發(ModelBasedDevelopment)時,ISO26262的9.4.3章和10.4.3章推薦執行等效性測試(Back-to-backtesting)來比較模型(Simulink/TargetLink模型)和由模型自動生成的實現(C代碼)。等效性測試的目標是在給予同樣的輸入的情況下,判斷實現(C代碼)和模型是否有同樣的輸出。
正文:
為什麼要做等效性測試:
1》模型和C代碼為滿足需求的不同的軟體表現形式,是否一致需要做等效性測試。
2》代碼生成器(例:TargetLink)為了生成高效的C代碼,對C代碼進行最佳化,需要對最佳化結果進行確認。
3》定點小數點代碼時,需要比較定點小數點C代碼和模型(浮動小數點計算)的輸出誤差。
4》對於C語言一些特有的缺陷進行測試,比如除數為零。
5》滿足ISO26262的要求。
等效性測試的基本要求:
1》模型本身必須是已經通過基於需求的測試,即模型本身是正確的,其輸出可作為參考值用於對實現(C代碼)的比較。
2》對於所有的輸入測試用例,實現(C代碼)和模型的輸出差值應該在允許誤差範圍內。
3》測試用例需要滿足實現(C代碼)高水平的覆蓋率(ISO26262推薦覆蓋率量化種類:MC/DC)。
等效性測試的難點:
1》如何高水平的驗證模型是滿足需求的,因為只有模型滿足需求,模型才是可用於代碼生成和隨後的等效性測試。
2》如何製作測試用例,來達到ISO26262所要求的MC/DC級別100%的覆蓋率。
3》測試環境該如何搭建,對各個測試用例輸出結果的比較用人工來做將非常耗時,並容易出錯。
目前的解決方案:
歐美和日本主要汽車和飛機控制器開發現場所使用的解決方案是使用專業測試工具來輔助測試完成測試目標。
基於需求的測試方法簡述:
一般使用BTCEmbeddedPlatform的EmbeddedSpecifier和EmbeddedValidator功能來自動測試並證明模型(例:TargetLink)是否滿足需求。該工具使用簡潔易懂的形式語言技術(ModelChecking),可對模型通過窮舉法進行全自動驗證。如果滿足需求,接下來就是代碼自動生成和等效性測試。
以下為基於需求測試示意圖:
方法一:使用窮舉法對模型進行靜態解析看是否滿足需求,不滿足需求時自動生成調試模型。
缺點是對複雜模型解析能力受限,這時需要用方法二即使用仿真進行自動測試
方法二:使用仿真進行自動測試|
把需求形式化後,能自動生成基於需求的測試用例和需求觀察器,需求觀察器可自動並聯到測試對象中,完成自動測試並輸出報告。
等效性測試簡述:
使用EmbeddedTester自動生成滿足C代碼MC/DC級別100%覆蓋率的測試用例,然後自動進行等效性比較(Back-to-back)並生成測試報告。由於EmbeddedTester可以設定比較誤差值,因此測試擔當者的工作可以僅看測試報告就可以判定該實現(C代碼)是否和模型等效。
以下為Back-to-back的示意圖:
第一步:逆向解析C代碼,自動生成滿足MC/DC級別100%覆蓋率的測試用例
第二步:使用自動測試用例,自動進行Back-to-back測試