代码覆盖率检测---> Code Coverage
前几天我特意搞了一下,把网上所有的主流的C++ Code Coverage工具都大概玩了一遍。。发现有好多的trick和技巧。。很多特性都搞不出来。。不过。。发现一个现象:很多很好用的软件都是收费的。。开源的特性没那么多。。或者很粗糙。。这个是必然情况啊!呵呵。。不过还是挺好用的。。有几个测试没有足够的时间架构起来。。连测试这些已有的都浪费我好几天。。最后在我的电脑上搭了一个TestCocoon,杯具了。。我不是很清楚命令行的工作流程。。或者说我对Linxu一塌糊涂。。。。这个学不好还真不行啊。。Windows的Bash也学的不好。。唉。。这个慢慢来。。我每天都要进步!!!!
Code Coverage 是指被测试执行过的代码分支数。
对于编译式语言的代码覆盖率计算,首先要在以编译的字节码上进行标记处理,(TestCoCoon就是这么搞的),然后开始在被标记的代码上进行整套测试,来测量那些代码被执行过了。测量的详细结果会先以一种中间形式保留下来,并最终生成报告。这个报告会显示行和分支的测试覆盖率。
对于动态语言,这个过程会有细微的差别,但最终结果都是一样的:得到一个代码覆盖率报告。
这个数据时非常关键的,因为它会告诉你那些代码没有被测试执行过。测试是软件严谨性的保证,没有被测试过的代码,往往是错误最可能存在的地方。如果你是TDD的忠实拥护者,那你的所有代码都会被自动测试到-------当然,一些难以考虑到的意外情况除外。
此外两条:
1 所有的新代码都要达到100%的单元测试覆盖率
2 每当修复一个错误的时候,都要为他添加相应的测试。