Cantata Hybrid是Cantata的一个子集,它使用非Cantata测试套件(即Google Test和Google Mock)作为输入运行测试,借由经过认证的单元测试工具,生成Cantata的测试结果证据连同代码覆盖率。
Cantata核心产品,包括Cantata Hybrid,已经获得SGS-TÜV GmbH的独立认证,适用于所有主要的软件功能安全标准的最高安全完整性级别。
Cantata和Google Test的混合体为Google Test提供了一个完全自动化的认证引擎。
Cantata Hybrid不要求用户学习Cantata或修改他们现有的Gtest套件或mock对象以及它们是如何构建和运行的。
经过认证的Cantata测试结果
对每个Gtest - 包括以ASCII和HTML格式实现的聚合代码覆盖率
Cantata Hybrid是如何工作的
Cantata Hybrid是在命令行中以批处理脚本运行的,它利用经过认证的核心组件Cantata编译器驱动和插装器(CPPCCD)来设置Cantata指令和参数,包括代码覆盖率,以从在GoogleTest套件中定义的输入来构建一个测试执行。
针对目标环境部署的Cantata库被与源代码和GoogleTest套件链接,当Hybrid测试运行时,它会并行执行GoogleTest套件中的所有GoogleTest和GoogleMock宏及其等效的Cantata测试框架指令,收集每个测试实现的Canata代码覆盖率。
Cantata Hybrid并行运行标准Google测试和等效的Cantata测试,为每个测试生成结果,以及所有测试套件的详细和聚合的代码覆盖率结果。覆盖率报告是使用Cantata实用程序(CPPGETCOV)以经过认证的格式生成的。
每个Gtest宏映射到等效的Cantata指令
测试运行在主机或目标平台
Cantata Hybrid下的Google测试可以在任何提供Cantata目标特定部署的目标平台上运行(模拟器、仿真器或物理目标板)。当在目标上运行测试时,功能和代码覆盖率测试结果将被定向回主机以生成报告。
被测源代码的副本会被使用Cantata测试指令和代码覆盖率进行插装,确保生产代码永远不会因测试而被修改。
为何为Google Test使用经过认证的引擎
安全标准要求使用认证工具
所有主要的安全相关标准都要求所有测试工具都应证明其适用于验证安全关键应用软件。这可以通过工具鉴定或使用预先认证的工具来实现,具体取决于标准。
Google Test和Google Mock是未经认证的开源xUnit风格工具。Google不在安全关键软件市场运营,因此不提供工具资格认证包或工具合格审定包。
大多数商业单元测试供应商,包括QA Systems,已经为其工具(如Cantata)获得了独立认证,或者在必要时支持用户对其工具进行资格认证(如DO-178C)。
GTest工具的合格审定比较昂贵
Google Test和Google Mock等开源工具可以由最终用户进行资格认证。然而,与此相关的成本可能非常昂贵和耗时,因为它涉及:
● 为使用的所有工具特征定义需求
● 安排测试证明所有特征在工具的操作环境中符合需求
● 为每个工具版本和工具使用环境维护资格认证数据
● 为独立的第三方组织支付费用,为你执行上述任务
出于上述原因,大多数安全关键软件的开发者不对GoogleTest和GoogleMock进行认证,而是采用一个已经得到认证的测试工具,如Cantata。
GTest工具合格审定替代方案
一种选择是使用预先认证或合格的单元测试工具(如Cantata)重写现有的GTest。然而,根据现有的GTest的数量,这可能是一个昂贵的测试迁移选项。
Cantata Hybrid是Google Test的自动化认证引擎,为GTest和GMock工具的昂贵工具认证提供了一种更具成本效益的替代方案。
Cantata Hybrid是经过认证的Cantata工具的一个子集,它提供了一种独特的方法来执行现有的谷歌测试,而无需在经过认证的Cantata工具中进行任何修改。它产生所有必要的认证测试和代码覆盖率结果,以符合安全标准。
经过认证的测试和代码覆盖率结果
作为Cantata的组成部分,Cantata Hybrid已经获得SGS-TÜV GmbH的独立认证,适用于所有主要的软件功能安全标准的最高安全完整性级别。
覆盖率指标:
● 入口点
● 调用返回
● 语句
● 基本块
● 判断(分支)
● 条件
● MC/DC
● 循环
● 关系运算符
主要优势
● 较GoogleTest工具合格审定价格便宜
Cantata Hybrid的价格远低于GoogleTest和GoogleMock为符合安全标准而进行认证的成本。
● 不需要迁移或修改Google Tests
Cantata Hybrid无改变地使用Google Test套件,所以团队能够维护他们现有的并开发新的Google测试。
● 不需要学习新的测试工具
使用Cantata Hybrid从命令行运行Google测试的方法很简单,经过认证的测试和代码覆盖率结果将自动生成。
● 不需要一个认证的代码覆盖率工具
gcov(GNU覆盖率工具)也是一个未经认证的代码覆盖率工具。Cantata Hybrid覆盖率经过认证,并根据MC/DC的所有标准指标检查100%的代码覆盖率。
● 使用标准的Cantata进行扩展
当现有的Google测试没有达到100%代码覆盖时,标准的Cantata(包括了AutoTest)能够弥补这些覆盖率缺陷,使用与Cantata Hybrid相同格式的报告。
● 多平台可用
■ Cantata Hybrid没有平台许可的限制,支持:
■ Windows或Linux平台的GoogleTest v1.13版本以上
■ g++版本直到v13.2和Visual Studio直到2019
■ Cantata目标部署所支持的任何嵌入式目标环境(交叉编译的仿真器、模拟器、物理硬件)
■ Visual Studio Code(Cantata CTR VSCode扩展)