logo
首页>产品中心>CANTATA>独特的调用控制-封装

测试被测软件(SUT)发生函数调用时的情况,对所有级别的动态测试它都是组成部分。Cantata调用接口控制为这些接口自动生成必要的测试框架,易于:
模拟SUT和调用对象(不管是否包含在构建中)之间的调用接口
拦截SUT和构建中包含的调用对象之间的调用接口
当函数调用时,设置和检查数据(访问被测软件的数据)
设置和检查返回给SUT的返回值或抛出的异常
向SUT注入错误
检查调用序列
控制每个函数调用的实例——这样每次调用时可设置或检查不同的行为。

什么是Cantata的调用控制?

Cantata为被测软件的所有函数调用自动生成调用接口控制,例如对同一个文件或不同文件中的其它函数、第三方对象代码、操作系统/编译库或目标固件/硬件。用户可以完全控制为每个函数的每个调用生成适当的Cantata调用控制:
        打桩,模拟调用构建中未包含的对象
        隔离,模拟指定调用构建中包含的对象
        封装,模拟或拦截指定调用构建中包含的对象
        依赖性求解器,自动移除未定义的链接引用
每种类型的Cantata调用控制都用相应的C/C++编写,在执行过程中提供一个测试控制点来设置和验证可访问SUT的数据(例如全局数据或硬件寄存器)和参数/返回值。因为每种控制类型可以有多个实例,因此在每个测试用例场景中每次调用时可以设置或验证不同的行为和调用序列。
将C++从代码库的其余部分隔离出来做测试,那么在构建测试可执行文件时,会导致一长串链接时的未定义行为。Cantata的依赖性求解器确定缺少的引用,并自动添加所需的代码来解决所有未定义的引用(方法或变量)。
Cantata丰富的调用控制使得测试者可以根据需要灵活的选择模拟或拦截来驱动和验证代码。

将C++从代码库的其余部分隔离出来做测试,那么在构建测试可执行文件时,会导致一长串链接时的未定义行为。Cantata的依赖性求解器确定缺少的引用,并自动添加所需的代码来解决所有未定义的引用(方法或变量)。
Cantata丰富的调用控制使得测试者可以根据需要灵活的选择模拟或拦截来驱动和验证代码。


什么是Cantata 的封装?

封装是一种独特的自动访问手段,可拦截或模拟函数调用。封装远超过了传统模拟(例如打桩、模拟、 仿真等),它为对象集成到一起时的接口测试提供了更多的灵活性。
自动生成的封装在调用前(BEFORE 封装)、调用后(AFTER封装)拦截调用或以模拟(REPLACE封装)的方式替换原始调用。
在使用Cantata测试脚本的地方将封装的BEFORE、 AFTER 和 REPLACE 字段写入到测试脚本中。封装也可以在Cantata测试脚本外使用,以提供其它测试驱动的调用接口控制。

封装对我有什么帮助?

在单元测试中拦截和模拟调用

单元测试在不需要系统的其它部分时验证一个或多个函数。传统的调用控制(例如打桩、模拟、 仿真)仅模拟没有包含在被测软件的编译单元中的被调用对象。
Cantata封装能够控制编译边界内外的特定函数调用。函数的特定调用可以用以下方式来控制:
             模拟封装,以替换调用
             拦截封装,在调用前后设置/检查接口
每个封装都允许在调用时设置/检查所有可访问数据
封装的独特性在于自动控制编译范围内的函数(比如,在同一文件或类中调用了其它函数的函数),也为测试人员提供了更大的选择去定义在隔离的或集群的单元测试中包含哪些测试内容。

在集成和系统测试时拦截和模拟调用

集成和系统测试验证了多个单元之间的实际交互,因此集成的单元越多,使用模拟有效替换的单元就变得越来越少。Cantata在集成和系统测试时的封装保留了单元测试时封装的所有优势,并且它在测试实际接口时使模拟或拦截指定调用变得更有用。
Cantata的封装拦截适用于任何C/C++函数调用,这些调用可来自于以下任何被测软件中
    构建中的其它软件部件
    外部软件(包括第三方的库或目标代码)
    操作系统或标准库函数
    固件或硬件
Cantata的封装拦截允许测试人员检查实际的接口行为,而不是基于模拟中的假设使用测试场景。拦截调用提供了强大的错误注入能力,并可以验证实际交互的实际行为(例如操作系统、第三方代码、固件和硬件的故障),这些都是不可能的或者太昂贵的测试。

封装是如何工作的?

Cantata的封装使用访问性插装(通过图形界面或命令行)在源代码的副本上拦截来自被测软件(SUT)的函数调用。
任何C/C++函数的调用都可以封装(例如其它函数、第三方对象、数据库等)。封装具有与被替换的被调用对象相同的函数原型,但可测试性插装允许在测试构建中包含被调用对象,而不会引起链接错误。
BEFORE、REPLACE和AFTER封装代码段是可以编程的C/C++函数,然后调用:另外的封装代码段、被调用对象,或者返回给SUT。每段封装代码包含Cantata指令记录调用顺序、修改或检查参数/异常以及所有可被SUT或被调用对象访问的数据和返回值。



编辑Cantata调用控制

Cantata自动生成每个封装(包含BEFORE、 AFTER和 REPLACE  节段)到测试脚本中,并使用缺省的BEFORE-AFTER配对实例。这意味着被调用对象在不用强迫测试人员指定返回值的情况下进行封装。
可以添加其它封装实例(不管是Before-After还是Before-Replace)来检查传递给被调用对象和由被调用对象返回的所有参数值,Cantata会自动为所有通过接口传递的参数提供实际值和预期值的检查。
对对象的函数调用,可以封装所有的调用也可以只选择调用函数。
封装使用C/C++在Cantata测试脚本中实现,可以在Cantata调用接口控制GUI中编辑,也可以直接使用C/C++编辑器编辑。

控制测试用例中的调用

Cantata调用接口控制可以使用多个打桩、封装或隔离实例,可为不同场景下的调用提供不同的行为。使用Cantata测试脚本中的这些控制调用和实例来设置每个测试用例所期望的调用序列和控制行为。
预期的调用序列可以非常灵活(线性调用、固定循环次数调用和并行调用等),同时可以设置指定的顺序或设置与每次控制调用相匹配的次数。每个测试用例期望的调用顺序可以在Cantata GUI(测试脚本管理器)中编辑或直接在任何C/C++编辑器中编辑。


返回CANTATA
本网站使用cookies来帮助改善您的体验。
请点击链接以后了解有关cookies的更多信息。了解更多
我明白
×
×