遵守 ISO 26262、EN 50128 和 IEC 61508 等復(fù)雜功能安全標(biāo)準(zhǔn)的要求非常復(fù)雜。只需考慮這需要的代碼覆蓋量,從應(yīng)用軟件到所有 C 編譯器中使用的 C90 和 C99 等庫中存在的各種條件。這意味著為您甚至沒有編寫的代碼提供代碼覆蓋!
這就是為什么 Solid Sands 開發(fā)了 SuperGuard,這是一個用于安全關(guān)鍵和安全相關(guān)系統(tǒng)的 C 庫安全認(rèn)證套件。基于 Solid Sands 的 SuperTest 庫測試和驗證套件,SuperGuard 被設(shè)計為 C90 和 C99 庫的以需求為中心的測試解決方案,該解決方案與 ISO C 規(guī)范緊密結(jié)合,沒有為每個 C 庫函數(shù)定義測試要求。SuperGuard 工具將此規(guī)范轉(zhuǎn)換為測試要求,這些要求說明了標(biāo)準(zhǔn) C 庫中條件函數(shù)的不同實現(xiàn),并調(diào)用了合規(guī)性所需的那些。
這些要求被記錄并鏈接到 SuperGuard 套件中的測試規(guī)范,然后進(jìn)一步鏈接到 SuperTest 工具中的 C 庫測試。SuperGuard 驗證和文檔鏈為必須向國際認(rèn)證機(jī)構(gòu)證明應(yīng)用軟件、工具鏈、方法和流程符合安全標(biāo)準(zhǔn)的開發(fā)人員提供完整的可追溯性。
該套件與 Windows 和 Linux 系統(tǒng)兼容,可與任何 C 或 C++ 編譯器(包括裸機(jī)目標(biāo))一起使用,支持配置插件,并且可以利用多處理功能來傳播驗證運行,以便更快地執(zhí)行測試。
SuperGuard C 庫安全認(rèn)證套件在行動
如前所述,SuperGuard 基于 SuperTest 套件,其中包含針對 ISO 標(biāo)準(zhǔn) C 庫規(guī)范的每個部分的庫測試。SuperGuard 測試需求源自這些測試,以生成可從原本含糊的定義中測試的案例。
例如,函數(shù)“strlen()”的參數(shù)必須指向一個有效的字符串。這是在 C 語言規(guī)范中定義的。它是 strlen() 函數(shù)的先決條件。如果應(yīng)用程序開發(fā)人員未能滿足此前提條件,則程序具有未定義的行為。這不好,但它是 C 的一個很好理解的屬性。strlen() 函數(shù)的實現(xiàn)不需要驗證前提條件是否為真——這在 C 中根本不可能。所以,這個 pre-條件是對程序員的要求。它不會導(dǎo)致測試 strlen() 的實現(xiàn)。
此過程會生成詳細(xì)的結(jié)構(gòu)化需求列表,然后將其轉(zhuǎn)換為可測試需求的測試規(guī)范。該套件還可以為單個需求生成多個測試規(guī)范。對于那些實現(xiàn)定義的元素,SuperGuard 為工程師提供了完全控制來添加他們自己的測試或調(diào)整生成的測試集。
然后可以將結(jié)構(gòu)代碼覆蓋工具應(yīng)用于庫實現(xiàn)。Solid Sands 使用這種方法為 MUSL-C 庫實現(xiàn)和高修改條件/決策覆蓋率實現(xiàn)了高達(dá) 100% 的代碼覆蓋率。
測試運行后,SuperGuard 報告工具可以將結(jié)果鏈接回套件中先前生成的需求,并提供滿足需求和失敗的實現(xiàn)的概述。
從 ISO 標(biāo)準(zhǔn) C 庫規(guī)范到生成測試需求、創(chuàng)建測試規(guī)范和執(zhí)行測試一直到報告的鏈接和文檔是符合當(dāng)今安全關(guān)鍵標(biāo)準(zhǔn)所需的驗證鏈。
SuperGuard C 庫安全認(rèn)證套件入門
總體而言,SuperGuard 測試套件允許開發(fā)人員將其軟件映射到安全關(guān)鍵系統(tǒng)的要求,從而簡化了安全認(rèn)證過程。完整的 SuperGuard C 庫安全認(rèn)證套件將于今年夏天作為獨立解決方案和 SuperTest 的附加組件提供。C++ 標(biāo)準(zhǔn)庫版本目前也在開發(fā)中。
審核編輯:郭婷
-
C++
+關(guān)注
關(guān)注
22文章
2108瀏覽量
73651 -
代碼
+關(guān)注
關(guān)注
30文章
4788瀏覽量
68611 -
編譯器
+關(guān)注
關(guān)注
1文章
1634瀏覽量
49130
發(fā)布評論請先 登錄
相關(guān)推薦
評論