资源描述
Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,11/7/2009,#,基于控制流的测试充分性准则,语句覆盖和块覆盖,最基本的覆盖性准则,可执行语句,任何过程式语言编写的程序,一系列语句,组成,声明性的语句:如C语言中的#dene、变量类,型声明(intc),可执行的语句:,特别的,intcount=10;,声明性:变量类型,可执行:赋值,所有声明性语句当做可执行语句处理!,语句覆盖,测试用例集T针对(P,R)的语句覆盖率计算如,下:,|S,c,|,|S,e,|S,i,|,S,c,:所有被覆盖语句的集合,S,i,:所有不可达语句的集合(无效的语句),S,e,:软件所有语句的集合,如果T针对(P,R)的语句覆盖率是1,则称T相,对于语句覆盖准则是充分的。,基本块,具有相同的输入点和输出点的一组连续语,句,1begin,2intx,y;,3,4input(x,y);z=0;5,intz;,if(x0andy0),6,7,z=x*x;,if(y0)z=z+1;,8,9,10,11end,elsez=x*x*x;,output(z);,块覆盖,测试用例集T针对(P,R)的块覆盖率计算如下:,|B,c,|,|B,e,|B,i,|,B,c,:所有被覆盖的基本块的集合,E,i,:所有不可达块的集合(无效的基本块),E,e,:软件所有块的集合,如果T针对(P,R)的块覆盖率是1,则称T相对,于块覆盖准则是充分的。,示例,1begin,2intx,y;,3,4input(x,y);z=0;5,语句覆盖域:,S,e,=2,3,4,5,6,7,7b,9,10,intz;,7b:z=z+1,if(x0andy0),T=t:,t:,6,7,8,9,10,11end,z=x*x;,if(y0)z=z+1;,1,1,2,t,1,覆盖语句2,3,4,5,6,7,10,t,2,覆盖语句2,3,4,5,9,10,elsez=x*x*x;,|S,e,|=9,|S,c,|=8,|S,i,|=1,语句覆盖率8/(9-1)=1,output(z);,示例,start,falseintx,y;intz;input(x,y);,1,z=0;if(x0andy=0),2,3:z=z+1,true,T,1,=t,1,:,t,2,:,3,t,1,覆盖块1,2,5,t,2,覆盖块1,2,4,5,z=z+1;,|B,e,|=5,|B,c,|=4,|B,i,|=1,语句覆盖率4/(5-1)=1,z=x*x*x;,4,output(z);,5,end,判定覆盖和条件覆盖,条件,任何计算结果为真或假的表达式,就是条件。,这个表达式也称作谓词。,比如,布尔变量A,B,D,整数x,y,A,xy,AorB,(AorB)and(xy),C语言里,x、x+y、常量1和0、true、false都是条件,复合条件,简单条件,除了运算符外,不使用其他任何布尔运算符,由变量和至多一个关系运算符(,=,)构成,如A和xy),本节中,条件既包括简单条件,也包括复合条,件,判定,在程序中,任何一个条件都可在适当的上,下文环境下当作一个判定,if/while/switch,这些语句可作为判定的上下文,if和while只包含一个判定,switch可能包含多个判定,判定的输出,三种可能输出:,真,假,未定义,当条件为真或假时,判定选择其一的路径,执行;若在switch语句中,判定从多个备选,路径中择一;有时,条件的取值无法确定,,则判定的输出结果无法定义,未定义的判定,1boolfoo(inta_parameter),2while(true)/无限循环,3a_parameter=0;4,第6行的if语句中的,条件就是未定义的!,5/函数foo定义结束,6if(xyand,foo(y),)/函数foo不终止,7,compute(x,y);,耦合条件,复合条件包含多少简单条件?,如C=(AandB)or(CandA),3个:A,B,C,4个:第一个A,B,C,最后一个A,耦合条件:A的第一次和第二次出现,赋值语句中的条件,条件可以出现在赋值语句中,严格意义上,条件只有被用于适当的上下文中,才能成为判定。如if语句,扩展之,判定也可以出现在赋值语句中,比如,A=xy,通常,判定指的是if/while/switch语句中,,但在改进的条件/判定覆盖(MC/DC)中,,这一概念被扩展了,判定覆盖,测试用例集T针对(P,R)的判定覆盖率计算如,下:,|D,c,|,|D,e,|D,i,|,D,c,:所有被覆盖的判定的集合,D,i,:所有无效判定的集合,D,e,:软件所有判定的集合,如果T针对(P,R)的判定覆盖率是1,则称T相,对于判定覆盖准则是充分的。,判定覆盖,又称:分支判定覆盖,就某个判定而言,如果控制流已经遍历判,定所有可能取值(即:判定的所有输出结,果),则认为该判定被覆盖了。,if/while表达式:即软件执行覆盖了表达式为,true的情况,也处理了表达式为false的情况,switch:遍历判定的所有可能取值,示例,1begin,2,3,4,5,6,7,8,1begin,2,3,4,5,6,7,8,intx,z;,input(x);,if(x0),intx,z;,input(x);,if(x0),z=-x;,z=foo1(x);,z=-x;,z=foo1(x);,elsez=foo2(x);,output(z);,output(z);,end,end,T=t,1,:,针对语句覆盖准则和块覆,示例,盖准则,T是充分的,但T,没有检测出错误,1begin,2,3,4,5,6,7,8,1begin,2,3,4,5,6,7,8,intx,z;,input(x);,if(x0),intx,z;,input(x);,if(x0),z=-x;,z=foo1(x);,z=-x;,z=foo1(x);,elsez=foo2(x);,output(z);,output(z);,end,end,T=t,1,:,D,c,=-5,D,e,=0,0,D,i,=0,判定覆盖率1/(2-0)=0.5,不充分!,示例,1begin,2,3,4,5,6,7,8,1begin,2,3,4,5,6,7,8,intx,z;,input(x);,if(x0),intx,z;,input(x);,if(x0),z=-x;,z=foo1(x);,z=-x;,z=foo1(x);,elsez=foo2(x);,output(z);,output(z);,end,end,T=t1:,t2:,De=0,0,|Di|=0,强测试用例集,Dc=-5,3,判定覆盖率2/(2-0)=1增,1begin,2,3,4,5,6,7,8,1begin,2,3,4,5,6,7,8,intx,z;,input(x);,if(x0),intx,z;,input(x);,if(x0),z=-x;,z=foo1(x);,z=-x;,z=foo1(x);,elsez=foo2(x);,output(z);,output(z);,end,end,判定覆盖,测试用例集T针对(P,R)的判定覆盖率计算如,下:,|D,c,|,|D,e,|D,i,|,D,c,:所有被覆盖的判定的集合,D,i,:所有无效判定的集合,D,e,:软件所有判定的集合,如果T针对(P,R)的语句覆盖率是1,则称T相对于判定判覆定盖域,覆:盖程序准所有则判是定组充成分,注的意switch是多个判定,条件覆盖,测试用例集T针对(P,R)的条件覆盖率计算如,下:,|C,c,|,|C,e,|C,i,|,C,c,:所有被覆盖的,简单条件,的集合,C,i,:所有无效,简单条件,的集合,C,e,:软件所有,简单条件,的集合,如果T针对(P,R)的条件覆盖率是1,则称T相,对于条件覆盖准则是充分的。,条件被覆盖?,一个判定可由简单条件构成,也可由复合,条件构成,简单条件,若软件执行既覆盖了简单条件,为true的情况,也覆盖了简单条件为false的,情况,则称简单条件被覆盖了,复合条件:若复合条件中的每个简单条件,都被覆盖了,则认为复合条件被覆盖了,如:x0andy0,条件覆盖v.s.判定覆盖,判定覆盖:只考虑是否覆盖了所有的判定,,不管判定是简单条件或复合条件,(x0andy0)=true,(x0andy0)=false,判定覆盖,1if(x0andy0),2,z=foo(x,y),(x0)=true,(x0)=false,(y0)=true,(y0)=false,条件覆盖,示例,T=t,1,:,t,2,:,T针对语句覆盖、块覆盖、判定,覆盖是充分的,t和t的运行结果正确,条件覆盖率?,1begin,2,3,4,5,6,7,8,9end,intx,y,z;,input(x,y);,if(x0andy0),1,2,C,e,=x0,y0,C,c,=y0,|C,i,|=0,条件覆盖率为1/(2-0)=0.5,z=foo1(x,y),else,z=foo2(x,y);,output(z);,有时,根据一个简单条件是被完全覆盖/部分,覆盖/未被覆盖,分别按照2/1/0来计算,从而,使用其他公式来计算条件覆盖率,基于条件和判定的其他覆盖,(1)条件/判定覆盖,条件/判定覆盖,测试用例集T针对(P,R)的条件/判定覆盖率计,算如下:,|C,c,|D,c,|,(|C,e,|C,i,|)(|D,e,|D,i,|),C,c,/D,c,:所有被覆盖的,简单条件/判定,的集合,C,i,/D,i,:所有无效,简单条件/判定,的集合,C,e,/D,e,:软件所有,简单条件/判定,的集合,如果T针对(P,R)的条件/判定覆盖率是1,则,称T相对于条件/判定覆盖准则是充分的。,为什么提出条件/判定覆盖,条件覆盖和判定覆盖有“,一定,的互补作用”,满足条件覆盖未必满足判定覆盖,1begin,2,3,4,5,6,7,8,9end,intx,y,z;,input(x,y);,if(x0andy0),T=t:,t:,1,2,T针对条件覆盖是充分的,但,针对判定覆盖是不充分的,z=foo1(x,y),else,z=foo2(x,y);,output(z);,为什么提出条件/判定覆盖,条件覆盖和判定覆盖有“,一定,的互补作用”,满足判定覆盖未必满足条件覆盖,1begin,2,3,4,5,6,7,8,9end,intx,y,z;,input(x,y);,if(x0andy0),T=t,1,:,t,2,:,T针对判定覆盖是充分的,但针,对条件覆盖是不充分的,z=foo1(x,y),else,z=foo2(x,y);,output(z);,条件/判定覆盖,为克服单独使用条件覆盖准则或判定覆盖,准则的不足,条件/判定覆盖被提出,1begin,2,3,4,5,6,7,8,9end,intx,y,z;,input(x,y);,if(x0andy0),T=t,1,:,t,2,:,T针对条件/判定覆盖是充分的,z=foo1(x,y),else,z=foo2(x,y);,output(z);,基于条件和判定的其他覆盖,(2)多重条件覆盖,多重条件覆盖,测试用例集T针对(P,R)的多重条件覆盖率计,算如下:,|C,c,|,|C,e,|C,i,|,C,c,:所有被覆盖的,简单条件真值组合,的集合,C,i,:所有无效,简单条件真值组合,的集合,C,e,:软件所有,简单条件真值组合,的集合,如果T针对(P,R)的多重条件覆盖率是1,则称,T相对于多重条件覆盖准则是充分的。,多重条件覆盖,又称分支条件组合覆盖,为什么要提出多重条件覆盖?,条件覆盖准则的不足:每个简单条件的true和,false被覆盖并不意味着复合条件中相应简单条,件之间所有的真值组合都被覆盖了!,示例:复合条件D=(AC),AC,D,1,2,3,4,true,true,true,true,true,true,false,false,false,true,false,false,T=t,1,:,t,2,:,T针对条件覆盖(和判定覆盖)是充分的,但只覆盖了两,个真值组合,示例:复合条件D=(AC),AC,D,1,2,3,4,true,true,true,true,true,true,false,false,false,true,false,false,T=t,1,:,t,2,:,t,3,:,t,4,:,T针对条件覆盖(和判定覆盖)是充分的,覆盖了所有,真值组合,使用多重条件覆盖准则增,强测试用例集,按要求编写程序,输入整数A,B,C,根据下,表的规定计算S,AC,S,1,2,3,4,true,true,true,f1(A,B,C),f2(A,B,C),f3(A,B,C),f4(A,B,C),false,false,false,true,false,使用多重条件覆盖准则增,强测试用例集,AC,S,1,2,3,4,true,true,true,f1(A,B,C),f2(A,B,C),f3(A,B,C),f4(A,B,C),false,1begin,2,3,4,5,6,7,9end,intA,B,C,S=0;,input(A,B,C);,if(AC)S=f1(A,B,C);,if(ABandAC)S=f2(A,B,C);,if(ABandAC)S=f4(A,B,C);,output(z);,false,false,true,false,实现有错误,缺少一组真值组合!,使用多重条件覆盖准则增,强测试用例集,AC,S,1,2,3,4,true,true,true,f1(A,B,C),f2(A,B,C),f3(A,B,C),f4(A,B,C),false,1begin,2,3,4,5,6,7,9end,intA,B,C,S=0;,input(A,B,C);,if(AC)S=f1(A,B,C);,if(ABandAC)S=f2(A,B,C);,if(ABandAC)S=f4(A,B,C);,output(z);,false,false,true,false,T=t,1,:,t,2,:,T针对条件覆盖是充分,的,但判定覆盖不充分,(没覆盖第5行判定),使用多重条件覆盖准则增,强测试用例集,AC,S,1,2,3,4,true,true,true,f1(A,B,C),f2(A,B,C),f3(A,B,C),f4(A,B,C),false,1begin,2,3,4,5,6,7,9end,intA,B,C,S=0;,input(A,B,C);,if(AC)S=f1(A,B,C);,if(ABandAC)S=f2(A,B,C);,if(ABandAC)S=f4(A,B,C);,output(z);,false,false,true,false,T=t,1,:,t:,t,3,:,2,T针对条件覆盖、判定,覆盖是充分的,但没有,发现程序错误!,使用多重条件覆盖准则增,强测试用例集,1begin,T=t,1,:,2,3,4,5,6,7output(z);9,end,intA,B,C,S=0;,input(A,B,C);,if(AC)S=f1(A,B,C);,if(ABandAC)S=f2(A,B,C);,if(ABandAC)S=f4(A,B,C);,t,2,:,t,3,:,虽然程序有3个判定,6个简单条件,,真正不同的真值组合只有4种!,AC,T,AB,AC,T,AB,AC,T,1,2,3,4,true,true,true,t1,t3,true,true,true,t3,t1,t2,true,true,true,t2,false,false,false,-,false,false,true,-,false,false,true,false,false,true,t3,t1,false,t2,false,-,false,使用多重条件覆盖准则增,强测试用例集,1begin,T=t,1,:,2,3,4,5,6,7output(z);9,end,intA,B,C,S=0;,input(A,B,C);,if(AC)S=f1(A,B,C);,if(ABandAC)S=f2(A,B,C);,if(ABandAC)S=f4(A,B,C);,t,2,:,t,3,:,t:,4,只分析1个判定,而不是3个判定即可得到,针对多重条件覆盖准则充分的测试用例集,AC,T,AB,AC,T,AB,AC,T,1,2,true,true,true,t1,t3,true,true,true,t3,t1,true,true,true,t2,false,false,false,t4,3,false,true,t4,false,true,t2,false,true,t3,4,false,false,t2,false,false,t4,false,false,t1,基于条件和判定的其他覆盖,(3)改进的条件/判定覆盖,为什么需要改进的条件/判定覆盖?,多重条件覆盖要求复合条件中的所有简单,条件的真值组合都覆盖,当嵌入很多简单条件时,达到多重条件覆,盖的代价可能非常高,假设建立并执行一条测试用例需要1毫秒的时间,简单条件的数量n,测试用例数2,n,执行所有测试用例所需的时间,1,4,8,16,32,2,16,256,65536,4294967296,2毫秒,16毫秒,256毫秒,65.5秒,49.5天,MC/DC覆盖,基于改进(modied)的条件(condion)/判定,(decision)覆盖(coverage),也称MC/DC,覆盖,准则包含两部分,MC部分,:,设计测试用例使得每个简单条件,独,立地,影响复合条件的输出结果,DC部分:判定覆盖,设C1,C2,CN是软件P中的条件,作为判定的组成部分,每,Dc:所有被覆盖的判定的集合,对于条件覆盖准则是充分的。,Dc=-5,3,t2:,T针对条件/判定覆盖是充分的,实现有错误,缺少一组真值组合!,t1t2t3t4t5满足语句覆盖、块覆盖、,只分析1个判定,而不是3个判定即可得到,elsez=x*x*x;,Dc=-5,De=0,0,Di=0,R1:给定坐标x,y,z以及一个方向值d,程序必须,t3:,件Ci中简单条件的个数;,Ce:软件所有简单条件的集合,示例:复合条件C=(C,1,andC,2,)orC,3,MC充分:设计一个测试用例集,使得每个,简单条件都是独立影响C的输出结果,固定3个条件中的任两个,变化第三个,观察输出结果!,输入,输出结果,C1,C2,true,true,false,false,C3,true,false,true,false,C,true,true,true,false,固定C1C2为true,true,变化C3,true,固定C1为true,C2,true,为false,变化C3,true,示例:C=(C,1,andC,2,)orC,3,的MC充分,测试用例集,MC充分:设计一个测试用例集,使得每个,简单条件都是独立影响C的输出结果,测试用例,输入,输出结果,对C有影,C1,C2,C3,C,响的输入,1,2,3,4,5,6,true,true,true,true,true,false,false,true,true,C3,false,false,false,false,false,false,true,true,C2,false,false,true,true,true,C1,false,false,示例:C=(C,1,andC,2,)orC,3,的MC充分,测试用例集,MC充分:设计一个测试用例集,使得每个,简单条件都是独立影响C的输出结果,测试用例,输入,输出结果,对C有影,C1,C2,C3,C,响的输入,1,2,3,4,5,6,true,true,true,true,true,false,false,true,true,C3,false,false,false,false,false,false,true,true,C2,false,false,true,true,true,C1,false,false,4条测试用例就可以满足MC/DC准则!,多重条件覆盖v.s.MC/DC覆盖,简单条件数量,最少测试用例数,执行所有测试用例所需时间,多重条件覆盖,2,16,256,65536,4294967296,MC/DC覆盖,2,5,9,17,33,多重条件覆盖,2毫秒,16毫秒,256毫秒,65.5秒,49.5天,MC/DC覆盖,2毫秒,5毫秒,9毫秒,17毫秒,33毫秒,1,4,8,16,32,任何复杂的复合条件的MC/DC充分测试用例集的测试,用例个数与简单条件的个数呈线性关系,MC/DC覆盖,满足需求R的软件P的测试用例集T针对MC/DC覆盖准,则是充分的,如果对P执行T中的测试用例,满足以,下要求:,P中的每个基本块都被覆盖块覆盖,P中每个简单条件都取过真值true和false条件覆盖,P中每个判定都得出过所有可能的输出结果判定覆,盖,P中复合条件C中的每个简单条件对C的输出结果的影响,是独立的MC部分,MC/DC覆盖准则,是基于控制流的4个覆盖准则的混,合体,MC/DC覆盖,满足需求R的软件P的测试用例集T针对MC/DC覆盖准,则是充,条件,分,并,的,非,,,判,如,定,果,的,对,组,P,成,执,部,行,分,T中的测试用例,满,足以下要求,如:,:,A=(py),P中的每个基本块都被覆盖块覆盖,P中每个简单条件都取过真值true和false条件覆盖,P中每个判定都得出过所有可能的输出结果判定覆,盖,P中复合条件C中的每个简单条件对C的输出结果的影响,是独立的MC部分,MC/DC覆盖准则,是基于控制流的4个覆盖准则的混,合体,MC/DC覆盖,满足需,耦,求,合,R,条,的,件,软,(,件,如,P,(A,的,an,测,d,试,B),用,or,例,(C,集,and,T针,A)),对MC/DC覆盖,准则是充,例,满足以下要求:,它的第二次值。在这种情况下,只,分,不,的,能,,,在保,如,持,果,A,对,第,P,一,执,次,行,值,T,不,中,变,的,时,测,,,试,改,用,变,P中的需每证个明基耦本合块条都件被任覆何盖一次块出覆现盖的独,P中每立个影简响单效条果件即都可取。过真值true和false条件覆盖,P中每个判定都得出过所有可能的输出结果判定覆,盖,P中复合条件C中的每个简单条件对C的输出结果的影响,是独立的MC部分,MC/DC覆盖准则,是基于控制流的4个覆盖准则的混,合体,MC覆盖定义,设C,1,C,2,C,N,是软件P中的条件;n,i,表示条件C,i,中简单条件的,个数;e,i,表示独立影响C,i,输出结果的简单条件的个数;f,i,表,示C,i,中无效简单条件的个数(如果不能证明一个简单条件,对复合条件C,i,的输出结果有独立影响,则认为这个简单条,件是无效的),满足需求R的软件P的测试用例集T的MC覆盖率MC,C,N,e,i,MC,C,N,i1,(n,i,f,i,),i1,MC覆盖定义,设C,1,C,2,C,N,是软件P中的条件,作为判定的组成部分,每,个条件既可以是简单条件,也可以是复合条件;n,i,表示条,件C,i,中简单条件的个数;e,i,表示独立影响C,i,输出结果的简单,条件的个数;f,i,表示C,i,中无效简单条件的个数(如果不能证,明如一果个测简试单用条例件集对T的复M合C条为件1,C,i,的则输称出T相结对果于有M独C立覆影盖响准,则则,认是为充这分个的简单条件是无效的),C,满足需求R的软件P的测试用例集T的MC覆盖率MC,C,N,e,i,MC,C,N,i1,(n,i,f,i,),i1,改进的MC/DC覆盖,如果测试用例集T针对(P,R)在块覆盖、判定,覆盖、条件覆盖和MC覆盖下都是充分的,,则T针对MC/DC覆盖准则是充分的,块覆盖、判定覆盖、条件覆盖、MC覆盖,示例,需求:,R1:给定坐标x,y,z以及一个方向值d,程序必须,按照下列条件调用函数re1,re2,re3,R1.1:当(xy)and(prev=“East”)成,立时,调用re1,R1.2:当(xy)and(z*zy)and(prev=“South”)成,立时,调用re2,R1.3:当上述两条件都不成立,调用re3,R2:上面描述的调用过程必须反复执行,直到,输入的布尔变量为真,1begin,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,9end,oatx,y,z;,direcond;,stringprev,current;,booldone;,input(done);,current=“North”;,while(!done),/,条件,C1,input(d);,prev=current;current=f(d);/修改prev和current值,input(x,y,z);,if(xy)and(prev=“East”),/,条件,C2,re1(x,y);,elseif(xy)and(z*zy)and(current=“South”),/,条件,C3,re2(x,y);,else,re3(x,y);,input(done);,output(“Firingcompleted.”):,示例,需求:,R1:给定坐标x,y,z以及一个方向值d,程序必须,测试用例,按照下列,需求,条件调,done,用,d,函数re1,x,re2,r,y,e3,t1,t2,t3,t4,z,R1,R1.2,.1:当x,false,y)and(pr,10,e,15,v=“East”,3,)成,立(时,R1.1,,调用,false,re1,South,10,15,4,R1,R1.3,.2:当x,false,y)and(z,North,*zy)and(pr,10,e,15,v=“South”,5,)成,立(时,R2,,调用,true,re2,-,-,-,-,R1.3:当上述两条件都不成立,调用re3,R2:上面描述的调用过程必须反复执行,直到,输入的布尔变量为真,测试用例,需求,done,d,x,y,z,t1,t2,t3,t4,1begin,32,4,5,6,7,8while(!done),/,条件,C1,9,10,11,12,13,14,15,16,17,18input(done);19,20,tR1.2x,y,z;,false,false,East,South,North,-,10,10,10,-,15,15,15,3,4,5,-,diroaecR1.1ond;,stringR1.3prev,currenfalset;,boouldone;R2,inpt(done);,current=“North”;,true,-,input(d);,prev=current;current=f(d);/修改prev和current值,input(x,y,z);,if(xy)and(prev=“East”),/,条件,C2,re1(x,y);,elseif(xy)and(z*zy)and(current=“South”),/,条件,C3,re2(x,y);,else,re3(x,y);,t1t2t3t4满足语句覆盖、块覆盖、,判定覆盖,但不满足条件覆盖(xy),output(“Firingcompleted.”):,21end,测试用例,需求,done,d,x,y,z,t1,t2,t3,t4,t5,1begin,23,4,5,67R1cinp.1urre和t(donR1.2nt=“Ne);orth”;false,8,9input(d);,10,11,12,13,14,15,16else17,18,19,20,tR1.2x,y,z;,false,false,East,South,North,-,South,10,10,10,-,10,15,15,15,-,5,3,4,5,-,5,diroaecR1.1ond;,strinR1.3gprev,currenfalset;,boouldone;R2,true,while(!done),/,条件,C1,prev=current;current=f(d);/修改prev和current值,input(x,y,z);,if(xy)and(prev=“East”),/,条件,C2,re1(x,y);,elseif(xy)and(z*zy)and(current=“South”),/,条件,C3,re2(x,y);,re3(x,y);,input(done);,t1t2t3t4t5满足语句覆盖、块覆盖、,判定覆盖、条件覆盖,执行顺序:t1-t2-t3-t5-t4,MC/DC覆盖准则呢?,output(“Firingcompleted.”):,21end,测试用例,需求,done,d,x,y,z,t1,t2,t3,t4,t5,1begin,32,4,5,67R1inpc.1urre和t(donR1.2nt=“Ne);orth”;false,tR1.2x,y,z;,false,false,East,South,North,-,South,10,10,10,-,10,15,15,15,-,5,3,4,5,-,5,diroaecR1.1ond;,strinR1.3gprev,currenfalset;,boouldone;R2,true,C2=(xy)and(pre,e),/,条件,C1,v=“East”),测试用例10prexynt=f(d);/p修改rev=“East”prev和currenC2t值,t111,t2,1312,t3,14,t515,t41617,9,input(d);,inputtrue(x,y,z);,if(re1(xx,true,y)and,y);(z*,true,else,true,if(xy)and(falseprev=“falseEast”),/,条件,false,C2,true,true,re2(xfalse,y);,true,-,false,-,false,-,elsre3(xe-,y);,1819,20,21end,input(done);,(prev=“East”)对于C2的结果影响是独立的,但xy呢?,output(“Firingcompleted.”):,
展开阅读全文