假设我们有以下待测试程序 :
def func(a, b, x):
if a > 1 and b == 0:
x = x / a
if a == 2 or x > 1
x = x + 1
return x
语句覆盖
语句覆盖:每条语句至少执行一次。
使用此准则测试上述函数, 只需要遍历路径 ace, 即可使得所有语句执行一次。
对应测试用例为 : a = 2, b = 0, x = 4。
判定覆盖
判定覆盖:又叫分支覆盖, 每个判定的所有可能结果至少出现一次。
只需要涵盖路径 ace 和 abd, 或 acd 和 abe, 就可以使得两个判定为 "真" 和 "假" 的分支都执行一次。
前者 :
a = 2, b = 0, x = 4->ace√ √a = 0, b = 1, x = 1->abd× ×
后者 :
a = 2, b = 0, x = 1->acd√ ×a = 2, b = 1, x = 2->abe× √
条件覆盖
条件覆盖:每个条件的所有可能结果至少执行一次。
第一个判断的所有条件的可能取值情况 : 或 , 或 。
第二个判断的所有条件的可能取值情况 : 或 , 或 。
-
a = 1, b = 0, x = 3: 触发 和 和 和 。(出于简单起见, 这里不考虑逻辑中断的发生) -
a = 2, b = 1, x = 1: 触发 和 和 和 。
组合覆盖
组合覆盖:每个判定中的所有可能的条件结果的组合,以及所有的入口点都至少执行一次。(注意“可能”二字,因为有些组合的情况难以生成。)
为了满足组合条件覆盖的测试用例, 必须覆盖以下八种组合。
a = 2, b = 0, x = 4: 覆盖 1 + 5a = 2, b = 1, x = 1: 覆盖 2 + 6a = 1, b = 0, x = 2: 覆盖 3 + 7a = 1, b = 1, x = 1: 覆盖 4 + 8