VectorCAST代码测试工具
2018-01-07
VectorCAST™ 是主要用于C/C++/Ada程序的自动化测试软件,能够运行在Windows和Linux等多种开发环境。其主要功能包含自动化的单元测试、集成测试、覆盖率分析、回归测试、代码静态分
详细文档下载

、功能和性能指标

VectorCAST 是主要用于C/C++/Ada程序的自动化测试软件,能够运行在Windows和Linux等多种开发环境。其主要功能包含自动化的单元测试、集成测试、覆盖率分析、回归测试、代码静态分析和测试需求跟踪,其最大特点或相比于其它相关同类工具最大的优势,就在于最大程度的自动化更适用于嵌入式环境。以下予以分别阐述:

· 单元测试

VectorCAST 会根据被测代码和开发环境自动构建测试架构(Test Harness),在此基础上用户可以根据需要自动地生成或添加测试用例,并灵活地配置以实现不同的测试需求。自动生成的架构中包括:被测对象、测试驱动、桩函数和依赖条件。如下图1所示。

1. VectorCAST自动构建的测试架构

Ø 自动生成测试用例

VectorCAST 支持用户以多种形式的输入输出参数自动地生成测试用例,不需要用户编写测试代码,完全通过鼠标和输入窗口自动完成:

o 最大值、最小值和中间值

o 二进制、十进制、八进制和十六进制数值

o 输入参数范围

o 多个参数自动排列组合及配对

o 等价类划分

o 输入值列表

o 期望输出值列表

o 期望值容错误差范围

o 从外部数据源,如xlc, csv 等,中导入测试用例参数

2:测试用例输入输出值编辑窗口

VectorCAST 可以根据不同的覆盖率的算法分析测程序逻辑,自动地生成满足不同要求覆盖率要求的测试用例,以尽可能地达到覆盖率要求。对于未能覆盖的部分,用户可以根据工具提供的逻辑分析报告,如基本路基逻辑和MC/DC 等价类矩阵,用户按照分析结果提示的参数条件额外添加少量测试用例即可达到100%的覆盖率(参见下图3)。

o 基本路径覆盖 自动生成用例通常可以自动达到90%100%的覆盖率

o MC/DC覆盖 自动生成用例覆盖率视测代码实际情况而定

3:MC/DC等价类分析矩阵

Ø 桩函数

被测函数所调用的其它函数可以通过形式被执行,被调函数本身或桩函数。从全部调用实际函数到全部由桩函数替代,用户可以根据自己需要灵活设定需要打桩的对象。VectorCAST 可以支持添加不同输入输出的桩函数,简单的如int, float, double, char 等基本类型变量,也可以支持非常复杂的结构或对象变量。重要的是,这些桩函数基本都只需GUI 操作即可完成,一般不需要人工编写测试代码。

Ø 测试用例的执行

VectorCAST 对测试用例的执行方式采用真正的数据驱动方式(Data-Driven),所谓数据驱动,就是指测试用例数据只有在测试用例执行的时候才会被读取,而不会随测试代码、桩函数和测试驱动等等一起构建到最终的执行程序中。这样的好处是1)构建和执行速度快;2)当被测对象未变动的情况下,对测试用例的输入输出参数进行修改,测试用例不需要重新编译构建。

Ø 测试结果验证

测试用例执行完之后,VectorCAST 除了能对被测单元的实际return 值进行断言以外,包括简单类型和覆盖结构体,还可以对它依赖关系中的变量结果值或其成员变量进行验证,报告TrueFalse 断言结果。

Ø 复杂度分析

测试用例执行结束之后,VectorCAST 会统计相关程序的圈复杂度,并自动生成报告。如下图4所示。

4:VectorCAST 圈复杂度分析报告

Ø 测试报告

测试结束后,VectorCAST 自动生成详细的测试报告,包括所有测试用例、测试用例输入输出数据、断言结果、程序度量分析结果、不同覆盖率报告和MC/DC 等价类分析矩阵。

· 集成测试

VectorCAST 除了测试单个函数或单元以外,还可以用于模块集成测试,不同模块直接的接口调用是否正确。主要体现在:

o 通过集成不同单元的测试用例,任意组合其执行顺序和执行次数,以达到集成测试多个单元的目的

o 通过测试用例让多个单元实际调用其它单元,以验证相互调用接口的执行结果

