资源描述:
《控制结构测试.ppt》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、控制结构测试1.基本路径测试基本路径测试是TomMcCabe提出的一种白盒测试技术。使用这种技术设计测试用例时,首先计算程序的环形复杂度,并用该复杂度为指南定义执行路径的基本集合。流图为了突出表示程序的控制流,人们通常使用流图(也称为程序图)。所谓流图实质上是“退化了的”程序流程图,它仅仅描绘程序的控制流程,完全不表现对数据的具体操作以及分支或循环的具体条件。在流图中用圆表示结点,一个圆代表一条或多条语句。程序流程图中的一个顺序的处理框序列和一个菱形判定框,可以映射成流图中的一个结点。流图中的箭头线称为边,它和程序流
2、程图中的箭头线类似,代表控制流。当过程设计中包含复合条件时,应该把复合条件分解为若干个简单条件,每个简单条件对应流图中一个结点。例子:PROCEDUREaverage;/*这个过程计算不超过100个在规定值域内的有效数字的平均值;同时计算有效数字的总和及个数。*/INTERFACERETURNSaverage,total.input,total.valid;INTERFACEACCEPTSvalue,minimum,maximum;TYPEvalue[1…100]ISSCALARARRAY;TYPEaverage,t
3、otal.input,total.valid;minimum,maximum,sumISSCALAR;TYPEiISINTEGER;1:i=1;total.input=total.valid=0;sum=0;2:DOWHILEvalue[i]<>-9993:ANDtotal.input<1004:incrementtotal.inputby1;5:IFvalue[i]>=minimum6:ANDvalue[i]<=maximum7:THENincrementtotal.validby1;sum=sum+value[i
4、];8:ENDIFincrementiby1;9:ENDDO10:IFtotal.valid>011:THENaverage=sum/total.valid;12:ELSEaverage=-999;13:ENDIFENDaverage程序流程图如右图所示使用基本路径测试技术设计测试用例的步骤如下:第一步,根据过程设计结果画出相应的流图。求平均值过程的流图第二步,计算流图的环形复杂度。环形复杂度定量度量程序的逻辑复杂性。描绘程序控制流的流图之后,可以用下述3种方法中的任何一种来计算环形复杂度。(1)流图中的区域数等于环
5、形复杂度。(2)流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。(3)流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目。可计算得,上例的复杂度为6。第三步,确定线性独立路径的基本集合。所谓独立路径是指至少引入程序的一个新处理语句集合或一个新条件的路径,用流图术语描述,独立路径至少包含一条在定义该路径之前不曾用过的边。使用基本路径测试用例时,程序的环形复杂度决定了程序中独立路径的数量。由该理论,图5.6中存在6条独立路径,它们分别为:1-2-10-11-131-2-10-
6、12-131-2-3-10-11-131-2-3-4-5-8-9-2-...1-2-3-4-5-6-8-9-2-...1-2-3-4-5-6-7-8-9-2-...第四步,设计可强制执行基本集合中每条路径的测试用例。应该选取测试数据使得在测试每条路径时都适当地设置好了各个判定结点的条件。一旦执行完所有测试用例,就可以确保程序中所有语句都至少被执行了一次,而且每个条件都分别取过true值和false值。2.条件测试用条件测试技术设计出的测试用例,能够检查程序模块中包含的逻辑条件。关系表达式的形式如下:E1<关系算符>E
7、2其中,E1和E2是算术表达式,而<关系算符>是下列算符之一:“<”,“≤”,“=”,“≠”,“>”或“≥”。复合条件由两个或多个简单条件、布尔算符和括弧组成。布尔算符有OR(“
8、”),AND(“&”)和NOT。不包含关系表达式的条件称为布尔表达式。条件成分的类型包括布尔算符、布尔变量、布尔括弧(括住简单条件或复合条件)、关系算符及算术表达式。aPoint.SecondPoint=="n"
9、
10、aPoint.SecondPoint=="ns"
11、
12、aPoint.SecondPoint=="nr"
13、
14、aPoint.Seco
15、ndPoint=="v"
16、
17、aPoint.SecondPoint=="vn"
18、
19、aPoint.SecondPoint=="b“intCount>1&&strSplit[i]!=strLabel(strTemp=="<"
20、
21、strTemp=="【")&&i22、
23、strTem