文章目录
- 概述
- 粗粒度的覆盖
- 细粒度的覆盖
1.概述
单元测试覆盖率是指业务代码被单测测试的比例和程度,它是衡量单元测试好坏的一个重要的指标。各类覆盖率指标从粗到细、从弱到强排列如下。
2.粗粒度的覆盖
- 类覆盖
指类中只要有方法或变量被测试用例调用或执行到,那么就说这个类被测试覆盖了。 - 方法覆盖
只要在测试用例执行过程中,某个方法被调用看了,则无论执行了该方法中的多少行代码,都可以认为该方法被覆盖了。
注意:类覆盖率和方法覆盖率达到100%。并不能说明测试用例写得很好了,因为这个标准远远不够。
3.细粒度的覆盖
- 行覆盖(Line Coverage)
也称为语句覆盖,用来度量可执行的语句是否被执行到。
行覆盖率 = 执行到的语句行数/总的可执行语句行数
行覆盖率强度并不高(例子见码出高效P272) - 分支覆盖(Branch Converage)
也称为判定覆盖,用来度量程序中每一个判定分支是否都被执行到。
分支覆盖率 = 代码中被执行到的分支数/代码中所有分支总数 - 条件判定覆盖(Condition Decision Coverage)
其要求设计足够的测试用例,能够让判定中每个条件的所有可能情况至少被执行一次,同时每个判断本身的所有可能结果也至少被执行一次。
例如:(a==1 && b==2 || c==3)这个判断包含了3种条件,即a==1、b==2和c==3.(例子见码出高效P272)
注意: 分支覆盖只要求覆盖分支所有可能的结果,可以看出它是条件判定覆盖的一个子集。
- 条件组合覆盖(Multiple Condition Converage)
指判定中所有条件的各种组合情况都出现至少一次。 - 路径覆盖(Path Converage)
路径覆盖要求能够测试到程序种所有可能的路径。(例子见码出高效P274)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。