这里没有软件测试的泛泛理论,只有博主的最佳实践。 博主的研究方向为静态分析和性能测试,致力于各种测试工具的引入、评估和开发。 本博的测试文章均为作者原创,转载请务必注明出处。

使用gcov的几点注意

上一篇 / 下一篇  2008-07-10 10:24:47 / 个人分类:GNU工具

昨天看到liangjz的《gcov和lcov对linux c++分析代码覆盖率》,又勾起我曾经对gcov的一点点认识。简单总结一下,今天说说使用gcov的几点注意事项:

1 gcov是基于gcc编译器的覆盖率测试的程序,它只支持gcc。

2 对于单元测试来说,Test Harness程序(包括stubs、driver)需要自己手动编写,当然测试用例(Test Suites)更需要你自己来写,gcov能够做得,只是帮助你统计覆盖信息。

3 如果你想使用gcov,在代码编写时就要有所注意,其中之一就是“每一行只有一条语句”,具体讲,什么算一条语句呢?
 ——注释不算语句
 ——声明算语句,如UNIT x; UNIT y; is not allowed
 ——混合的语句不允许 如{x =1; y=2; } is not allowd
                      while(x<MAX) { y = 2} is not allowed
 ... ...

 为什么呢?因为gcov的结果是以“行”来统计的。如果一行执行语句太多,不便于结果的分析。

4 如果你代码中使用复杂的宏,比如说这个宏展开后是循环或者其他控制结构,这样的话gcov的结果对你的帮助一般不会太大,因为gcov只在宏调用出现的那一行报告。
  如果复杂的宏看起来像函数,你应该用内联函数解决这个问题。

5 要想更好的度量进而调优你的程序的性能,gcov应该和gprof配合使用。二者协作,可以给出

  • 每一行代码执行的次数   how often each line of code executes
  • 那些代码行被执行过     what lines of code are actually executed
  • 每块代码计算时间是多少  how much computing time each section of code uses
  • 暂时总结这么多,以后想起新的东东再继续总结。


    TAG: GNU工具

    阿里巴巴QA架构组成长空间 引用 删除 qaarchitech   /   2008-07-15 21:54:41
    huior果然老到
    确实需要遵循一些标准才能做到更好
     

    评分:0

    我来说两句

    Open Toolbar