装备电子系统的研发、测试、保障解决方案中心

嵌入式软件自动化单元集成测试工具Cantata
产品中心 嵌入式软件自动化单元集成测试工具Cantata
产品概述

德国QA Systems公司的Cantata是围绕C/C++语言的特点而设计的,能够满足开发者进行高效的单元和集成测试的需求。具有一整套包含单元和集成测试、独特的AutoTest测试、覆盖率分析、静态分析、测试需求追踪、代码变更分析、Cantata Makefile等功能。

功能特性

●灵活的测试框架

        灵活的测试框架(测试脚本和支持库)支持单元和可扩展的集成测试的任何测试样式组合。测试可以在GUI中直接编辑为C/C++代码,在嵌入式目标平台和主机平台上作为可执行文件运行。

●黑盒与白盒测试

        高度自动化测试用例的创建提供了黑盒测试的功效和精度,以及更有效的全面的白盒测试。通过用户选择的或预定义的参数化循环测试,针对大型数据集的组合效果计算器和CSV导入/导出,可以实现强大的黑盒测试。通过Cantata精确的白盒测试,直接从测试脚本自动访问封装代码,无需条件编译,无需控制静态、私有函数以及数据。

●健壮性测试

        鲁棒性(Robustness)测试能够很容易地使用Cantata规则集对基本数据类型值进行预定义,以循环测试用例的方式进行。自动检查所有可访问的全局数据是否在无意中发生更改。

●面向对象的测试

        Cantata面向对象测试由测试方法、模板或类的集群来实现。 它们具有自动化:

■通过并行继承层次重用测试用例

■测试类继承已继承类的结构

■具体实现抽象基类(ABCs)或纯虚方法(PVM)

 为了打破类依赖链并使C++隔离测试变得容易,Cantata自动发现并解析未被测试软件直接调用的未定义引用的依赖关系。

●AutoTest测试

       Cantata 自动测试生成完整的、可通过的单元测试脚本。测试用例向量可以在检查数据、参数和调用顺序时执行100%的代码覆盖。自动测试创建回归单元测试的安全网,以减少对昂贵系统测试的依赖,并自动填补代码覆盖的缺口。

             自版本9.0开始AutoTest功能已扩展为支持C++,对C++03和早期C++版本的以下内容也提供支持:

■C++具体与抽象基类
■重载和继承
■名字空间和类
■异常处理
■在给定代码中显式实例化的模板
■混合的C&C++代码库

     ●独特的调用控制

             Cantata自动生成测试控制,模拟(桩)和拦截(封装)被测软件的所有函数调用,提供:

           ■可选的自动检查参数和数据
           ■针对不同调用行为的多个实例
           ■每个测试用例中灵活的调用顺序验证
           ■接口错误检测和错误注入
           ■控制耦合测试


Cantata_Wrapping (2).jpg


       ●需求追踪

       所有安全相关标准需求都要求测试用例或测试计划的双向可追溯性。需求或测试计划集被导入到Cantata服务器,通过拖放界面分配关系,然后使用Cantata测试导出结果状态和代码覆盖信息。

       可以通过CSV、MicrosoftExcel®或需求交换格式(ReqIf)导入/导出。满足您的工作流程和特定需求管理工具版本(例如IBM®Rational®DOORs®、PTCIntegrity®、Polarion®REQUIREMENTS™)。Cantata服务器还有一个完整的REST API。


单元测试工具


      ●代码覆盖率

       Cantata代码覆盖提供了测试用例执行源代码(无论是否由Cantata测试驱动)的客观测量。自动化数据报告对所需代码覆盖率级别的集成检查,可以易于使用特定标准的Cantata覆盖规则集。


单元集成测试工具

     

       代码覆盖率使用以下指标衡量:

       ■入口点
       ■调用返回
       ■语句
       ■基本块
       ■判定(分支)
       ■条件
       ■MC / DC(屏蔽法和唯一原因法两种)
       ■循环
       ■关系运算符

       针点型(Pin-point)诊断可以过滤或聚合完整项目代码树的覆盖。通过测试用例、测试运行、度量类型和代码前后关系(继承、线程、状态、数据耦合等),下拉到单个代码结构,进入每行代码中。自动测试用例优化有助于从大型数据集中选择测试用例向量,并减少回归测试消耗。

       对于具有多个构建变体(Build Variant)的C/C++代码,Cantata使用预编译定义区分不同的构建变体,覆盖率视图显示相同源代码的多个构建变体的集合数据。还可以生成包含所有定义的集合覆盖率报告,适合作为源代码所有构建变体的证明证据

       对于内存较小的目标平台,Cantata的覆盖率延迟分析功能很有用,它把在目标上收集的覆盖数据传递回主机,然后再运行覆盖检查和报告。此项功能已经包含在SGS-TUV SAAR GmbH的工具认证中。这意味着使用此方法生成的.ctr报告现可用作认证证据。

      ●代码变更分析

       代码变更和测试依赖性分析可以发现哪些代码发生变化并影响现有的测试脚本、哪些测试脚本被代码修改所影响、代码修改对之前的测试覆盖产生什么影响。针对代码的变更,提供指导性的测试脚本更改建议和自动重构。


单元测试


●测试驱动开发(TDD)

       在TDD的开发方法中,单元测试是在源代码实现之前编写的。这种敏捷技术确保测试用例的开发重点是从需求而不是从源代码实现开始,因此可以帮助工程师编写出“更干净”的代码。

       Cantata具有支持TDD的新功能,轻松地为尚未编写的源代码生成测试。一旦在头文件中创建函数原型,TDD函数就可用于生成测试用例。使用Cantata for TDD改进了TDD中常用的简单黑盒测试,进行完整的白盒测试,因为Cantata可以直接调用被封装的代码内部,可以访问私有/静态数据和函数。


