资源描述:
《白盒测试各种覆盖方法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、aacVoidtest(intX,intA,intB)YA>1&&B=0{if(A>1&&B=0)thenbX=X/ANX=X/AIf(A=2
2、
3、X>1)thenX=X+1YA=2
4、
5、X>1}edNX=X+1语句覆盖:测试用例的输入为:沿路径ace执行;1.A=2,B=0,X=32.A=0,B=1,X=0A,B,XA>1andB=0A=2orX>1路径2,0,30,1,0TurefalseTurefalseAceabd执行路径ace就可达到“语句覆盖”标准如果第一个条件语句中的&&错误地编写成
6、
7、,上面的测试用例是不能发现这个错误的;又如第三个条件语句中X>1误写
8、成X>0,这个测试用例也不能暴露它,此外,沿着路径abd执行时,X的值应该保持不变,如果这一方面有错误,上述测试数据也不能发现它们判断覆盖:①沿路径ace执行 ② 沿路径abd执行 测试用例的输入为:①A=1,B=0,X=3(沿路径acd执行); ② A=0,B=1,X=0(沿路径abe执行) ;A,B,XA>1andB=0A=2orX>1路径2,0,30,1,0TurefalseTurefalseAceabd 上面的两个测试用例虽然能够满足条件覆盖的要求,但是也不能对判断条件进行检查,例如把第二个条件x>1错误的写成x<1、上面的测试用例同样满足了分支覆
9、盖。条件覆盖:为了达到“条件覆盖”标准,需要执行足够的测试用例使得在a点有: A>1、A≤1、B=0、B≠0等各种结果出现,以及在b点有: A=2、A≠2、X>1、X≤1等各种结果出现。现在只需设计以下两个测试用例就可满足这一标准:1.A=2,B=0,X=4 (沿路径ace执行);2.A=1,B=1,X=3 (沿路径abd执行)。3.A=3,B=0,X=1A,B,XA>1B=0A=2X>1路径2,0,4TureTureTureTureAce1,1,33,0,1FalsetureFalsetureFalsefalseTurefalseAbe
10、abdA,B,XA>1andB=0A=2orX>1路径2,0,41,1,33,0,1TureFalsetureTureTurefalseAceAbeabd条件覆盖”并不包含“判断覆盖”,如对语句IF(AANDB)THENS设计测试用例使其满足"条件覆盖",即使A为真并使B为假,以及使A为假而且B为真,但是它们都未能使语句S得以执行。判断/条件覆盖根据定义只需设计以下两个测试用例便可以覆盖8个条件值以及4个判断分支。①A=2,B=0,X=4(沿ace路) ②A=1,B=1,X=1(沿abd路径) 它测试了所有条件的取值,但
11、是实际上某些条件掩盖了另一些条件。例如:对于条件表达式(A>1&&B=0)来说,必须两个条件都满足才能确定表达式为真。如果(A>1)为假则一般的编译器不在判断是否B=0了。对于第二个表达式(A=2
12、
13、X>1)来说,若A=2测试结果为真,就认为表达式的结果为真,这时不再检查X>1)条件了。因此,采用分支/条件覆盖,逻辑表达式中的错误不一定能够查出来了。条件组合覆盖使得下面8种条件组合都能够出现A,B,XA>1B=0A=2X>1路径2,0,41,0,32,1,10,1,1TureFalseTurefalseTureturefalsefalseTureFalseTure
14、falseTureTureFalsefalseAceAbeAbdabd上面四个例子虽然满足条件组合覆盖,但并不能覆盖程序中的每一条路径,例如路径acd就没有执行,因此,条件组合覆盖标准仍然是不彻底.路径测试:下面的测试用例则可对程序进行全部的路径覆盖。测试用例通过路径A=2、B=0、X=3aceA=1、B=0、X=1abdA=2、B=1、X=1abeA=3、B=0、X=1acd2,34,58y6y7NN14253678控制流程图程序控制图5个独立路径:路径1:1,8路径2:1,2,3,6,8路径3:1,2,4,5,7,8路径4:1,2,5,7,8路径5:1,4,7
15、,8