统计C++服务的接口测试用例覆盖率
上一篇 /
下一篇 2019-03-26 11:38:06
背景
最近想统计一个c++的
server 的http接口的对代码的覆盖率情况,但之前做的覆盖率统计都是Unittest的覆盖率,而且一般都是统计非daemon程序的,查了一下,daemon也可以使用gcov+lcov来生成覆盖率信息,简单
记录了一下;
准备
damon进程与可执行进程不同的地方是需要**一个gcov_flush的触发条件,一般通过**信号量的方式实现,例子是ctrl+C时触发__gcov_flush;
extern "C" void __gcov_flush(); void cs(int n) { signal(SIGINT, cs); if(n==SIGINT) { __gcov_flush(); std::cout<<"\n你按下了ctrl+c"<<std::endl; } } |
然后在main函数的开始处**;
void cs(int n); std::cout<<"ab"<<std::endl; signal(SIGINT, cs); |
编译
在MakeFile里的编译选项设置处增加参数:
-lgcov -fprofile-arcs -ftest-coverage; set(CMAKE_CXX_FLAGS_DEBUG “${CMAKE_CXX_FLAGS_DEBUG} -lgcov -fprofile-arcs -ftest-coverage”) cmake -DCMAKE_BUILD_TYPE=Debug make |
会在CMakeFiles里产生相关工程的.gcno和.o文件
运行
运行程序,后执行接口测试case,按下CTRL+C 触发gcov_flush方法,生成.gcda文件;
当然要做成自动化触发的话可以在执行完接口测试case后,使用kill -SIGINT [pid] 来给进程一个ctrl+C的信号量
生成覆盖率统计文件info
使用lcov工具生成,可以yum安装;
lcov –directory . –capture –output-file demo.info
–directory . 会将当前目录下(包括文件夹内)的gcda文件一起打包进info
生成html
使用genhtml工具通过覆盖率文件生成展示页面
使用genhtml –o result demo.info
会生成名为result的文件夹,文件夹内包含index.html,可打开查看具体覆盖率统计
点击函数名,可查看具体函数及行覆盖情况
收藏
举报
TAG:
软件测试技术
测试用例