单元集成测试


       测试脚本是自动生成的,为头文件中定义的每个函数原型生成一个测试用例。以这些用例为基础创建更多的测试用例,避免手动将函数原型中包含的信息添加到测试用例中。头文件中声明的任何全局数据同样会被自动地进行设置和检查。 Cantata TDD生成了空源文件,因此函数体一旦有了实现,就可以简单地重建和运行测试以测试新代码。


cantata

       Cantata Trace功能可与Cantata TDD结合使用,以便根据需求改进测试用例的开发。测试用例在设计时就可追踪被导入的需求。测试用例、代码和需求之间的关联让所有工作更加清晰,并使以后的代码重构变得更加容易。

       为尚未编写实现的所有函数生成桩函数,这使得测试用例能够在代码完全实现之前运行。当函数有了实现,就可以使用Cantata的变更分析功能自动删除这些桩函数或将其转换为Cantata封装函数(以拦截并继续检查对这些对象/函数的调用)。一旦测试通过,源代码就可以重构并重新运行测试以确保它们仍然通过。

●持续测试

       Cantata在测试创建时自动生成Makefile文件,以批处理的方式对整个测试进行编译、链接、配置、执行和获取结果。它们可使用现有的Make文件,且易于与开源或商业的持续集成工具集成。

●诊断和报告

       Cantata在Eclipse®GUI中提供了强大的过滤功能,诊断测试和代码覆盖结果;灵活的用户可配置的XML、HTML格式报告和用于安全标准认证的ASCII文本。


单元测试工具


●团队报告

      团队报告是可选插件,使用客户端-服务器体系结构,Web界面和REST API,使分布式团队能够更有效地工作。


嵌入式软件单元测试工具


      兼容你的工作环境

      Cantata可以安装在Windows®和Linux®主机操作系统上,建立在Eclipse 2018-09发行版(Eclipse 4.9)之上,也可以作为一个Eclipse-Ready插件安装到从Juno(4.2)到Eclipse 2018-09(4.9)的环境中。

      对GNU GCC和g++编译器的支持已经扩展到Windows上的 8.1版本和Linux上的 8.3版本。

      完全支持所有C++ 11和14的语言特征。
      并且还集成了大量的嵌入式开发工具链:

      ■IDEs/RTOSs
      ■交叉编译器
      ■调试器
      ■构建/持续集成
      ■软件配置管理
      ■需求管理

      ●无限制嵌入式目标

       对于目标环境,内置向导提供无限制的部署和使用,无需任何许可限制。 Cantata部署包括与代码兼容的库,配置选项和二进制文件。这些都是经过测试和控制的,用于安全相关项目的认证使用。

      ●在目标上简单灵活的测试

         Cantata测试(平台无关测试脚本在C / C ++和平台特定部署)构建为C / C ++可执行文件,在目标平台上加载运行,就如同在以下位置运行自己的代码一样:

模拟器

仿真器

物理目标板

功能和代码覆盖测试结果直接返回给主机,得出诊断和报告。该过程使用Cantata完全自动创建文件、测试脚本、平台定制,方便灵活地从GUI或CLI完成目标测试。


c/c++单元测试


      用户代码由具有目标兼容库的便携式测试脚本驱动,并且构建为单个测试可执行文件,在多个主机或目标平台上运行。程序用于白盒访问和代码覆盖,因此无需为测试修改产品代码。

符合安全标准

      国际软件安全标准要求提供低级别(单元和集成)测试的证据,以获得设备软件的认证。

此外,大多数标准要求所使用的测试工具必须经过认证/合格或通过使用得到证明。Cantata已经获得了SGS-TÜV SAAR GmbH的独立认证。特定标准的Cantata工具认证包是免费提供的,包含所有需要的开箱即用的东西,帮助您获得设备软件认证的全面指导。当工具必须针对每个项目(比如DO-178B/C)单独进行合格审定的时候,针对标准的工具认证是不被接受的,此时我们也提供Cantata的工具合格审定。

c/c++单元集成测试




   更多详细内容请访问QA Systems中文网:http://qa-systems.cn


典型应用

航空航天

软件评测中心经常处于如下的测试环境:
             ●遗留代码多
             代码逻辑复杂
             设计或测试文档难以齐全
             测试人员并非开发单位,对被测代码的熟悉度不高
      在上述实际测试的困难条件下,还要满足软件A或B级覆盖率,难度无疑较大。Cantata自动生成测试用例的能力有效地提高了测试速度,缓解了测试人员的压力。

轨道交通

Cantata具备EN 50128 up to SIL 4 Class T2的工具认证资质。用户将Cantata成熟运用于开发与测试的工作流程,得益于工具的目标部署能力,完成在主机和目标机环境上的单元和集成测试,实现EN 50128 SIL4的认证。

汽车电子

Cantata具备ISO 26262 up to ASIL D的工具认证资质。用户将Cantata成熟运用于开发与测试的工作流程,得益于工具的目标部署能力,完成在主机和目标机环境上的单元和集成测试,同时实现了功能测试需求与测试用例的双向追踪,满足ISO 26262的要求。

医疗器械

      Cantata具备IEC 62304 up to SW safety Class C的工具认证资质。用户将Cantata运用于开发与测试的工作流程,实现自动化的持续的单元和集成测试。得益于工具的命令行接口,在持续集成/持续发布的框架中,在每次代码检入以验证新的或更改后的代码时,自动运行Cantata测试。


能源
      Cantata具备IEC 60880 for category A functions的工具认证资质。用户将Cantata成熟运用于开发与测试的工作流程,得益于工具的目标部署能力,完成在主机和目标机环境上的单元和集成测试,实现IEC 60880的认证。