软件工程中的逻辑覆盖

请问“满足路径覆盖是否一定满足条件覆盖?”请说明理由。
“满足路径覆盖不一定满足条件组合覆盖。”请举例说明之。
“满足条件组合覆盖不一定满足路径覆盖。”请举例说明之。

(1)否。因为条件覆盖是取每个断定条件的真值或假值,而路径覆盖只是把每条路径都走一遍就可以,所以满足了路径覆盖不一定是包含了条件覆盖的所有情况,有时候并不一定把所有的条件的值都取到。
(2)if ((A > 1)&&( B == 0))

{   

    X  = X / A;

}

    if ((A == 2) || ( X > 1))

 {   

    X = X + 1;

}

对于路径覆盖,测试用例可以为:

A=2,B=0,X=4

A=3,B=0,X=3

A=1,B=0,X=2

A=1,B=1,X=1

但是A>1,B≠0,A=2,X≤1条件下的情况没有,无法满足条件组合覆盖。

对于条件组合覆盖,需要两个if中的条件每种组合都出现的话,测试用例可以如下:

A=2,B=0,X=4

A=2, B=1,X=1

A=1,B=0,X=2

A=1,B=1,X=1

但是第一个if为真,第二个if为假的情况没有出现,无法满足路径覆盖。