什么是代码覆盖率?
代码覆盖率是对整个测试过程中被执行的代码的衡量,它能测量源代码中的哪些语句在测试中被执行,哪些语句尚未被执行。
代码覆盖率的指标种类
代码覆盖率工具通常使用一个或多个标准来确定你的代码在被自动化测试后是否得到了执行,常见的覆盖率报告中看到的指标包括:
函数覆盖率:定义的函数中有多少被调用
语句覆盖率:程序中的语句有多少被执行
分支覆盖率:有多少控制结构的分支(例如if语句)被执行
条件覆盖率:有多少布尔子表达式被测试为真值和假值
行覆盖率:有多少行的源代码被测试过
linux+gcov+lcov 安装
https://blog.csdn.net/zhanghui962623727/article/details/109103374
gcov案例:
https://blog.csdn.net/wangyezi19930928/article/details/26502109
test.c
#include<stdio.h>
int main(void)
{
int i,total;
total=0;
for(i=0;i<10;i++)
total+=i;
if (total!=45)
printf("failure\n");
else
printf("success\n");
return 0;
}
编译命令:
gcc -fprofile-arcs -ftest-coverage -o test test.c
gcov的选项:
(1) -a, --all-blocks
在.gcov文件中输出每个基本块(basic block)的执行次数
wjr@WPF3N0KZ3:~/coverage$ gcov -a test.c
File 'test.c'
Lines executed:87.50% of 8
Creating 'test.c.gcov'
Lines executed:87.50% of 8
(2) -b, --branch-probabilities
在.gcov文件中输出每个分支的执行频率,并有分支统计信息。
wjr@WPF3N0KZ3:~/coverage$ gcov -b test.c
File 'test.c'
Lines executed:87.50% of 8
Branches executed:100.00% of 4
Taken at least once:75.00% of 4
Calls executed:50.00% of 2
Creating 'test.c.gcov'
Lines executed:87.50% of 8
(3)-c, --branch-counts
在.gcov文件中输出每个分支的执行次数。
wjr@WPF3N0KZ3:~/coverage$ gcov -c test.c
File 'test.c'
Lines executed:87.50% of 8
Creating 'test.c.gcov'
Lines executed:87.50% of 8
-c是默认选项,其结果与"gcov test.c"执行结果相同。