市面上的C++代码覆盖率工具大都收费,Coverage Validator也不例外。Coverage Validator应该少有人听过,我也是在stackoverflow里听别人介绍的。所以下载了试用一下。有兴趣的朋友可以去https://www.softwareverify.com/cpp/coverage/index.html了解一下更多东西,上面提供有30天试用版本。

之前试过CoverageMeter,使用起来也是蛮方便的,主要原理是替换了原有的编译器,在代码中进行插桩。因此,CoverageMeter的特点是需要重编被测试代码。这也是大部分覆盖率工具常用的方法。而Coverage Validator,不需要重编被测代码,只需要提供被测二进制程序的pdb文件,就能统计其代码覆盖率。它能同时统计行覆盖,分支覆盖,函数覆盖等。

Coverage Validator使用起来也非常简单,你只需要:

1. 使用Coverage Validator运行你的被测程序。

通过菜单"File"-"Start Application" ,制定需要运行的程序,然后又很多选项,如制定程序路径,命令行参数,环境变量等,后来还提供了几种启动程序的方式,比如:CreateProcess,这也是最常用的方式。

2. 在Coverage Validator中查看覆盖率结果。

结果查看也挺方便,代码窗口中用颜色标记了哪些行被覆盖,哪些行未覆盖。

你还可以:

设置过滤条件,只统计加载的某个模块的覆盖率数据。比如,你要测试的是一个DLL,你就可以设置过滤条件,只统计该DLL的代码覆盖率。你还可以设置过滤只统计某个类,某个函数的覆盖率数据。设置过滤的方法非常简单,我也不贴自己的图了。菜单:"Configure" - "Settings" - "Filters"

下面是引用的官方网站的界面截图(说实话,界面挺简陋的)

总结果页面:

详细结果页面:

由于该软件是商业软件,同时使用起来也非常简单,并配有详细的文档,因此,本文并不打算详细演示Coverage Validator如何工作的,本文的目的是让大家了解到有这么一个工具,或许可以给你带来新的思路,或许这个工具对你确实有用。

#1楼 2009-07-11 23:20 jjj
c# 下能用MSTest里的,c++ 就不行了,这个不错,俺回头认真看下。

#2楼[楼主] 2009-07-11 23:29 CoderZh 

@ jjj
我也是困惑于MS不提供C++的代码覆盖率的支持。

#3楼 2009-07-14 01:09 不理解

代码覆盖率工具
是做什么用呢?

#4楼[楼主] 2009-07-14 12:48 CoderZh 

@ 不理解
覆盖率是用来度量测试完整性的一个手段。软件的覆盖率总体上分为逻辑覆盖(代码覆盖和结构化覆盖)和功能覆盖。通过覆盖率数据,可以知道测试得是否充分,测试得弱点在哪些方面,进而可以指导我们设计能够增加覆盖率的测试用例。
代码覆盖率工具就是用来统计覆盖率的工具。

#5楼 2013-11-21 21:43 Alexia(minmin) 

Bullseye Coverage这款软件呢?

http://www.cnblogs.com/coderzh/archive/2009/07/11/1521706.html

