语句覆盖:设计若干测试用例,运行被测程序,使程序中每个可执行语句至少执行一次
- 优点:可以直观的从源代码得到测试用例
- 缺点:仅仅针对程序逻辑中显式存在的语句,无法针对隐藏的条件进行测试。语句覆盖是最弱的逻辑覆盖
判断覆盖:设计若干测试用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次,判断真假值均曾被满足
- 优点:判定覆盖具有比语句覆盖更强的测试能力
- 缺点:对于由多个条件组成的判定来讲,容易忽略每个条件的取值情况,这必然会遗漏部分测试路径。判定覆盖是弱的逻辑覆盖
条件覆盖:设计若干测试用例,运行被测程序,要使每个判断中每个条件的可能取值至少满足一次
- 优点:增加了对条件判定情况的测试,增加了测试路径
- 缺点:条件覆盖不一定包含判定覆盖,条件覆盖并不考虑判定结果
判定-条件覆盖:设计足够的测试用例,使得判断条件中的所有条件可能至少执行一次取值,同时,所有判断的可能结果至少执行一次
- 优点:能同时满足判定,条件两种覆盖标准
- 缺点:判定-条件覆盖准则的缺点是未考虑条件的组合
条件组合覆盖:设计足够的测试用例,使得所有可能的条件取值组合至少执行一次
- 优点:条件组合覆盖准则满足判定覆盖,条件覆盖和判定-条件覆盖
- 缺点:线性地增加了测试用例的数量
路径覆盖:设计所有的测试用例,用来覆盖程序中的所有可能的执行路径
- 优点:这种测试方法可以对程序进行彻底的测试,比前面五种的覆盖面都要广
- 缺点:需要涉及大量,复杂的测试用例,使得工作量呈指数级增长,不见得把所有的条件组合都覆盖