¶定义
code coverage
测试过程中被执行的源代码占全部源代码的比例,用于评估代码质量。
可以基于此寻找代码中没有被测试覆盖的地方,并进一步添加测试以提升覆盖率。(属于白盒测试)
- 函数覆盖:多少函数被调用
- 语句覆盖:多少语句被执行
- 分支覆盖:多少分支被执行(分支条件取真和假)
- 条件覆盖:多少子布尔表达式被取值为真和假
- 路径覆盖:覆盖程序中所有可能的路径组合
- 行覆盖:多少行源代码被测试
¶C++工具
¶圈复杂度
用于评估代码的复杂度,在数量上表现为独立路径的条数。
圈复杂度越大,说明代码的判断逻辑复杂,难于理解、测试和维护。
圈复杂度在10以内是最合理的,在10-20之间属于可接受的范围。
鼓励大量小函数,而不是一个冗长的大函数。
计算方式有两种:
-
点边计算法:将程序表示为控制流图,节点表示一个顺序的基本块,边表示控制流转移关系;则$V(G) = E - N + 2$。
-
节点判断法:$V(G) = P + 1$,其中$P$是判定节点个数。
1 | pip install lizard |