(1)语句覆盖法 语句覆盖是企图用足够多的测试用例,使程序中的每个语句都执行一遍,以尽可能多的发现程序中的错误。这里,言外之意是,即使第个语句都执行一遍,也还不一定能够发现全部的错误。(2)分支覆盖法 分支覆盖也称为判定覆盖,它要求通过足够的测试用例使每个判定的每个分支至少通过一次。分支覆盖准则比语句覆盖准则严密了一些,但仍然不够充分。因为一个判定中往往包含多个条件,而用分支覆盖并不一定能将每个条件都测试一次。(3)条件覆盖法 条件覆盖是通过执行充足的测试用例,使每个判定中的每个条件都至少使用一次。例如:{if(a > 1 && b == 0) x /= a;if(a == 2 || x > 1) x += 1;}对于上面的语句有以下四个条件:1、a > 1 2、b == 0 3、a == 0 4、x > 1如果设计下面两组测试用例,就可将每个条件都使用一次:A:a = 2, b = 1, x = 1B:a = 1, b = 0, x = 3(4)组合条件覆盖法 条件覆盖似乎比判定覆盖更好,但实际上未必这样。因为它有时候不能满足组合条件,也就是说,条件覆盖有可能连分支覆盖准则也满足不了。为此,人们又提出了一种更强的准则--组合条件覆盖准则:执行充足的测试用例,使判定中条件的各种可能组合至少出现一次。对于上面的例子:第一个判定有以下4种条件组合:1、a > 1 && b == 02、a > 1 && b <> 03、a <= 1 &&b == 04、a <= 1 && b <> 0第二个判定也有以下4种条件组合:5、a == 2 && x > 16、a <> 2 && x > 17、a == 2 && x <= 18、a <> 2 && x <= 1下面的4个用例就可以覆盖上述8种可能的组合结果:A:a = 2, b = 0, x = 4(覆盖1与5)B:a = 2, b = 1, x = 1(覆盖2与7)C:a = 1, b = 0, x = 2(覆盖3与6)D:a = 1, b = 1, x = 1(覆盖4与8)

评论