o 直接根据头文件生成测试用例,测试源码未可见的库函数的接口及功能

· 对嵌入式环境的支持

测试用例可以在主机(Host),模拟器(Simulator)或目标板(Target)上执行,并收集测试结果在主机平台统一查看。对于嵌入式环境,可以通过目标板特有的通讯条件,如串口、以太网口、JTAG 或调试器等实现测试结果到主机的传输。

VectorCAST 支持近100C/C++嵌入式交叉编译器和60多种Ada嵌入式编译器。广泛适用于航空航天,国防军事相关的研发环境。

· 覆盖率分析

统计多种覆盖率。VectorCAST 的覆盖率分析功能可以统计多种测试覆盖率,包括语句覆盖(Statement)、分支覆盖(Branch)和MC/DC 覆盖。并通过在原代码中以颜色和数字标注、百分比率和综合详细的报告等不同方式显示。如下图5所示。

5:VectorCAST覆盖率统计报告

综合多种覆盖率数据。VectorCAST 可以集中显示多次测试、不同测试的测试覆盖率结果,包括单元测试、集成测试、系统测试、C/C++程序覆盖率和Ada覆盖率的覆盖率都可以综合地显示在一个报告中。这样即使分别执行测试用例,也可以获的统计叠加的覆盖率结果。在覆盖率要求严格的项目中尤为有用。

自动录制动画回放程序覆盖的路径。VectorCAST 可以记录测试用例执行过程中被测代码的执行路径,并支持用户播放、暂停和设定断点等方式进行查看。这样用户可以直观地了解被覆盖的代码是如何覆盖的,没有覆盖的代码为什么没有覆盖到,从而准确地添加测试用例,提高覆盖率。

· 回归测试

强大的回归测试功能,VectorCAST 能集中管理全部的C/C++Ada 程序的测试环境和测试驱动,通过GUI 或命令行的方式定期地运行,从而根据测试用例的执行情况及时地发现代码中“意外引入的错误”,保证测试过的代码和新增代码质量的持续稳定。

6:VectorCAST回归测试结果

具体地,VectorCAST 的回归测试功能有如下特点:

o 集中管理测试用例

o 提供整个工程每日的质量报告

o 支持敏捷开发

o 可以方便运行在不同版本的源码库上

o 支持命令行和GUI

o 支持多台机器分部运行

o 统计测试用例执行时间

o 提供可视化图表和趋势图

o 便于掌控整个项目的质量和进度

