代码覆盖率工具BullseyeCoverage研究

发表于:2011-11-01 10:07

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:李亚锋    来源:51Testing软件测试网采编

  1、术语定义

  1.1 代码覆盖率

  代码覆盖率 =代码的覆盖程度,一种度量方式。

  1.2 语句覆盖(StatementCoverage)

  又称行覆盖(LineCoverage),段覆盖(SegmentCoverage),基本块覆盖(BasicBlockCoverage),这是最常用也是最常见的一种覆盖方式,就是度量被测代码中每个可执行语句是否被执行到了。

  这里说的是“可执行语句”,因此就不会包括像C++的头文件声明,代码注释,空行,等等。非常好理解,只统计能够执行的代码被执行了多少行。

  需要注意的是,单独一行的花括号{}也常常被统计进去。

  语句覆盖常常被人指责为“最弱的覆盖”,它只管覆盖代码中的执行语句,却不考虑各种分支的组合等等。

  1.3 判定覆盖(DecisionCoverage)

  又称分支覆盖(BranchCoverage),所有边界覆盖(All-EdgesCoverage),基本路径覆盖(BasicPathCoverage),判定路径覆盖(Decision-Decision-Path)。它度量程序中每一个判定的分支是否都被测试到了。

  1.4 条件覆盖(ConditionCoverage)

  它度量判定中的每个子表达式结果true和false是否被测试到了。

  1.5 路径覆盖(PathCoverage)

  又称断言覆盖(PredicateCoverage)。它度量了是否函数的每一个分支都被执行了。 这句话也非常好理解,就是所有可能的分支都执行一遍,有多个分支嵌套时,需要对多个分支进行排列组合,可想而知,测试路径随着分支的数量指数级别增加。

  这是最强的覆盖,一般代码覆盖率工具都不支持,BullseyeCoverage也不支持。

  2、BullseyeCoverage简介

  Bullseye Coverage 是Bullseye 公司提供的一款C/C++代码覆盖率测试工具

  相对于Rational 的Pure Coverage,Bullseye     Coverage 支持的C/C++的编译器更多。除了支持各种Unix 下的编译器之外,在Windows 下支持VC、Borland C++、Gnu C++、Inter C++。

  提供的代码覆盖率是分支覆盖率而不是一般代码覆盖率,我个人认为分支覆盖率比代码覆盖率更好。

  我这里有破解版本和key,如果有人需要,欢迎向我索取。

  3、BullseyeCoverage的安装

  因为有安装程序,所以安装整体来说比较简单。

  不过,有几个地方还是要注意,相关的截图如下。

  1)输入key,在license key输入框。

  2)设置cov文件路径,可以设置到一个你比较容易记住的路径下。

  这一步容易被忽略,导致最后都不知道cov文件在哪里。

  cov文件的作用后面会讲到。

  3)编译器选择,缺省会选择vc,但是建议把其他的几个主流的c++编译器也选上,这样可以识别更多类型的代码。

  4、BullseyeCoverage的使用

  4.1 在代码编译时如何使用?

  BullseyeCoverage安装好后,会在vc编译器中以插件的方式出现。

  在vc6的tools菜单中高亮显示部分,可以设置是否启用BullseyeCoverage。

  如果启用,则会在编译的时候,把相应的代码符号记录到cov文件中。

  可见设置cov文件路径的重要性,否则不好找。

  在vc2005中,特别提醒的是,BullseyeCoverage对业务代码逻辑无影响,只是在cov文件中记录了有关代码的函数、分支和条件判断等符号。

21/212>
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • xww8498
    2013-8-01 17:42:33

    谢谢楼主分享,麻烦给我一个破解的licence  xzw8498163@sina.com

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号