Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1425092
  • 博文数量: 596
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 173
  • 用 户 组: 普通用户
  • 注册时间: 2016-07-06 15:50
个人简介

在线笔记

文章分类

全部博文(596)

文章存档

2016年(1)

2015年(104)

2014年(228)

2013年(226)

2012年(26)

2011年(11)

分类: 架构设计与优化

2013-04-23 11:26:19

http://www.taobaotesting.com/blogs/qa?bid=8592
Coverage validator
1. 简介
2. 原理简介
3. 使用
4. 优缺点
 1.         Coverage validator简介
Coverage validator(Software Verification Limited公司的产品)是一个代码覆盖测试工具。可供软件开发者和软件质量测试人员使用。Coverage validator可以帮助你确定工程的代码覆盖率,识别出单元测试中未测试的功能,以交互,实时的方式显示出代码覆盖情况来提高软件测试质量,你也可以合并所有单元测试的覆盖测试数据。可以在创建单元测试报告的同时生成测试报告。
常见的各种覆盖测试工具像CoverageMeter,gcov主要原理是替换了原有的编译器,在代码中进行插桩。因此, 这些覆盖测试工具的特点是需要重编被测试代码。这也是大部分覆盖率工具常用的方法。而Coverage Validator,不需要重编被测代码,只需要提供被测二进制程序的pdb文件,就能统计其代码覆盖率,所以对于每个应用的每个DLL/EXE模块,只是简单的需要PDB或者MAP文件即可。它能同时统计行覆盖,分支覆盖,函数覆盖等。 Coverage validator的insrumention是很快的,只需要几秒,而不是几分钟。跟non-instrumented应用速度是差不多的,不像其他的工具要慢上2到10倍。
Coverage Validator有个很大的好处是可以设置过滤条件,可以设置只统计部分模块的覆盖率数据。可以设置只统计某个DLL,某个类的覆盖率数据,而且返回结果也可以以文件或者函数返回。返回结果也非常直观,可以导出HTML报告或者XML报告。
目前,它只支持Windows平台。它能支持的调试信息格式参见下面描述:
Coverage Validator can understand debug in information in the following formats:
· Microsoft Program Database (PDB) 
· Borland Turbo Debugger System (TDS) 
· CodeView NB10 
· COFF
2.         Coverage validator使用方法
2.1 下载安装
在其官网上下载30的适用版本:
2.2 使用
Converage validator的使用是非常简单的,以下以一个五子棋程序的测试过程来展现coverage validator的功能特点:
整体图:
先看一下它的运行主页,可以发现coverage validator的功能是相当强大的,提供整体测试覆盖情况,每个文件的覆盖测试,分支覆盖测试,函数覆盖测试,单元覆盖测试,行覆盖测试和诊断分析等。
步骤一:选择要测试的程序或模块
 通过菜单"File"-"Start Application" ,选择要进行覆盖测试的工程。如下图所示选择exe文件或者某个DLL模块即可,同时可以设置相应的环境变量,参数,输入输出文件等。
 
一直next,直到看到如下界面,点击开始测试即可。
 
步骤三:开始测试过程
点击开始应用后,即会跳出客户端界面,开始测试。
步骤四:结果显示
在测试的同时,coverage validator会即时的显示测试的结果信息,你可以变测试摆弄查看相应的测试覆盖率信息,下图是总的测试情况,分别显示已经待测试的文件,函数,分支,代码行,及单元测试组的覆盖率情况。如下,显示的总文件个数,被访问的文件个数,未被访问的文件个数与完全覆盖文件的个数。
 
同时还显示一些comment来给出一些提示,下边是我之前跑的一个程序,会给出一些信息,提示有些内联函数和模块库中的文件没有被覆盖。这个覆盖率是随着功能测试的过程动态变化的,可以变测试边显示覆盖测试结果。
 也可以查看单个源文件的测试情况,如下图:
左边显示了各个源文件覆盖情况,其中浅蓝色的文件表示100%覆盖,红色的表示0覆盖,黄色的表示部分覆盖。对于每个文件分别显示了文件的总行数,被访问的行数,hook的行数,和测试覆盖率情况。右边显示了选择出了的单个文件的具体覆盖信息。黄色表示被覆盖的行,并在行的前边表示了该行代码的执行次数,红色为未访问的行,没有颜色的表示是没有HOOK的行。在文件的上方有具体的信息。同样可以点击左下方的refresh按钮来动态即时的显示代码覆盖情况。
 
利用覆盖测试工具,增加测试用例的方法,从上图的左边可以看出更改用户名模块的代码覆盖情况为0,查看此文件的覆盖测试结果,如下图所示,红色的行表示都没有覆盖,这个时候需要添加用户名更改的测试。
 
下图是增加了测试用例后的用户名更改模块的覆盖情况:
 
同样也可以按照函数的名字,类名字,目录等查看function coverage,如下图左下角的refresh用于更新,Type可以选择相应的显示方式。
 
下图为选择的类图显示方式。
 
如果检查的是CppUnit工程的代码覆盖率,需将Testrunnerd.dll文件复制到可执行文件所在目录。
1.        可以设置过滤条件,只统计加载的某个模块的覆盖率数据。比如,你要测试的是一个DLL,你就可以设置过滤条件,只统计该DLL的代码覆盖率。你还可以设置过滤只统计某个类,某个函数的覆盖率数据。设置方法:菜单:"Configure" - "Settings" - "Filters"。
 
3.         Coverage validator优缺点
优点:
1.         不需要重编被测代码,只需要提供被测二进制程序的pdb文件,可以单独的测试DLL/EXE模块
2.         结果数据输出直观,查看方便,代码窗口有颜色标记,详细显示各个函数,分支,文件覆盖情况,并标记每一行代码执行次数。有HTML报告和XML报告
3.         可配合cppunit使用
4.         插桩很快,应用程序的速度也很快
5.         可以设置过滤条件,只统计加载的某个模块的覆盖率数据,某个类,某个函数的覆盖率数据,也可以设置排除条件,排除统计某部分的覆盖率数据。可以一个文件一个文件的返回,也可以一个函数一个函数的返回。
6.         可以即时的查看代码覆盖测试结果信息,在执行的各个阶段查看。
7.         可以用于Native-mode与mixed-mode.net模式
缺点:
1).        结果的自动合成功能不太好,只是在一个SESSION的末期将结果合成。
2).        提供的覆盖测试功能最高达到分支覆盖。
3).        不能够覆盖所有的行,会有数据丢失
4.         参考
阅读(2409) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~