C++TEST自动生成报表内容梗概
一、代码标准分析报告
说明:代码标准分析主要应用项目组选择的C++TEST内置的代码防错规则或者根据组织、项目的需要自定义规则对项目文件进行静态代码标准分析,识别代码违规现象,降低代码风险,预防同类错误再次发生。其中代码潜在风险的级别可以根据项目的需要定义五种级别:
SV(严重违规:有极大的可能导致严重的错误发生)、PSV(可能严重违规:有可能产生严重的错误发生)、V(一般违规:极有可能产生错误)、PV(可能违规:可能产生错误)、I(信息:很少有可能导致严重的错误)。下面的报告就是针对具体的文件违反了那种级别的规则,具体是那一条和违规的代码在那一行的顺序给出详细分析报告的,同时在最后以条形图统计出各个文件所违反的各种级别情况,最后列出本次所运用的代码规则.
代码规则分析图形统计
1、 代码违规信息图形汇总
说明:以条形图的方式列出每个文件的代码违规数量
2、 代码违规级别汇总
说明:以条形图的方式统计出本次测试各种级别违规的数量
3、本次测试所采纳的代码标准
二、单元测试
说明:单元测试主要是对每个项目文件的基本组成单元(函数或者类)进行功能测试和逻辑覆盖测试,C++TEST为每个被测函数自动生成测试桩、测试驱动和测试用例,同时测试人员也可以根据被测函数或者类的需要,自定义桩和测试用例。单元测试报告给出对具体文件的函数或者类测试所运用的测试用例,以及该测试用例所产生的覆盖情况(LC:语句行覆盖、BBC:语句块覆盖、PC:路径覆盖、DC:决策覆盖、MCDC:可变条件的决策覆盖、CC:条件覆盖),包括使用的测试用例的类型、测试参数和测试结果,并对通过的测试用例用蓝色标记,没有通过的测试用红色标记,并给出测试失败的错误信息。
注意:AUTO_1_A_0表示C++TEST为该测试项目第1个文件的第A号数自动生成的第0号测试用例;
USER_1_A_53表示用户为第1个文件第A号函数涉及的第53号测试用例;
2.1 单元测试结果图形统计
1、 单元测试用例测试执行结果状态统计
说明:报告统计此次测试通过的测试用例数量(OK);失败的测试用例数量(FLD);因系统错误不能运行的测试用例数量(ERR);本次测试总的测试用例数量(ANY).
2、通过的测试用例数量统计:
3、因系统错误而不能运行的测试用例统计:
4、失败的测试用例数量统计:
5、本次测试总的测试用例数量统计:
三、覆盖率统计报告
说明:该报告首先给出被测项目总的覆盖率统计情况,包括LC:语句行覆盖、BBC:语句块覆盖、PC:路径覆盖、DC:决策覆盖、MCDC:可变条件的决策覆盖、CC:条件覆盖。然后给出该项目下每个文件的代码覆盖情况,以及每个文件中的函数或者类的覆盖情况,最后给出每个测试用例的代码覆盖情况。
四、 覆盖率详细报告
说明:详细给出被测文件的源代码、代码行、代码块的LC:语句行覆盖、BBC:语句块覆盖、PC:路径覆盖、DC:决策覆盖、MCDC:可变条件的决策覆盖、CC:条件覆盖的具体细节,并统计其执行的的次数,并在对应的源代码行前作出标识。
五、覆盖率图形统计
1、 综合覆盖率汇总
说明:汇总本次测试各种代码覆盖的综合统计,给出项目的整体覆盖率情况。包括
LC:语句行覆盖、BBC:语句块覆盖、PC:路径覆盖、DC:决策覆盖、MCDC:可变条件的决策覆盖、CC:条件覆盖综合统计。
2、 语句覆盖率(LC)汇总
说明;汇总每个文件的LC:语句行覆盖的整体覆盖率
3、 基本语句块覆盖率(BBC)汇总
说明:汇总每个文件的BBC:语句块覆盖的整体覆盖率
4、 路径覆盖率(PC)汇总
说明:汇总每个文件的PC:路径覆盖的整体覆盖率
5、 决策覆盖率(DC)汇总
说明:汇总每个文件的DC:决策覆盖的整体覆盖率
6、 可变条件决策覆盖率(MCDC)汇总
说明:汇总每个文件的MCDC:可变条件决策覆盖的整体覆盖率
7、 条件覆盖率(CC)汇总
说明:汇总每个文件的CC:条件覆盖的整体覆盖率
C++TEST概述
C++Test是一个C/C++单元测试工具,自动测试任何C/C++类、函数或部件,而不需要您编写一个测试用例、测试驱动程序或桩调用。C++Test能够自动测试代码构造(白盒测试)、测试代码的功能性(黑盒测试)和维护代码的完整性(回归测试)。C++Test是一个易于使用的产品,能够适应任何开发生命周期。通过将C++Test集成到开发过程中,您能够有效地防止软件错误,提高代码的稳定性,并自动化单元测试技术(这是极端编程过程的基础)。
特性
· 支持C 和 C++ 代码
· 使用可配置管理的将近600条内置的代码规则
· 图形化或自动化创建针对应用程序、团队和组织的用户代码规范
· 上下文敏感的规则抑制
· 自动生成可扩张的测试用例给单独的方法/函数/类 或应用模块
· 本地或源码格式的测试
· 可以导入CPPUnit的测试用例
· 预配置模式(异常测试,白盒测试,黑盒测试,回归测试 等)
· 详尽的代码覆盖率分析,包括 行覆盖率,语句覆盖率,块覆盖率,分支覆盖率,路径覆盖率,条件覆盖率,可变条件覆盖率
· 自动生成单元测试的回归基线
· 自动解析存在的测试用例
· 自动生成用户桩模块
· 可以使用图形化编辑的对象库
· 在生成测试用例时,可以使用外部数据源
· 用户可自己配置的文本或HTML格式的报告
· 可以用XML格式导出分析结果
· 支持GUI和命令行模式
· 和Microsoft Visual Studio无缝衔接
好处
· 提高代码可靠性、安全性、执行高速性和一致性
· 在单元和模块功能测试中,能做良好的开始
· 能获得代码质量和潜在缺陷方面的即时的专业的反馈
· 能让你信心百倍的快速发布新功能
· 在最小的用户干预下做做广泛的测试
· 大大减少在测试和调试方面的时间,让你的开发人员有更多时间来做创造性的东西
C++TEST支持平台
1. Windows-Specific Requirements
Supported Platforms: Windows NT, 2000, XP.
Supported Compilers: Microsoft® Visual C++® 6.0, .NET 2002, and .NET 2003 (IDE integration). CygwinTM GCC 2.95.x, 3.2.x, 3.3.x, and MingwTM GCC 2.95.x, 3.2.x, 3.3.x.
注意:由于 GCC 3.0.x 和 GCC 3.1.x 还没有官方版本, 所以C++Test 并没有完全能够保证支持这两个版本的编译器。
2. UNIX-Specific Requirements
Supported Platforms:
Linux kernel 2.4 (with System V IPC), glibc 2.2, Pentium processor.
Solaris 7, 8, 9, UltraSPARC processor.
Supported Compilers:
GNU GCC 3.2.x.
GNU GCC 3.3.x.
GNU GCC 3.4.x.
Sun® C++ 5.3® (Sun Forte C++ 6 Update 2® for SPARC Solaris). Solaris only.
Sun® C++ 5.5® (Sun ONE Studio 8). Solaris only.
C++TEST功能描述
1. 自动建立测试驱动和桩函数
C++Test自动建立一个测试驱动程序,其设计目标是极大化类的测试覆盖性和错误检测。为类建立测试驱动,你只要简单地打开这个类,然后按Build Test键。C++Test将自动建立测试驱动程序。
另外,如果被测的方法需要调用当时还不存在或无法访问的函数,C++Test能够自动生成桩函数;这样能够测试与外部资源操作的交互作用和不包含任何隐藏的弱点。C++Test不是实际调用这些函数,而是调用桩函数并返回桩函数提供的值。如果你需要控制使用的返回值,你可以建立一个桩调用表,生命输入/输出的关系。
你还能加入用户定义的桩函数。例如,如果你要使用原始的函数,且该函数定义在不同的文件中;或者你想要仿真原始函数的行为,而用一个简单的函数替代它
自动生成C/C++类的测试驱动程序和桩函数的能力是C++Test所独有的;只有C++Test能够自动测试C/C++类(一当它能够编译时),而不需要用户的任何干预。使得你能够尽快地自动检测代码错误,以最容易、最省钱和最快速的方法找到和修正它们。如果没有这样的自动化工具,大量的时间和资源消耗将失去单元测试的潜在好处和现实意义。
2. 静态测试
C++Test内嵌了业界最出名的Effective C++(epcc)、More Effective C++(mepcc)、meyer-klaus(mk)以及Universal Code Standard(ucs)等 568 条规范。同时,它也集成了由parasoft累积出来的一些规范。静态测试中,C++Test会对代码进行详尽的扫描,验证代码中是否存在和这些规范相冲突的地方,尽快的发现一些简单或低级错误,避免由它们带来的集成扩散。
3. 白盒测试
C++Test提供了一种有效并且高效的方法执行白盒测试。C++Test完全自动执行所有的白盒测试过程,自动生成和执行精心设计的测试用例。自动标记任何运行失败,并以一种简单的图示化结构显示。然后自动保存这些测试用例,能够方便地用于以后的回归测试。
由于C++Test能够自动生成桩函数,或允许你加入自己的桩函数,因此它能够测试引用外部对象的类。换句话说,C++Test能够运行任何一个或一组类,并自动生成和执行一组测试用例,它们被设计成能够发现尽可能多的错误。
C++Test允许你定制白盒测试用例的生成,和在什么层次上(项目、文件、类或方法)执行测试。
4. 黑盒测试
C++Test通过自动化黑盒测试的大部分操作,减轻了这类测试的负担。特别是以两种方法自动化黑盒测试的第一阶段--建立测试用例:
· 帮助你设置每个测试用例的结果
你可以简单地输入测试用例输入,然后让C++Test运行测试用例并自动确定实际的输出结果。如果结果正确,不需要其它动作。如果结果不正确,你可以输入预期的输出结果。这样比手工输入每个测试用例的结果更快更容易。
· 自动生成测试用例的核心集合
C++Test自动设计了一组广谱的白盒测试用例。当使用这些测试用例在黑盒测试时,你只需简单地观察实际的输出结果,然后对任何不正确的结果输入预期的值。
当你需要输入或修改测试用例时,你可以在C++Test自动生成的测试用例框架种简单地键入相应的值。这将显著地加快建立测试用例的过程。
在自动化建立黑盒测试用例的大多数步骤之外,C++Test完全自动化余下的黑盒测试步骤。按一个键,你能够对项目、文件、类或方法运行一个或一组。C++Test然后自动执行所有的测试用例,报告所有的输入/输出关系,并标记任何实际输出与预期不一致或导致程序崩溃的测试用例。
5. 回归测试
C++Test完全自动化与回归测试有关的所有步骤。C++Test首次测试某个类时,自动保存其测试和测试参数。当需要执行回归测试时,你可以打开合适的项目和文件,运行所有原来的白盒和黑盒测试用例;C++Test会自动运行完全相同的测试用例和测试参数,并告之发现的任何问题。这意味着你能够立即知道修改是否引入了任何错误。
6. 监视测试覆盖性
为了帮助你测量当前使用的测试用例集合的有效性,并且给你提供达到尽可能高的覆盖性的信息,C++Test自动监视测试覆盖性。
C++Test实时跟踪测试覆盖性,然后建立一个综合测试覆盖性报告。覆盖性窗口图示化地说明了当前正在被执行的代码行,已执行过的行和每行的执行次数。因此,它不仅指出了一个代码行是否被测试过,而且说明了被测试的有多彻底。这些信息对于确定那些代码需要追加测试是非常有帮助的。
C++Test 使用
一. 安装说明
第一步:
打开安装源程序,同普通的windows应用程序一样,选择安装路径,完成安装。
第二步:
从桌面或者菜单打开C++Test,将弹出类似于下面的一个窗口:这里的machine ID就是C++Test和主机绑定的信息。这个machine ID需交给华唐公司,来申请license。而由于license的种类不同,可以分为local license(单机版)和net license(网络版)。
第三步:
将相应的license和expire date粘贴到相应的位置,如果信息正确,系统将提示license ok。如果信息不正确,系统将提示wrong license。输入正确的license,打开C++Test,就可以进入C++Test的用户界面了。
二. 界面说明
1. 源代码
在源代码窗口可以看到我们所测试的代码,界面非常友好,当选择代码时,被选择的代码也会以蓝色块的形式出现。并且,当我们进行了静态分析和动态分析时,这里我们也可以非常直观的观测到静态分析和动态分析的结果。代码左侧的红色精灵帽表示静态分析时出现问题的所在,蓝色感叹号则表示动态分析时出现问题的所在。点击相应的地方,会出现对问题的一个简单描述。
2. 静态分析
在静态分析栏中的Results标签是对静态分析结果的一个罗列。每个红色精灵帽都代表一种违规行为,而它旁边的数字则代表测试代码中出现这种违规的次数。紧接着的字母表明违规行为的严重级别。再后面就是对这条规范的大致描述以及规则编号。
而标签Rules Manager则是对这些规则的管理,当用户需要使用某条规则的时候,只需要在相应规则左侧的方框内打上勾就表明选择了该条规则。而当用户不需要某条规则检查的时候,只需要去掉相应规则的勾就可以了。
3. 动态分析
在动态测试中的Test Case/Results栏中,主要是对测试用例的一个总体管理。在这里,所有的测试用例的状态都一目了然,绿色表示成功,红色表示失败。用户可以自己添加或修改测试用例。
而Stub Tables栏则是对桩函数的管理,Suppressions则是对测试对象的一个管理。例如,上面的Data类有很多个成员函数,当用户并不想全部都测,而只是测其中的几个。这个时候就可以通过Suppressions进行选择。
除此之外,上面的Tree filter还提供强大的滤波器功能,可以让用户更好的关注他们的焦点,例如只看最近一次测试的失败用例。
4. 过程进度
这栏就是在测试进行中,C++Test告诉用户进度的一个对话框。所有的测试都分成静态动态两部分。红X表示此次测试不进行的部分,绿勾代表此次测试进行了的部分。后面的数字则是对测试用例的统计。例如(6/7)表示,总共有7个测试用例,其中6个已经进行了测试。
三. 操作
1. 建立测试环境
(1) 打开C++Test,选择file/open file,选择C++Test安装目录下examples/cpptest_demo.cpp,这个cpp文件将出现在当前的project下。
(2) 在当前project下,右击cpptest_demo.cpp,选择read symbols(读入符号表),此时C++Test将parse(剖析)这个源程序,分析出此文件的文件结构。
(3) 右击cpptest_demo.cpp,选择build test,C++Test将自动的建立测试环境,包括测试驱动程序,桩模块。
2. 静态测试
单击静态测试的按钮,C++Test将自动完成对源代码的静态测试,也就是我们所说的代码走查,走查所用到的规范可以在静态测试标签的rule manage下看到。
下图,右侧就是静态测试(代码走查)的结果。每条违规信息包括对违规的描述,该错误共发生的次数以及相对应的具体位置。而下面的rule desription则是对这条规则的一个比较详细的描述。顶层的文件夹后面的“I=4 PV=1 V=33……”描述的是整个的对违规信息的统计。
I表示information,通知行为
PV表示possible violation,可能的违规行为
V表示violation,违规行为
PSV表示possible servere violation,可能的严重违规行为
SV表示servere violation,严重违规行为。
3. 动态测试(Native)
单击动态测试的按钮,C++Test将自动完成代码的动态测试。可以从各个层面上(单个测试用例,整个函数的测试用例,整个代码的测试用例)去看相对应代码的覆盖率。操作的时候,只需要右击相应的层次(例如一个测试用例),选择show coverage,就可以看到对应的覆盖率了。
下图,右侧就是对动态测试的一个整体描绘。列举了所有的测试用例,并且用颜色来区分成功和失败的测试用例,绿色代表成功通过了的测试用例,而红色代表没有通过也就是失败了的测试用例,对于每个错误的测试用例都有一个大致的描述。
每个测试用例或者各个节点上都做到了相应的覆盖率信息,包括了LC(语句覆盖),BBC(块覆盖),PC(路径覆盖),DC(决策覆盖),MCDC(多条件决策覆盖)以及CC(条件覆盖)。
此外,上面的tree filter过滤器功能可以帮助用户迅速察看到自己关心的焦点或错误。
4. 动态测试(Source)
单击动态测试的按钮,
C++Test将自动完成代码的动态测试(Source)。
5. 生成报表
选择file/generate report,根据对报表的需求,选择适当的报表内容种类(例如dynamic analysis1,coverage statistic1)。然后就会生成一个HTML格式的报表。
报表有多种类别和格式。 可以按照自己的需要来挑选。
搜索更多相关主题的帖子:
梗概 TEST