第02章_基本路径法---练习

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

基本路径法案例2下例程序流程图描述了最多输入50个值(以–1作为输入结束标志),计算其中有效的学生分数的个数、总分数和平均值。开始i=1,n1=n2=0,sum=0Score[i]-1ANDn250n2=n2+1n1=n1+1,sum=sum+score[i]Score[i]0ANDscore[i]100i=i+1n10average=sum/n1average=–1返回FFFTTT12和345和6789101112123456789111012R1R2R3R4R5R6开始i=1,n1=n2=0,sum=0Score[i]-1ANDn250n2=n2+1n1=n1+1,sum=sum+score[i]Score[i]0ANDscore[i]100i=i+1n10average=sum/n1average=–1返回FFFTTT12和345和6789101112步骤1:导出程序的流图。步骤2:确定环形复杂性度量V(G):1)V(G)=6(个区域)2)V(G)=E–N+2=16–12+2=6其中E为流图中的边数,N为结点数;3)V(G)=P+1=5+1=6其中P为谓词结点的个数。在流图中,结点2、3、5、6、9是谓词结点。123456789111012R1R2R3R4R5R6123456789111012R1R2R3R4R5R6步骤3:确定基本路径集合(即独立路径集合)。于是可确定6条独立的路径:路径1:1-2-9-10-12路径2:1-2-9-11-12路径3:1-2-3-9-10-12路径4:1-2-3-4-5-8-2…路径5:1-2-3-4-5-6-8-2…路径6:1-2-3-4-5-6-7-8-2…注:“…”表示后面剩下的路径是可以选择的。原因在于存在循环结构步骤4:为每一条独立路径各设计一组测试用例,以便强迫程序沿着该路径至少执行一次。1)路径1(1-2-9-10-12)的测试用例:不满足条件2,满足条件9score[1]=60;score[2]=–1期望结果:根据输入的有效分数算出正确的分数个数n1=1、总分sum=60和平均分average=60。开始i=1,n1=n2=0,sum=0Score[i]-1ANDn250n2=n2+1n1=n1+1,sum=sum+score[i]Score[i]0ANDscore[i]100i=i+1n10average=sum/n1average=–1返回FFFTTT12和345和67891011122)路径2(1-2-9-11-12)的测试用例:不满足条件2,不满足条件9score[1]=–1;期望的结果:average=–1,其他量保持初值。开始i=1,n1=n2=0,sum=0Score[i]-1ANDn250n2=n2+1n1=n1+1,sum=sum+score[i]Score[i]0ANDscore[i]100i=i+1n10average=sum/n1average=–1返回FFFTTT12和345和67891011123)路径3(1-2-3-9-10-12)的测试用例:满足条件2,不满足条件3,满足条件9输入多于50个有效分数,即试图处理51个分数期望结果:n1=50、且算出正确的总分和平均分。开始i=1,n1=n2=0,sum=0Score[i]-1ANDn250n2=n2+1n1=n1+1,sum=sum+score[i]Score[i]0ANDscore[i]100i=i+1n10average=sum/n1average=–1返回FFFTTT12和345和67891011124)路径4(1-2-3-4-5-8-2…)的测试用例:满足条件2,满足条件3,不满足条件5score[1]=-0.5;score[2]=60,score[3]=-1;期望结果:根据输入的有效分数算出正确的分数个数n1=1、总分sum=60和平均分average=60。开始i=1,n1=n2=0,sum=0Score[i]-1ANDn250n2=n2+1n1=n1+1,sum=sum+score[i]Score[i]0ANDscore[i]100i=i+1n10average=sum/n1average=–1返回FFFTTT12和345和67891011125)路径5(1-2-3-4-5-6-8-2…)的测试用例:满足条件2,满足条件3,满足条件5,不满足条件6score[1]=101score[2]=60,score[3]=-1;期望结果:根据输入的有效分数算出正确的分数个数n1=1、总分sum=60和平均分average=60。开始i=1,n1=n2=0,sum=0Score[i]-1ANDn250n2=n2+1n1=n1+1,sum=sum+score[i]Score[i]0ANDscore[i]100i=i+1n10average=sum/n1average=–1返回FFFTTT12和345和67891011126)路径6(1-2-3-4-5-6-7-8-2…)的测试用例:满足条件2,满足条件3,满足条件5,满足条件6score[1]=60,score[2]=60;score[3]=-1;期望结果:根据输入的有效分数算出正确的分数个数n1=2、总分sum=120和平均分average=60。开始i=1,n1=n2=0,sum=0Score[i]-1ANDn250n2=n2+1n1=n1+1,sum=sum+score[i]Score[i]0ANDscore[i]100i=i+1n10average=sum/n1average=–1返回FFFTTT12和345和67891011121main()2{3intnum1=0,num2=0,score=100;4inti;5charstr;6scanf(“%d,%c\n”,&i,&str);7while(i5)8{9if(str=’T’)10num1++;11elseif(str=’F’)12{13score=score-10;14num2++;15}16i++;17}18printf(“num1=%d,num2=%d,score=%d\n”,num1,num2,score);19}案例31.导出程序控制流图程序4-2:1main()2{3intnum1=0,num2=0,score=100;4inti;5charstr;6scanf(“%d,%c\n”,&i,&str);7while(i5)8{9if(str=’T’)10num1++;11elseif(str=’F’)12{13score=score-10;14num2++;15}16i++;17}18printf(“num1=%d,num2=%d,score=%d\n”,num1,num2,score);19}791018111613,142.求出程序环形复杂度根据程序环形复杂度的计算公式,求出程序路径集合中的独立路径数目。公式1:V(G)=9-7+2,其中9是控制流图G中边的数量,7是控制流图中节点的数目。公式2:V(G)=3+1,其中3是控制流图G中判断节点的数目。公式3:V(G)=4,其中4是控制流图G中区域的数目。因此,控制流图G的环形复杂度是4。就是说至少需要4条独立路径组成基本路径集合,并由此得到能够覆盖所有程序语句的测试用例。3.确定基本路径集及设计测试用例根据上面环形复杂度的计算结果,源程序的基本路径集合中有4条独立路径:路径1:7-18路径2:7-9-10-16-7-18路径3:7-9-11-16-7…路径4:7-9-11-13-14-16-7…根据上述4条独立路径,设计了测试用例。4个测试用例作为程序输入数据,能够遍历这4条独立路径。测试用例输入期望输出执行路径istrnum1num2scoreTestCase15‘T’00100路径1TestCase24‘T’10100路径2TestCase34‘A’00100路径3TestCase44‘F’0190路径4课堂练习二使用基本路径测试方法,为以下程序段设计测试用例。voidDo(intX,intA,intB){1if((A1)&&(B=0))2X=X/A;3if((A=2)||(X1))4X=X+1;5}

1 / 17
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功