代码覆盖率收集工具

上一篇 / 下一篇  2010-12-06 20:31:28 / 个人分类:测试效果评估

鉴于代码覆盖率是最常用的测试效果评估方式,单独起个帖子吧。
 
代码覆盖率有多种,比如statement coverage, branch coverage, block coverage, method coverage, class coverage等等。branch coverage也就是分支覆盖率算是要求比较高的,比它还复杂的没什么人用了吧,statement coverage一般收集工具都支持,这个也差不多可以了。
 
1. c/c++代码覆盖率收集工具: gcov
gcc自带的代码覆盖工具,可以用以下的命令来收集:
gcc -g -fprofile-arcs -ftest-coverage example.c -o example
./example
gcov example.c
要收集分支覆盖率,需要加参数gcov -b example.c
另外有两个gcov的扩展工具,lcov(http://ltp.sourceforge.net/coverage/lcov.php)和zcov(http://minormatter.com/zcov/),用起来会更舒服些吧。
 
2. java代码覆盖率收集工具: EclEmma, Clover
EclEmma其实是基于emma的一个eclipse plugin,装了之后执行测试用coverage as(跟run as类似)的选项就可以了。这个是免费的。
Clover也差不多,某些功能做得细一些,但是要收费,一般用EclEmma就行了吧。
 
3. c#代码覆盖率收集工具: Visual Studio
c#的没仔细弄过,貌似有个NCover,不清楚。反正visual studio里有,还比较方便。选中一个solution,右键add->new item,然后选test settings->add,然后选Data and Diagnostics,选中其中的code coverage,再双击code coverage就可以设定要收集代码覆盖率的那些dll了。
 
4. python代码覆盖率收集工具: Coverage
这个完全没用过,纯粹是道听途说的,这里有详细的介绍: http://hi.baidu.com/baiduqa/blog/item/525aba3af79771fcb211c788.html
 
有些场景下,比如为了简化测试集或者帮助调试,需要的可能不只是整个测试集的代码覆盖率,而是各个测试样例的覆盖率。这个时候就需要用上述各个工具的api 接口,或者是在测试脚本中加入代码,以在每个测试样例执行之后就收集和重置测试覆盖率。c/c++的话,在测试脚本中加入代码去解析gcov得到的覆盖率文件(*.gcov)就行了;java的话emma有api接口的;c#么貌似vs2008有api接口,vs2010里我是没找着,用命令行也行,先 VSPerfMon.exe -coverage -output:文件名,然后执行测试,再VSPerfCmd.exe -shutdown。python的话上面的链接里有介绍Coverage的api。

TAG:

 

评分:0

我来说两句

日历

« 2024-05-02  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 69682
  • 日志数: 44
  • 文件数: 40
  • 建立时间: 2010-12-06
  • 更新时间: 2011-05-31

RSS订阅

Open Toolbar