热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

关于C++codecoveragetool的研究(4)—coveragevalidator使用

http:www.taobaotesting.comblogsqa?bid8592Coveragevalidator1.简介2.原理简介3.使用4.优缺点1.Cove
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的适用版本:




https://www.softwareverify.com/cpp/coverage/index.html





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.         参考




https://www.softwareverify.com/cpp/coverage/index.html
阅读(1465) | 评论(0) | 转发(0) |


0

上一篇:关于C++ code coverage tool 的研究(2)—GCOV 实现原理

下一篇: 关于C++ code coverage tool 的研究(3)—gcov使用实例


相关热门文章
  • socket中的短连接与长连接,心...
  • Haproxy、Keepalived双主高可...
  • Tomcat的性能与最大并发(1000)...
  • Nginx深入详解之日志
  • socket编程的同步、异步与阻塞...
  • linux dhcp peizhi roc
  • 关于Unix文件的软链接
  • 求教这个命令什么意思,我是新...
  • sed -e "/grep/d" 是什么意思...
  • 谁能够帮我解决LINUX 2.6 10...

给主人留下些什么吧!~~
评论热议


推荐阅读
author-avatar
果丽珍
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有