
VectorCAST是Vector旗下一款权威的用于嵌入式C/C++代码的动态白盒测试工具集,可实现高度自动化的动态单元测试和集成测试(VectorCAST/C++)和部分系统测试(VectorCAST/QA)。VectorCAST遵循ASPICE、功能安全ISO26262等行业标准,适用于对自身有高安全性和高可靠性要求的嵌入式系统,可以降低开发风险,提高代码质量。VectorCAST最大的特点同时也是相比于其它同类工具最大的优势,就在于最大程序的自动化和更适合用于嵌入式环境。
北汇信息作为Vector的合作伙伴,为中国客户提供专业的动态代码测试解决方案。
VectorCAST基于V模型开发,在功能上可以覆盖软件测试的各个环节:需求分析、单元测试、集成测试、覆盖率分析、回归测试、部分系统测试。针对客户不同的代码测试需求,VectorCAST为客户提供了对应的解决方案,其中包括VectorCAST/C++和VectorCAST/QA工具;VectorCAST/C++用于单元/集成测试,VectorCAST/QA用于系统测试。

图1 V模型
VectorCAST/C++
VectorCAST/C++是一套高度自动化的软件测试解决方案,支持在Windows和Linux系统中稳定运行,用于C\C++代码的动态单元测试和集成测试,能显著降低测试过程中所必需的时间、工作量以及成本。

图2 VectorCAST/C++ 原理
VectorCAST/C++特性:
1)需求管理
VectorCAST支持集成多种在线需求管理工具,如Codebeamer/Doors/IBM/Polarion/等,同时支持本地CSV格式需求管理文档导入;支持基于需求创建测试用例并与需求链接,实现测试用例和测试需求的双向追溯。

图3 需求管理集成
2)测试环境创建
VectorCAST支持自动生成测试环境套件并预先构建测试套件;支持集成实际编译链进行测试,包括业内主流的编译链以及目标芯片,如Greenhills,Keil,Hightec,Tasking,Windriver等300多种主流交叉编译环境,并提供对应的编译配置包(VectorCAST/RSP)。通过结合VectorCAST/C++与VectorCAST/RSP配置包,既可以实现通过UDE,Trace32等调试器联调后在嵌入式目标板上进行实时测试,也可以完美脱离硬件,在仿真模拟器上直接进行实时应用测试。测试用例在主机设计,在嵌入式目标环境运行,实现嵌入式目标环境的实时测试。
VectorCAST/C++支持部分编译器:

图4 编译器支持(部分)
3)测试用例创建
VectorCAST/C++既可以通过图形化界面编写测试用例,也支持用户以多种方式自动生成测试用例,如基于语句/分支/MCDC覆盖度方式自动生成测试用例、基于等价类和边界值方式自动生成测试用例、基于ATG方式自动生成测试用例,还可以基于分类树生成测试用例,基于CSV数据列表批量生成测试用例。且每条测试用例之间都互相独立,不具备耦合。

图5 测试用例创建
4)自动插桩处理
VectorCAST/C++插桩算法强大,支持基于被测代码自动生成桩函数,无需手动编写或选择测试桩代码,同时支持对桩函数进行编辑以满足用户需求;支持手动插桩,包括对标准库函数以及自定义函数等进行手动插桩。

图6 自动插桩/手动插减桩
5)覆盖度统计分析
VectorCAST/C++提供多种覆盖度指标,包括语句(statement)覆盖、分支(Branch)覆盖、MC/DC覆盖、Function(函数)覆盖、Function Call(函数调用)覆盖以及相关覆盖度的组合覆盖,以满足不同标准对覆盖度的不同要求,针对解析后的被测代码,可通过不同颜色标注当前代码的覆盖状态。VectorCAST/C++也支持CBA手动覆盖功能,用于满足无法通过测试用例覆盖的代码覆盖度要求。

图7 VectorCAST覆盖率统计
6)参数类型解析
VectorCAST/C++支持解析C/C++代码中各类基础数据类型及复杂数据类型,同时完美支持C++11,C++14以及C++17的特性,并且针对大部分C++的特性,可实现图形化界面操作。

图8 参数类型解析
7)回归测试
VectorCAST/C++具有强大的回归测试的功能,可通过GUI->Incremental或命令行的方式执行测试,以增量的方式重构测试环境,检查代码变更,只执行被影响到的测试用例,节约项目测试时间,降低项目版本维护的成本。

图9 回归测试
8)支持Probe Point功能,在测试代码中插入代码以实现故障注入,局部变量打印,断点调试功能

图10 Probe Point功能
9)测试报告
VectorCAST/C++支持多种输出格式、多种测试类型的中英文报告。
10)CI/CT集成
VectorCAST/C++支持与Jenkins等CI工具集成,提供Jenkins官方插件,可实现一键集成,无需编写集成脚本,也支持通过Jenkins Pipeline并行执行多个测试环境,节省测试运行时间,还可以通过命令行进行集成,通过脚本来执行测试用例。

图11 jenkins集成
11)VectorCAST/C++支持超轻量化工程文件管理,即仅需几十或上百Kb的配置文件,便可实现超大型项目的快速完整迁移以及分布式团队协作功能。
VectorCAST/QA
VectorCAST/QA主要用于嵌入式开发的自动化系统测试,为白盒系统测试提供了一个集成的工作流程。VectorCAST/QA 通过集成用户软件编译/构建环境和已有的测试基础架构,进而获取软件在系统测试中的关键指标,如代码复杂度、代码变更频率、测试用例状态和代码覆盖度等。
VectorCAST/QA的特性:
1)在系统测试期间自动捕获和维护代码覆盖率数据,帮助用户快速识别未被测试的部分,并确定提高测试完整性所需的资源;
2)基于变更的测试,自动计算提供完整测试更改所需的最小测试集,或者是甄别出因代码变更而受影响的测试用例并重新执行;
3)VectorCAST/QA本身不能生成测试用例,但是VectorCAST/QA可以沿用客户已有的系统测试的框架和测试用例;
4)自动对客户的源码进行插桩,添加代码覆盖率接口;添加覆盖率接口,会使得源代码有所膨胀,插桩越细致,代码膨胀率越大,所以VectorCAST/QA对系统有一定的要求;
5)与Jenkins集成,在Jenkins中持续不断执行测试,实现持续集成开发/测试。

图12 VectorCAST/QA
资质认证
VectorCAST通过了南德TÜV认证,遵循相关的行业认证标准,比如汽车行业内熟知的ASPICE、ISO26262(ASIL D)、IEC 61508、EN50126等等,而且VectorCAST也是目前市面上“唯一”一款针对大/小版本进行认证,并免费提供给用户《Safety Manual》协助其认证的代码测试工具集。

VectorCAST部分客户