C++代码覆盖率工具Coverage Validator的更多相关文章

  1. Python 代码覆盖率统计工具 coverage.py

    coverage.py是一个用来统计python程序代码覆盖率的工具.它使用起来非常简单,并且支持最终生成界面友好的html报告.在最新版本中,还提供了分支覆盖的功能. 官方网站: http://ne ...

  2. JAVA代码覆盖率工具JaCoCo-原理篇

    JAVA代码覆盖率工具JaCoCo-原理篇 1.2 JAVA覆盖率工具介绍 1.3.3 Apache Maven方式 1.3.4 Eclipse EclDmma Plugin方式 JAVA代码覆盖率工 ...

  3. Qt代码覆盖率code coverage(VS版)

    版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:Qt代码覆盖率code coverage(VS版)     本文地址:http://techi ...

  4. python代码覆盖率统计-coverage

    coverage.py是一个用来统计python程序代码覆盖率的工具.它使用起来非常简单,并且支持最终生成界面友好的html报告.在最新版本中,还提供了分支覆盖的功能. 官方网站: http://ne ...

  5. C++开源代码覆盖率工具OpenCppCoverage介绍(Windows)

    关于代码覆盖率统计工具,Linux平台下,gcc内置支持gcov,通过编译时加参数选项,进行代码插桩,从而实现代码覆盖率.在Windows平台下,早在几年前,我还没找到特别好用又开源的覆盖率工具,所以 ...

  6. Python代码覆盖率分析工具Coverage

    简介 在测试中,为了度量产品质量,代码覆盖率被作为一种测试结果的评判依据,在Python代码中用来分析代码覆盖率的工具当属Coverage.代码覆盖率是由特定的测试套件覆盖被测源代码的程度来度量,Co ...

  7. Python 测试代码覆盖率统计工具 coverage.py

    安装 您可以通常的方式安装coverage.py.最简单的方法是使用pip: $ pip install coverage 要安装预发布版本,您需要指定--pre: $ pip install --p ...

  8. coverage python 代码覆盖率工具使用(django 使用)

    1. 安装包 pip install coverage 2.启动程序 coverage run -m pytest 3.获取html格式的报告文件 coverage html 4.创建配置文件 .co ...

  9. 单元测试-代码覆盖率工具 -- JaCoCo

    最近学习Mybatis的官方文档,看到了[项目文档]一节有很多内容没有见过,做个笔记,理解一下. 随着敏捷开发的流行,编写单元测试已经成为业界共识.但如何来衡量单元测试的质量呢?有些管理者片面追求单元 ...

随机推荐

  1. UIAlertController 的使用——NS_CLASS_AVAILABLE_IOS(8_0)

    UIAlertView 随着苹果上次iOS 5的发布,对话框视图样式出现在了我们面前,直到现在它都没有发生过很大的变化.下面的代码片段展示了如何初始化和显示一个带有“取消”和“好的”按钮的对话框视图. ...

  2. Transact-SQL 数据类型转换

    Syntax   Syntax for CAST: CAST ( expression AS data_type [ ( length ) ] )     Syntax for CONVERT: CO ...

  3. C++读写文件并排序

    比如一条记录是 1987 9 2 1988 8 26 代表公司员工生日 然后需要读入到系统 现在需要放入容器,并且排序 最后输出到新的文件中,按照年龄由大到小. #include "stda ...

  4. Java基础知识强化84:System类之exit()方法和currentTimeMillis()方法

    1. exit方法: public static void exit(int status): 终止当前正在运行的Java虚拟机.参数用作状态码:根据惯例,非0的状态码表示异常终止. 调用System ...

  5. JAVA 多线程同步与互斥

    1. 为什么需要互斥: ​互斥操作  保证了  多线程操作的  原子性 , java的 互斥 语义 有 synchronized 关键字 提供. 主要方式 有  同步代码块 和  同步方法 两种 2. ...

  6. Android Studio错误

    晚上一直在折腾android studio这个东西,弄的蛋疼.. 之前是有用的,然后今天闲的没事干,更新了下,反正弄出了一大堆的错误.. 错误:failed to find Build Tools r ...

  7. javascript基础之javascript的存在形式和js代码块在页面中的存放位置

    1.存在形式 文件 如: <script src='js/jc.js'></script> 前页面 <script type='text/javascript'>a ...

  8. Wcf简单实例1

    一.客户端添加服务引用,并调用 1.使用客户端代理同步调用 static void TestTwo() { /*********同步访问********/ Person.PersonServiceCl ...

  9. 关于在head里的link href=<%=%>,其中前置百分号给编码了的解决方案

    做了一个项目,主要是能够自动换模板,实际就是插入数据库那个css名称,然后前台取出那个值,放入getcss变量里(getcss自己定义的一个变量),然后通过link href=<%=%>取 ...

  10. UVa12304

    基础题,注意精度和旋转方向. #include <iostream> #include <math.h> #include <vector> #include &l ...