|
白盒的覆盖测试有:语句覆盖,判定覆盖,条件覆盖,判定/条件覆盖,条件组合覆盖,路径覆盖,但我都没彻底弄明白这些覆盖是怎么回事,以下是我作的一道题,麻烦大家帮我看下,哪些地方我理解错了,麻烦大家帮我指正下,谢谢大家了,我都搞糊涂了(程序的流程图,我用附件传上来)
If(x>=80 and y>=80)
{
T=1;
}else{
If(x+y>=140 and (x>=90 or y>=90) )
{
T=2;
}else{
T=3;
}
}
分别按语句覆盖,判定覆盖,条件覆盖,判定/条件覆盖,条件组合覆盖,路径覆盖设计最小测试覆盖数据
语句覆盖(即使得程序中每条语句至少被执行一次)我设计的用例是:x=90,y=90;x=50,y=50;x=50,y=90;
判定覆盖(即使得程序中每个判定至少有一次为真值,有一次为假值,即:程序中的每个分支至少执行一次。每个判断的取真、取假至少执行一次。)我的理解就是让2个if判断分别都取一次真值和假值,所以我设计用例是:x=90,y=90;x=50,y=50
条件覆盖(即使得判定中的每个条件获得各种可能的结果,即每个条件至少有一次为真值,有一次为假值)我的理解是即:让X的取值根据2个if中的条件“x>=80和x>=90”都各取一次真值和假值,同样Y的取值也根据2个if中的条件“x>=80和y>=90”各取一次真值和假值,所以我设计的用例是:x=90,y=90;x=50,y=50;另外还有个条件”x+y>=140”这个条件也分别取真和取假,所以x=70,y=70;x=70,y=50;。
所以条件覆盖设计的总的用例是:x=90,y=90;x=50,y=50; x=70,y=70;x=70,y=50;
判定/条件覆盖(即:使得判定中每个条件的所有可能结果至少出现一次,每个判定本身所有可能结果也至少出现一次。),我的理解就是前面判定覆盖和条件覆盖用例的和:
x=90,y=90(OAE);x=50,y=50;x=70,y=70;x=70,y=50;
组合条件覆盖(使得每个判定中条件结果的所有可能组合至少出现一次。
)我的理解就是2个if语句中 “and“2边的x和y取值要满足ture和false的组合,组合的可能有:ture and ture ture and false false and ture false and false这4种组合,所以我设计的用例是:
x=90,y=90;(满足2个if语句ture and ture的组合)(OAE)
x=80,y=80;(满足第一个if语句ture and ture 的组合;满足第二个if语句ture and false的组合)(OAE)
x=50,y=90;(满足第一个if语句false and ture 的组合;满足第二个if语句false and ture的组合)(OBCE)
x=90,y=30;(满足第一个if语句false and false 的组合;满足第二个if语句false and ture的组合)(OBDE)
x=50,y=50;(满足2个if语句false and false的组合)(OBCE)
路径覆盖(设计足够的测试用例,覆盖程序中所有可能的路径)
x=80,y=80(OAE); x=90,y=50(OBCE);x=50,y=50(OBDE)
注:括号里的字母表示的是所覆盖的路径,大家看附件中的流程图就明白了
以下是这道题的参考答案:
语句覆盖:x=90,y=90(OAE);x=50,y=50(OBDE);x=90,y=70(OBCE)
判定覆盖:x=90,y=90(OAE);x=50,y=50(OBDE);x=90,y=70(OBCE)
条件覆盖:x=90,y=70(OBC);x=50,y=50(OBD)
判定/条件覆盖:x=90,y=90(OAE);x=50,y=50(OBDE);x=90,y=70(OBCE);x=70,y=90(OBCE)
条件组合覆盖:x=90,y=90(OAE);x=90,y=70(OBCE);x=90,y=30(OBDE);x=70,y=90(OBCE);x=30,y=90(OBDE);x=70,y=70(OBDE);x=50,y=50(OBDE)
路径覆盖:x=90,y=90(OAE);x=50,y=50(OBDE);x=90,y=70(OBCE);x=70,y=90(OBCE);
[ 本帖最后由 taigutest 于 2009-5-5 20:59 编辑 ] |
|