Cantata是一款用于C/C++单元和集成测试的动态测试工具。它灵活的测试自动化功能使开发人员遵守符合软件安全标准的测试需求并实现行业最佳实践。
Cantata测试自动化使您能够选择最有效的动态测试技术组合,以适应您的C和C++代码实现风格。
Cantata测试可以在任何代码编辑器中直接扩展,可灵活扩展到C/C++编程语言中任何可能的地方。
Cantata自动化加速下述活动:
需求驱动测试
健壮性测试
结构化测试
黑盒测试
白盒测试
过程和状态机测试
面向对象测试
隔离单元测试
集成测试
没有任何一款工具能够支持所有的测试类型,Cantata也不例外。Cantata致力于C和C++嵌入式系统标准合规的动态测试的单元测试和集成测试需求。
使用灵活的Cantata工具集,您可以选择自动化测试功能组合以正确的驱动单元测试、集成测试,也可以增强更高级别的测试。
需求驱动测试
Cantata支持需求驱动测试,以验证软件是否做了它应该做的(源自低级需求、规格书或模型)。
Cantata测试指令通过测试脚本调用一个可设置输入(参数和数据)的函数来驱动被测代码,并自动检查实际行为和预期行为。
导入需求到Cantata IDE使得定义测试用例以及通过测试脚本或用例追溯需求变得更加容易。
(参考Cantata需求追踪)。
Cantata支持动态鲁棒性测试,以验证代码是否使用了所有软件安全标准推荐的技术来处理异常,比如:
系统初始化异常
无效的输入和数据
失效模式处理
边界值
算术边界条件
时间约束
内存分配
错误注入
健壮性测试很容易在循环的测试用例中完成,提供基本数据类型的预定义数据值,构成Cantata健壮性测试集。自动检查所有可访问的全局数据是否发生了意外的更改。Cantata测试脚本和封装功能容易创建异常的前置条件和在测试中注入错误。(参考Cantata调用控制)。
结构化测试能够识别未被需求驱动的测试和健壮性测试覆盖的源代码,并解决这些未覆盖的测试。
Cantata代码覆盖(在Cantata测试内部或外部使用)在特定或所有上下文中指出任何未执行的代码元素。可以通过添加新的基于需求的测试用例和写明为什么在特定的上下文中未执行代码的说明文档或移除冗余代码的方式来解决未覆盖的代码。
Cantata AutoTest能对C代码自动生成完整的测试脚本或附加测试用例来达到100%的结构覆盖率(参考Cantata代码覆盖率和Cantata AutoTest)。
黑盒测试仅通过其公共接口验证代码,检查正确行为不需要知道代码内部实现。
Cantata通过用户选择或预定义的参数化循环测试来实现黑盒测试。因此,可以使用大量的输入参数和数据值来调用同一函数。预期的调用序列和预期的返回值根据输入数据集而变化,同时在整个测试运行期间检查全局数据的输出。
Cantata表格驱动测试数据集可以通过CSV导入和导出。GUI组合效果计算器可以辅助选择测试向量。Cantata覆盖率自动优化可精确识别达到覆盖率目标所需的测试用例向量。
白盒测试通过允许访问代码内部(私有/静态数据和函数)来验证代码。
Cantata允许测试人员只在测试期间使用全自动可访问的插装直接访问这些,而不会通过条件编译污染项目代码。测试脚本可以直接调用私有或静态函数,并可以对声明在文件或局部函数中的私有或静态参数和数据进行设置或检查。
Cantata白盒测试可以设置触发条件,而且可以比黑盒测试更有效的直接检查值或内部行为。
Cantata调用控制也可用于编译范围内的函数调用,以进行白盒测试。
Cantata过程测试通过合适的参数或数据输入集来验证函数的过程逻辑或算法,并检查实际的调用序列、数据读取或写入和返回值是否与预期一致。Cantata通过解析源代码来生成测试脚本,并在函数参数和可访问的数据上设置必要的测试钩子,以便于用户进行设置和检查。
通过设置触发条件和创建事件来测试状态机,以验证状态转换是否正确。Cantata的白盒测试直接访问存储了状态机状态的局部函数静态数据,这使得状态机测试特别有效。
Cantata用户自定义的上下文代码覆盖率也可以用来验证代码是否在不同状态下进行了测试。(参考Cantata代码覆盖率)
Cantata OO(面向对象)测试以类的形式来测试方法、模板或聚类。它具有如下特征:
通过平行的继承体系来重用测试用例
测试类继承被继承类的结构
抽象基类(ABCs)或纯虚方法(PVMs)的具体实现
为了打破类依赖链并使C++隔离测试更为容易,Cantata自动发现并解决对未定义引用的依赖,这些引用没有直接被被测软件调用。(参考Cantata调用控制)
Cantata没有规定哪些代码项作为一个单元来测试,也没有规定如何将每个单元与系统其它部分隔离开(或解耦)。通过自动配置生成要模拟的桩和隔离,以及通过封装来拦截被测单元外部和内部的调用,提供了完全的灵活性。可以在单元编译时使Cantata作为独立的可执行文件来验证内部处理的正确性和内部接口的正确性,而不需要系统的其它部分。
Cantata为被测源文件中的每一个函数或方法生成一个初始的可执行的测试用例。Cantata单元测试调用函数,初始化所有输入/输出参数、可访问数据和预期调用序列。测试用例彼此之间是独立的,测试用例所运行的平台之间也是独立,以避免依赖性。
Cantata的集成测试可看作是一个大型的单元测试,但它将多个单元的集群构建成单个可执行文件。这样的测试可以验证单元的相同内部行为,但更重要的是验证单元之间如下的交互:
单元内的存储分配
数据读/写顺序
单元之间的调用顺序
Cantata集成测试提供了选择测试脚本驱动入口点的能力,包括内部和外部模拟(打桩和隔离)或拦截(封装),灵活使用自顶向下、自底向上或全部整体的集成测试风格。Cantata封装也可用于非Cantata驱动的测试,以进一步增加对集成测试的控制。
可将上述测试技术进行各种组合应用以遵循安全软件标准需求和工业最佳实践。有关测试用例设计和特定标准需求的详细信息,可以参考我们的扩展资料。