去年换工作到一家做交易的公司,动辄都是成百上千万的交易额,核心系统使用C语言开发的,但是没有自动化测试工具。也许上家公司GTest给惯坏了,没有自动化测试总感觉像是在裸奔……于是,利用零散的空余时间,带着一个外包在已有的手工测试工具的基础上,整了一个自动化测试工具出来。工具做好之后,补充了一定数量的测试用例后,开始考虑覆盖率的问题。网上搜索一番,原来gcc自带的gcov/lcov工具包已经实现了覆盖率生成,下面就是一番实践后的一个小结。
1、编译选项:-fprofile-arcs -ftest-coverage
使用上述编译选项编译、链接应用程序。其中,‘ftest-coverage’用以生成.gcno文件,‘fprofile-arcs’用以后续执行应用程序时生成.gcda文件。
2、执行应用程序生成.gcda文件
3、执行'gcov *.c'命令生成.gcov文件
gcov使用前面两步生成的.gcno文件和.gcda文件生成.gcov文件,如有嵌套子目录,则每个目录下的源文件都需要生成.gcov文件。
其实,.gcov文件已经包含了代码的覆盖信息,但不是图形化的数据,看起来不直观,所以需要使用lcov工具以生成图形化的统计数据。