Cantata Hybrid是世界上第一個適合Google Test的認證引擎,屬于Cantata的一個產品子集,它允許開發人員運行現有的GoogleTest套件,從經過認證的單元測試工具生成測試結果證據和代碼覆蓋率,從而符合國際功能安全認證的標準,Cantata Hybrid彌合了開源測試和安全關鍵軟件開發之間的鴻溝,使您能夠實現現有Google Test的功能安全標準合規,是一個經濟有效的替代方案。
Cantata Hybrid是Google Test的認證引擎:獨特的安全標準合規Google Test套件
從現有的Google Test生成經過認證的Cantata測試結果,Cantata Hybrid通過使用非Cantata測試套件(如GoogleTest?和GoogleMock?)作為輸入源來執行測試。該功能允許生成Cantata測試結果證據,與從認證的單元測試工具獲得的代碼覆蓋率數據無縫結合,以符合所有主要的安全關鍵標準。Cantata Hybrid彌合了開源測試和安全關鍵軟件開發之間的鴻溝,使您能夠實現現有Google Test的功能安全標準合規。
Cantata Hybrid的主要特點:
- 通過ISO 26262, DO-178C/DO-330, IEC 61508等安全標準認證
- 不需要重寫測試或學習新的工具
- 測試在主機/目標上運行,覆蓋范圍高達MC/DC級別
- 經濟高效的替代昂貴工具認證方案
- 與其他 QA-Systems 認證的靜態和動態測試工具集成
從現有的Google Test中生成經過認證的Cantata測試結果
Cantata Hybrid是Cantata?的一個專門子集,它允許以非Cantata測試套件(即GoogleTest?和GoogleMock?)作為輸入來運行測試,從而生成Cantata測試結果證據,以及經過認證的單元測試工具的代碼覆蓋率。
Cantata核心產品,包括Cantata Hybrid,已通過SGS-TüV GmbH獨立認證,適用于所有主要軟件功能安全標準的最高安全完整性等級的使用。
Cantata與GoogleTest的這種混合體為Google Test提供了一個全自動的認證引擎。
Cantata Hybrid不需要用戶學習Cantata,也不需要修改他們現有的GTest套件或模擬對象,以及它們的構建和運行方式。
Cantata Hybrid是如何工作的
Cantata Hybrid在命令行中被用于腳本化的批量執行。它利用經過認證的核心組件 Cantata 編譯器驅動程序和插樁器(CPPCCD)來設置 Cantata 指令和選項,包括代碼覆蓋率,以便從 GoogleTest 套件中定義的輸入構建測試可執行文件。
針對目標環境的Cantata庫的部署與源代碼和GooqleTest套件相鏈接。當這個混合測試可執行文件運行時,它執行GooqleTest套件中的所有GooqleTest和GooqleMock宏,并與它們等效的Cantata測試框架指令并行,收集每個測試實現的Cantata代碼覆蓋率。
Cantata Hybrid同時運行標準的Google Test和等效的Cantata測試,為每個測試生成結果,同時提供所有測試套件詳細和匯總的代碼覆蓋率結果。覆蓋率報告是使用Cantata實用程序(CPPGETCOV)以經過認證的格式生成的。

在主機或目標平臺上運行測試
在Cantata Hybrid下的Google Test可以在任何目標平臺上運行,其中已經為Cantata提供了針對特定目標的部署(模擬器、模擬器或物理目標板)。當測試exe在目標上運行時,功能和代碼覆蓋率測試結果被定向回主機以生成測試報告。
在測試中,源代碼的副本將使用Cantata測試指令和代碼覆蓋率,以確保生產代碼永遠不會因為測試而修改。

為什么要為Google Test使用認證引擎?
?安全標準要求使用經過認證的工具
所有主要的安全相關標準都要求所有的測試工具都被證明適合于驗證安全關鍵的應用軟件。這可以通過工具鑒定或使用預先認證的工具來實現,具體取決于標準。
GoogleTest和GoogleMock是未經認證的開源xUnit風格工具。 Google?不在安全關鍵軟件市場運營,因此不提供工具資格套件或工具認證套件。 大多數商業單元測試供應商,包括QA Systems已經為他們的工具獲得了獨立的認證(例如Cantata),或者他們在需要的時候支持用戶對他們的工具進行認證(例如DO-178C)
?GTest工具鑒定昂貴
像GoogleTest和GoogleMock這樣的開源工具可以由最終用戶去認證。然而,與這種做法相關的成本可能非常昂貴和耗時,因為它涉及:
- 定義所使用的所有工具特性的需求
- 進行測試,以證明所有功能符合工具操作環境的要求
- 維護每個工具版本和工具使用環境的資質數據
- 支付獨立的第三方機構為您執行上述任務
由于這些原因,大多數安全關鍵軟件的開發人員不去對GoogleTest和GoogleMock做認證,而是選擇像CANTATA這樣經過認證的測試工具。
?GTest 工具資質替代方案
一種選擇是使用預認證或經過認證的單元測試工具(例如CANTATA)重寫現有的 GTests。然而,根據現有的 GTests 數量,這可能是一種昂貴的測試遷移選項。
Cantata Hybrid充當了 Google Tests的自動認證引擎,為GTest和GMock工具的昂貴工具資格提供了一種更具成本效益的替代方案。
Cantata Hybrid是認證的Cantata工具的一個專門子集,它提供了一種獨特的方法來執行現有的Google Tests,而無需在認證的Cantata工具中進行任何修改。它產生所有必要的認證測試和代碼覆蓋結果,以符合安全標準。
Cantata Hybrid主要優勢
- 比GoogleTest工具認證便宜:Cantata Hybrid的價格明顯低于符合安全標準的GoogleTest和GoogleMock認證的成本。請參閱最后一頁以了解許可證的詳細信息。
- 無需遷移或修改Google Tests:Cantata Hybrid使用不變的Google Test套件,因此團隊可以維護現有的Google Test并開發新的Google Test。
- 無需學習新的測試工具:使用Cantata Hybrid從CLI運行Google Test非常簡單。經過認證的測試和代碼覆蓋率結果會自動生成。
- 不需要經過認證的代碼覆蓋工具:gcov (GNU覆蓋工具)也不是經過認證的代碼覆蓋工具。Cantata Hybrid覆蓋率經過認證,并根據所有標準指標檢查100%的代碼覆蓋率,直至MC/DC。
- 使用標準Cantata進行擴展:當現有的Google Test沒有達到100%的代碼覆蓋率時,標準Cantata(包括AutoTest)可以用與Cantata Hybrid相同的格式報告來填補這些覆蓋率缺口。
- 可用于多個平臺,Cantata Hybrid沒有平臺許可限制,并支持以下內容:
- Windows或Linux上的GoogleTest v1.13以上版本;
- g++ 支持到v13.2和Visual Studio支持到2019版本;
- 任何可用于CANTATA目標部署的嵌入式目標環境(為模擬器、仿真器、物理硬件交叉編譯);
- Visual Studio代碼與CANTATA CTR VSCode擴展。
經過認證的測試和代碼覆蓋率結果
Cantata Hybrid作為Cantata的一部分,已獲得SGS TüV的獨立認證,適用于所有主要功能安全標準的最高安全完整性級別。

覆蓋率指標:
>入口點(?Entry Points)
>調用返回(Call Returns)
>語句(Statements)
>基本塊(Basic Blocks)
>決策(分支)(Decisions (Branches))
>條件(Conditions)
>MC/DC
>循環(Loops)
>關系運算符(Relational Operators)