1.概述

逻辑覆盖是通过对程序逻辑结构的遍历实现程序的覆盖

2.分类-依据覆盖源程序语句的详尽程度
 
语句覆盖 SC(Statement Coverage)

判定覆盖 DC(Decision coverage)

条件覆盖 CC(Condition Coverage)

条件判定组合覆盖 CDC(Condition/ Decision Coverage)

多条件覆盖 MCC (Multiple Condition Coverage)

]修改条件判定覆盖 MCDC(Multiple Condition Decision Coverage)

3.语句覆盖

选择足够多的测试数据,使被测程序中每条语句至少执行一次;

缺点:对程序执行逻辑的覆盖很低。

4.判定覆盖

设计足够多的测试用例,使得程序中的每一个判定至少获得一次‘真’值和‘假’值,或者使得程序中的每一个取‘真’分支或取‘假’分支至少经历一次,因此又称分支覆盖
可以满足语句覆盖;

缺点:主要对整个表达式终取值进行度量,忽略了表达式内部取值。

5.条件覆盖

设计足够多的测试用例,使得每一判定语句中每个逻辑条件的可能值至少满足一次;

缺点:不能够满足判定覆盖。

6.条件判定组合覆盖

设计足够多的测试用例,使得判定中的每个条件的所有可能(真/假)至少出现一次,并且每个判定本身的判定结果也至少出现一次;

缺点:没有考虑单个判定对整体结果的影响,无法发现逻辑错误。

7.多条件覆盖

也称条件组合覆盖,设计足够多的测试用例,使得每个判定中条件的各种可能组合都至少出现一次(以数轴形式划分区域,提取交集,建立少的测试用例);满足条件覆盖一定满足判定覆盖、条件覆盖、条件判定组合覆盖;

缺点:判定语句较多时,条件组合值比较多。

8.修正条件判定覆盖

每一个程序模块的入口和出口点都要考虑至少要被调用一次,每个程序的判定到所有可能的结果值要至少转换一次;程序的判定被分解为通过逻辑操作符(and,or)连接的bool条件,每个条件对于判定的结果值是独立的。