组合条件覆盖(使得每个判定中条件结果的所有可能组合至少出现一次。
)我的理解就是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)
这个例子里共有5个条件,依据你的用例分析:
依次对应 x>=80 y>=80 x+y>=140, x>=90, y>=90
x=90,y=90; (满足第一个if语句ture and ture 的组合; 满足第二个if语句ture and ture and ture的组合)(OAE)
x=80,y=80; (满足第一个if语句ture and ture 的组合; 满足第二个if语句ture and false and false的组合)(OAE)
x=50,y=90; (满足第一个if语句false and ture 的组合; 满足第二个if语句true and false and ture的组合)(OBCE)
x=90,y=30; (满足第一个if语句false and false 的组合;满足第二个if语句false and ture and false的组合)(OBDE)
x=50,y=50; (满足第一个if语句false and false 的组合;满足第二个if语句false and false and false的组合)(OBCE)
显然,第一个if语句缺少ture and false的组合,
第二个if语句缺少 ture and ture and false;false and false and ture;false and ture and ture;
挺烦的,不知道理解的对不对,共同学习...作者: ljonathan 时间: 2009-5-1 20:51
这是好贴哦,有技术含量
需要耐心
留名学习作者: taigutest 时间: 2009-5-4 17:49
june.diny 你说的“条件组合覆盖”中缺少的那几种组合,我也考虑过,但觉得有点多余,如果针对你说的那几种组合所设计的用例最后所覆盖的路径跟我已经设计的那些用例用例所覆盖的路径重复(即:OAE,OBCE,OBDE)
这里补充的用例是针对条件组合覆盖,而不是路径哦。如果按你的说法,那么显然你已给出的两条(如下)也重复了,不是吗?条件组合覆盖和路径覆盖,要求覆盖的对象是不同的,一个是所有判定中各条件的所有可能组合,一个是程式中的所有可能路径。
x=50,y=90; (满足第一个if语句false and ture 的组合; 满足第二个if语句true and false and ture的组合)(OBCE)
x=50,y=50; (满足第一个if语句false and false 的组合;满足第二个if语句false and false and false的组合)(OBCE)作者: taigutest 时间: 2009-5-5 21:50
我想你是对的june.diny,其实我当时认为对于and这样的逻辑运算来说,ture and false 和 false and ture结果都是为假,这就好比1+2和2+1不一样的只是1和2的位置不一样,但结果都是一样的,后来我把参考答案关于条件组合覆盖的用例列成一张表后我一下就明白了
参考答案的条件组合覆盖用例:
x>=90 and y>=90 x+y>=140 and (x>=90 or x>=90)
x=90,y=90(OAE) ture and ture ture and ( ture or ture)
x=90,y=70(OBCE) ture and false ture and ( ture or false)
x=90,y=30(OBDE) ture and false false and ( ture or false)
x=70,y=90(OBCE) false and ture ture and ( false or ture)
x=30,y=90(OBDE) false and ture false and ( false or ture)
x=70,y=70(OBDE) false and false ture and ( false or false)
x=50,y=50(OBDE) false and false false and ( false or false)
就如条件组合覆盖的概念所说:“使得每个判定中条件结果的所有可能组合至少出现了一次”!接着我用同样的方法来看判定覆盖时,
参考答案判定覆盖用例:
x>=90 and y>=90 x+y>=140 and (x>=90 or x>=90)
x=90,y=90(OAE) 真: ture and ture 真:ture and ( ture or ture)
x=50,y=50(OBDE) 假: false and false 假:false and ( false or false)
x=90,y=70(OBCE) 真: ture and ture 真:ture and ( ture or false)
同样按“判定覆盖” 的概念来理解“即使得程序中每个判定至少有一次为真值,有一次为假值,即:程序中的每个分支至少执行一次。每个判断的取真、取假至少执行一次。”
我发现当把这些用列表的形式列出来的时候,理解起来就容易多了,我现在算是基本上明白这几种覆盖用例怎么来设计了,其实很简单,就是把这几种覆盖的概念记住,然后像上面那样列成表,按概念所描述的那样按照相应的组合填上去用例也就出来了,呵呵~~作者: zhuxia 时间: 2009-5-15 17:41
照楼上 x>=90 and y>=90 x+y>=140 and (x>=90 or x>=90)
x=90,y=90(OAE) 真: ture and ture 真:ture and ( ture or ture)
x=50,y=50(OBDE) 假: false and false 假:false and ( false or false)
x=90,y=70(OBCE) 真: ture and ture 真:ture and ( ture or false)
这样设计出来的用例会有重复吧,或者是我没看懂,2个真假,组合起来也就4个,真假,假真,真真,假假。4个用例就搞定了啊,我看这个图,我的理解你想设计了6个用例吧作者: 窗边的小豆豆 时间: 2009-6-3 15:26
@taigutest
应该是:
x>=80 and y>=80 x+y>=140 and (x>=90 or x>=90)
x=90,y=90(OAE) 真: true and true --
x=50,y=50(OBDE) 假: false and false 假:false and ( false or false)
x=90,y=70(OBCE) 假: true and false 真:true and ( true or false)