最近两年在做Linux虚拟化开源项目,由于项目代码庞大且开发人员分散在世界各个角落,我们对其测试的方法和实践中,对单元测试等做得并不多(KVM的kvm-unit-tests可以算一个吧),对单元测试代码覆盖率等也没有做过多的要求。不过以前做电子商务测试时,那时技术部门曾主推单元测试(主要是JUnit测试Java代码),且将单元测试的代码覆盖率有较为严格的要求,我也做过一小段时间的研究。偶然看到淘宝公直的一篇文章(Linux下c/c++项目代码覆盖率的产生方法),就用他给的实例代码使用了一下gcov和lcov查看了一下C/C++代码覆盖率的统计。
对于Linux下的C/C++代码,可以在gcc/g++工具编译代码时加上“--coverage”选项来生成可用于覆盖率分析的二进制文件,然后用gcov命令来生成覆盖率统计情况,也可用lcov工具来生成html版本的可读性很好的代码覆盖率报告。
下面列举一下各种编程语言的代码覆盖率工具吧。
c/c++: gcc+gcov+lcov;(单元测试:CUnit、CPPUnit、Google GTest等)
Java : Maven cobertura 插件,Clover,EMMA,Jtest;
Python: PyUnit + coverage.py;
PHP: phpunit + –coverage-html + Xdebug ;
Perl: Test::Class 和 Devel::Cover;
Shell: shUnit2 + shcov;
更多的工具资料请参考如下:
代码覆盖率工具: http://en.wikipedia.org/wiki/Code_coverage
单元测试框架:http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks
gcc manual: man gcc (搜索--coverage)
http://ltp.sourceforge.net/coverage/lcov.php
shunit2.googlecode.com
http://sdet.org/?p=212
http://toast.taobao.org/
恩恩,mark下来,亲爱的要是都教会我要多久呢?
O(∩_∩)O哈哈~ 今后我教你吧。