逻辑覆盖法
语句覆盖
设计测试用例,使得程序中每条语句至少被执行依次。
语句覆盖率 = 至少被执行依次的语句数量 / 可执行的语句总数
例如:
- 案例代码中共有4条可执行语句
- 设计测试用例执行了3条,语句覆盖率为 3/4 = 75%
注意:
- 在六种逻辑覆盖标准中,语句覆盖标准是最弱的。
- 语句覆盖不能准确的判断运算中的逻辑关系错误。
判定覆盖
判定覆盖:也叫分支覆盖;设计测试用例,使得程序中的每个判断的“真”和“假”都至少被执行一次。即:程序中的每个分支至少执行一次。
语句覆盖率 = 每个判断的真价值至少出现一次 / 判定结果的总数
例如:
- 代码中有判定2个,判定结果4个
- 设计测试用例执行了3个分支,分支覆盖率为 3/4=75%
注意:
- 只要满足了判定覆盖标准就一定满足了语句覆盖标准。
- 判定覆盖会忽略条件中取或(or)的情况。
条件覆盖
设计测试用例,使得判定中的每个条件至少有一个取真值,有一次取假值。
这里所说的每一个条件:
假设 一个判断是 a>0 && b>0,则满足a>0取真值和假值以及b>0取真值和假值。
条件覆盖率 = 每个条件真假值至少出现一次 / 条件结果的总数
例如:
- 案例代码中有判定2个,条件3个,条件结果6个
- 设计测试用例执行了5个条件结果,条件覆盖率为 5/6 = 83%
注意:
- 条件覆盖比判定覆盖,增加了对判定中所有条件的测试。
- 条件覆盖并不能保证判定覆盖
判定条件覆盖
设计测试用例,使得被测试程序中的每个判断本身的判定结果(真假)至少满足一次。同时,每个逻辑条件的可能值(真假)也至少满足一次。即同时满足100%判定覆盖和100%条件逻辑覆盖的标准。
就是 判定覆盖 + 条件覆盖
判定条件覆盖率 = 每个判定真假值和条件真假值至少出现一次 / (判定结果的总数 + 条件结果的总数)
例如:
- 代码中有判定2个,条件3个,判定结果4个,条件结果6个
- 设计测试用例执行了3个判定结果,5个条件结果,判定条件覆盖率为:(3 + 5) / (4 + 6) = 80%
注意:
- 满足判定条件覆盖标准一定能够满足条件覆盖、判定覆盖和语句覆盖。
- 判定调价覆盖会忽略条件中取 或(or)的情况。
条件组合覆盖
设计测试用例,使得被测程序中的每个判定中条件结果的所有可能组合至少执行一次。
条件组合覆盖率 = 条件组合至少出现一次的数量 / 条件组合的总数
例如:
- 代码中有判定2个,条件3个(判定1有2个条件,判定2有1个条件),判定1的条件组合为4个,判定2的条件组合为2个
- 设计测试用例执行了5个条件组合,条件组合覆盖率为: 5 / (4+2) = 83%
注意:
- 条件组合覆盖能满足判定覆盖、条件覆盖、判定条件覆盖,也就包括语句覆盖。
- 条件组合覆盖不能保证所有路径被执行
路径覆盖
设计测试用例,覆盖程序中所有可能的路径
路径覆盖率 = 至少被执行过一次的路径数 / 总的路径数
基本路径测试法
在程序控制流图的基础上,通过分析程序的环路复杂性,导出基本可执行路径集合,从而设计测试用例。
基本路径测试法步骤:
- 根据代码画出程序控制流图
- 计算程序的环路复杂度
- 导出可执行路径
- 设计测试用例
根据代码画出程序控制流图
计算环路复杂度
- 流图中区域的数量对应于环形的复杂度
- V(G) = E - N + 2
- V(G) = P + 1,P是判定节点的数量