我们以下面代码为例:
public static boolean Method(boolean a, boolean b) {
int x = 2;
int y = -4;
if(a)
x = y;
else
x = -2*x;
if(b)
y = 0-x;
return ((100/(x+y))>= 0);
}
语句覆盖 Statement Coverage
当我们要实现100% Statement Coverage,只需以下两个test cases:
a | b | output |
---|---|---|
T | T | E |
F | T | E |
分支覆盖 Branch Coverage
为实现100% Branch Coverage,可把每一个”if“视为两个branch(true branch 和 false branch),只要每一个true和false branch都覆盖到,就可视为100% Branch Coverage。
a | b | output |
---|---|---|
T | T | E |
F | F | F |
在实现100% Branch Coverage的同时,一定也实现了100% Statement Coverage。我们也可以把上面100% Statement Coverage的两个test cases替换成这里的两个test cases。
路径覆盖 Path Coverage
100% Path Coverage 即所有可能的分支都执行一遍,需要对多个分支进行排列组合,分支的数量成指数级别增加。可以想象成二叉树的形态。
a | b | output |
---|---|---|
T | T | E |
T | F | F |
F | T | E |
F | F | F |
同理,在实现100% Path Coverage的同时,一定也实现了100% Branch Coverage。