· 支持敏捷开发(TDD

VectorCAST 可以完美地支持敏捷开发流程(TDD)。TDD 要求先根据需求开发测试用例,然后再开发,让测试用例逐步通过,最终完成整个开发。VectorCAST 只需要项目头文件就可以生成测试环境,用户能根据需要增加测试用例,不需要额外编写测试代码。生成好当有代码被开发出来后,可以直接将被测程序更新进测试环境,构建并运行测试用例,支持编码完成所有测试用例全部通过。在整个开发过程中,还可以使用回归测试功能对所有测试用例持续地执行,确保每日的进度和质量。

· 静态代码分析

VectorCAST 集成了静态代码分析功能,可以在不执行代码的情况下,通过内建的编码规范对程序进行分析,如MISRA C, MISRA C 2004MISRA C++ 2008. 对每一个报告出来的错误,VectorCAST 都会显示详细的说明、严重度等级和详细的文档。以帮助用户方便地分析和修改测试结果。

· 测试需求跟踪

VectorCAST 的需求跟踪功能可以跟常用的需求管理系统集成,如DOORS, RequisiteProCSV数据库等。从需求管理系统中导入需求,然后将VectorCAST测试用例和测试结果与之关联,连同备注再导出到需求管理系统。从而确保每个需求都能被测试用例所覆盖,并管理每个需求所对应的测试用例的正确执行。这对产品的系统测试和最终验证是至关重要并且实用的,用户不用再手工地做这些验证和文档工作了。参见图7.

7: 在VectorCAST中集成需求管理系统

· 工具认证包(Certification Kits

Vector Software 公司提供用于航空航天DO-178B/DO-278,铁路系统EN50128,汽车电子ISO26262,工业控制IEC 61508和医疗器械IEC 62304等不同行业认证标准的验证包。其中对VectorCAST 的各个功能进行了详细的验证和说明,证明VectorCAST 满足标准对开发过程中使用的工具的要求,是能够用在有相关认证要求的项目的研发和测试工作中的。帮助产品或项目顺利地通过相关认证,获得行业认证证书。

、技术方案

VectorCAST 作为自动化的测试软件和解决方案,可以有机地集成到已有的开发流程中,也可以作为一个独立的质量解决方案。如下图8所示,将VectorCAST 作为嵌入式测试的质量中心,其不同产品模块可以用于各个方面的测试,包括:

o 单元测试

o 集成测试

o 覆盖分析

o 静态分析

o 回归测试

同时又可以集成和整合其它系统和测试,包括:

o 源码控制系统

o 需求管理系统

o 系统测试(部分)

从而形成一个整合而又灵活的测试和质量控制体系。从需求分析、到编码、单元测试、集成测试、回归测试及覆盖率,到需求跟踪和验证,VectorCAST 提供了贯穿软件研发的全生命周期管理的解决方案,真正从根本上保证研发的质量和效率,特别是对高安全和高可靠性要求及其严格的航空航天系统,VectorCAST 提供的这样的自动化测试更显得尤为重要且必不可少。

8:VectorCAST 整合的测试方案

VectorCAST 的实施和部署可以采取分步进行的方式,先对各个模块根据其需求紧迫程度和难易程度逐步予以熟悉和应用,如可以采取从静态分析-> 单元测试 -> 代码覆盖率分析 -> 回归测试 -> 需求管理和跟踪,到最后将其全部整合起来的方式。其中每个环节都需要严格的部署计划和实施质量考核标准,以确保整个部署过程有条不紊地完成。

系统应用起来后,VectorCAST 原厂技术人员还会配合用户对软件的使用情况予以定期的回访,协助解决出现的技术问题,并优化使用流程,保证软件在用户的研发中发挥长期有效的作用。

、系统组成

VectorCAST解决方案主要由以下几个模块组成:

VectorCAST/C++ & Ada, C/C++/Ada 程序的单元测试和集成测试环境的生成、编辑、构建、执行、覆盖率分析、复杂度分析和测试结果统计等等。

VectorCAST/Cover, 统计无论是单元测试、集成测试还是系统测试的覆盖率,并可以将不同次测试的结果综合到统一的报告中。

VectorCAST/MCDC, 统计MC/DC 覆盖率。

VectorCAST/Manage, 自动化的回归测试功能及项目的整体质量集中管理中心。

VectorCAST/Lint, 自动化代码静态分析模块。

VectorCAST/RSP, 用户宿主机和目标机的通讯,收集测试用例在目标机执行之后的测试结果和数据。嵌入式的测试必备模块。

VectorCAST/RGW, 用于集成需求管理系统,使用测试用例跟踪测试需求并导出数据。

VectorCAST Qualification Kits, 提供用于支持DO-178B, IEC61508, ISO26262EN50128等行业所需的验证材料套件。

四、国内外同类产品比较

相比于国内外的同类产品,VectorCAST有其显著的技术优势,主要体现在如下诸多方面:

1) 更广泛地支持各类嵌入式环境和交叉编译器;

2) 因为其插装算法的优化,使VectorCAST更容易应用在各类嵌入式项目中;

3) 自动化程度高,使用方便。能更智能地自动生成测试用例,对于需要自定义的测试用例,用户很少需要编写测试代码;

4) 覆盖率统计功能更强大和方便;

5) 对多种高安全行业的有专门的支持,包括航空航天/军工、轨道交通、汽车电子、船舶电子、医疗器械和工业控制等;

以下将VectorCASTTestbed做一个具体的对比:

No.

分项功能

VECTOR Software

LDRA

VectorCAST

Testbed

1

广泛支持各类嵌入式环境

2

自动化程度高使用方便

×

3

支持测试驱动开发(TDD)的开发模式

×

4

支持Windows平台

5

支持Linux和Solaris等平台

×

6

支持测试对库函数接口的测试

×

7

根据最大值最小值中间值自动生成测试用例

8

根据被测程序的基本路径自动生成测试用例

×

9

根据被测程序的MC/DC路径自动生成测试用例

×

10

提供程序基本路径分析结果

×

11

提供MC/DC条件分析结果

12

通过GUI窗口自定义测试用例