您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 第08课--白盒测试路径分析测试(基本路径测试)..
把程序看成装在一个透明的白盒子里,程序的结构和处理呈现过程完全可见,按照程序的内部逻辑测试程序,以检查程序中的每条通路是否都能按照预先要求正确工作。第3章白盒测试方法2路径分析测试3分支条件测试、循环测试4其它测试类型5主要内容综合测试实例6黑盒测试与白盒测试1逻辑覆盖测试白盒测试的常用方法逻辑覆盖路径分析测试循环、条件分支…基本路径测试相关概念1.基本路径本质上是从程序入口到出口的一些通路。之所以称其为基本路径,原因在于可以通过对基本路径进行连接或者重复操作得到程序中的其它路径2.控制流图基于代码结构构造的有向图,可用于描述程序的控制结构测试思想根据程序的控制流图找出一个模块所需测试的基本路径,根据这些基本路径设计构造相应的测试用例基本路径测试设计步骤1.根据模块逻辑构造控制流图(FlowGraph)2.计算控制流图的环复杂度(CyclomaticComplexity)3.列出包含起始节点和终止节点的基本路径4.检查一下列出的基本路径数目是否超过控制流图的环复杂度5.设计覆盖这些基本路径的测试用例控制流图说明控制流图是由节点和边组成的有向图1.节点代表了代码或程序流程图中矩形框中所表示的处理,菱形表示的判断处理以及判断处理流程相交的汇合点,在图中用标有编号的圆圈表示2.边表明了控制的顺序,在图中用有向箭头表示。控制流图三种逻辑结构的控制流图顺序条件循环控制流图如果判定中的条件表达式是复合条件时,即条件表达式是由一个或多个逻辑运算符(OR,AND,NAND,NOR)连接的逻辑表达式,则需要改复合条件的判定为一系列只有单个条件的嵌套的判定。例如对应图(a)的复合条件的判定,应该画成如图(b)所示的控制流图。条件语句ifaORb中条件a和条件b各有一个只有单个条件的判定结点。环复杂度含义用V(G)表示用来衡量一个模块判定结构的复杂程度,在数量上表现为独立的路径条数,是需要测试的基本路径数目的上限。环复杂度计算公式1.V(G)=闭合区域的数目由节点和边围成的封闭区域•这些封闭区域一定是不可再分的•包括周边的区域2.V(G)=二值判定节点个数+1.3.V(G)=边的数目-节点的数目+2环复杂度环复杂度闭合区域的数目=5二值判定节点个数+1=4+1=5边的数目-节点的数目+2=16-13+2=5基本路径实用的定义一条路径是基本路径如果:1.是一条从起始节点到终止节点的路径.2.至少包含一条其它基本路径没有包含的边.(至少引入一个新处理语句或一个新判断的程序通路.)注意:对于循环而言,基本路径应包含不执行循环和执行一次循环体。基本路径基本路径1.1-2-112.1-2-3-4-5-6-10-2-113.1-2-3-4-5-7-10-2-114.1-2-3-8-9-10-2-115.1-2-3-8-10-2-11基本路径测试方法举例基本路径测试用例的设计voidsort(intirecordnum,intitype)1{2intx=0;3inty=0;4while(irecordnum--0)5{6if(itype==0)7break;8else9if(itype==1)10x=x+10;11else12y=y+20;13}14}基本路径测试方法举例1.依据程序内部逻辑画出相应的流图476149101213R1R2R3R4基本路径测试方法举例2.计算流图的环形复杂度(McCabe定义的程序复杂性度量值)•计算环路复杂度的三种方法–环路复杂度=边数-节点数+2=10-8+2=4–环路复杂度=判断节点数+1=3+1=4–环路复杂度=区域的数目=4•可以计算上图所示流图的环形复杂度为4基本路径测试方法举例3.确定独立路径组成的基本路径集合•程序的环形复杂度=程序中独立路径的数量–路径1:4→14–路径2:4→6→7→14–路径3:4→6→9→10→13→4→14–路径4:4→6→9→12→13→4→144.设计出可强制执行基本集合中每条路径的测试用例输入数据预期输出测试用例1irecordnum=0itype=0x=0y=0测试用例2irecordnum=1itype=0x=0y=0测试用例3irecordnum=1itype=1x=10y=0测试用例4irecordnum=1itype=2x=0y=20案例2——三角形问题使用基本路径设计测试用例方法推导三角形问题的测试用例控制流图81-8687889299-10093102959697-9889-9094环复杂度环复杂度闭合区域的数目=5二值判定节点个数+1=4+1=5边的数目-节点的数目+2=15-12+2=581-8687889299-10093102959697-9889-9094基本路径和测试用例(1)基本路径和测试用例1.81-86-87-88-92-93-95-97-98-102相应的测试用例:测试输入=(68,68,56)预期结果=这是一个等腰三角形!2.81-86-87-88-92-93-95-96-102相应的测试用例:测试输入=(68,60,56)预期结果=这是一个不等边三角形!81-8687889299-10093102959697-9889-9094基本路径和测试用例3.81-86-87-88-92-93-94-102相应的测试用例:测试输入=(68,68,68)预期结果=这是一个等边三角形!4.81-86-87-89-90-92-99-100-102相应的测试用例:测试输入=(68,8,60)预期结果=这不是一个三角形!基本路径和测试用例(2)81-8687889299-10093102959697-9889-9094基本路径与环复杂度1.81-86-87-88-92-99-100-1022.81-86-87-88-92-93-95-97-98-1023.81-86-87-88-92-93-95-96-1024.81-86-87-88-92-93-94-1025.81-86-87-89-90-92-93-94-10281-8687889299-10093102959697-9889-9094并不是所有的基本路径都对应程序的可执行通路,都可作为设计测试用例的依据。之所以存在这种情况,是因为控制流图中并不包含程序的处理信息,无法明确前后节点之间的逻辑关系。基本路径与环复杂度结论如果基本路径必须是可行的,则逻辑关系会压缩基本路径集合数量,因此环复杂度是包含起始点和终止点的基本路径数目的上限SWPU案例分析3——已知程序代码,根据基本路径测试法,导出测试用例根据基本路径测试法生成测试用例,确保基本路径集中每条路径的执行。以一个求平均值的过程averagy为例,说明测试用例的设计过程。用PDL语言描述的averagy过程如下:PROCEDUREaveragy;*Thisprocedurecomputestheaveragyof100orfewernumbersthatlieboundingvalues;italsocomputesthetotalinputandthetotalvalid.INTERFACERETURNSaveragy,total.input,total.valid;INTERFACEACCEPTSvalue,minimum,maximum;TYPEvalue[1:100]ISSCALARARRAY;TYPEaveragy,total.input,total.valid,minimum,maximum,sumISSCALAR;TYPEiISINTEGER;i=1;total.input=total.valid=0;sum=0;DOWHILEvalue[i]-999ANDtotal.input100incrementtotal.validby1;IFvalue[i]=minimumANDvalue[i]=maximumTHENincrementtotal.valid[i];ELSEskip;ENDIFIncrementiby1;ENDDOIFtotal.valid0THENaveragy=sum/total.valid;ELSEaveragy=-999;ENDIFENDaveragy(1)由过程描述导出控制流图在上面给出的过程中,针对要映射为对应控制流图中一个结点的PDL语句或语句组,标记上用数字表示的标号。加了标号的PDL程序如下(只有可执行语句部分):对应的控制流图如图所示:该图所有的6条路径是:path1:1-2-10-11-13path2:1-2-10-12-13path3:1-2-3-10-11-13path4:1-2-3-4-5-8-9-2-10-11-13……path5:1-2-3-4-5-6-8-9-2-10-12-13……path6:1-2-3-4-5-6-7-8-9-2-3-10-11-13……path4、path5、path6后面的省略号(……)表示在控制结构中以后剩下的路径是可选择的。在很多情况下,标识判断结点,常常能够有效地帮助导出测试用例。在上例中,结点2、3、5、6和10都是判断结点。满足上例基本路径集的测试用例是:path1:输入数据:value[k]=有效输入,限于k<i(i定义如下)value[i]=-999,当2≤i≤100预期结果:n个值的正确的平均值、正确的总计数。注意:不能孤立地进行测试,应当作为路径4、5、6测试的一部分来测试。path2:输入数据:value[1]=-999预期结果:平均值=-999,总计数取初始值。path3:输入数据:试图处理101个或更多的值,而前100个应当是有效的值。1相同。path4:输入数据:value[i]=有效输入,且i<100value[k]<最小值,当k<i时n个值的正确的平均值,正确的总计数path5:输入数据:value[i]=有效输入,且i<100value[k]>最大值,当k≤i时n个值的正确的平均值,正确的总计数path6:输入数据:value[i]=有效输入,且i<100预期结果:n个值的正确的平均值,正确的总计数每个测试用例执行之后,与预期结果进行比较。如果所有测试用例都执行完毕,则可以确信程序中所有的可执行语句至少被执行了一次。白盒测试用例设计作业使用逻辑覆盖和基本路径方法完成教材P88页第7题:(1)分别以语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖方法设计测试用例,并写出每个测试用例的执行路径。(2)画出程序的控制流图。用基本路径测试方法设计测试用例。白盒测试用例设计练习入口A2ANDB==0A==4ORX1X=X/AX=X+1返回FFTT012345T1T2T3T4TATB0543-21-23-11-12白盒测试用例设计练习1.要满足语句覆盖,执行路径通过:1→2→3→4→5即可。可设计测试用例:A=4B=0X=8(路径1→2→3→4→5)2.要满足判定覆盖,两个判定表达式的取真和取假分支都要走到,执行路径通过:1→3→5和1→2→3→4→5即可:1:A=4B=0X=8(路径1→2→3→4→5覆盖条件:TATB)2:A=1B=1X=1(路径1→3→5覆盖条件:~TA~TB)白盒测试用例设计练习3.要满足条件覆盖,每个判定中的每个条件的可能取值都要取到,即:T1T2T3T4~T1~T2~T3~T4。观察前面设计测试用例:1:A=4B=0X=8(路径1→2→3→4→5覆盖条件:T1T2T3T4)2:A=1B=1X=1(路径1→3→5覆盖条件:~T1~T2~T3~T4)上述测试用例覆盖了4个条件产生的8种情况。4.可见,这组测试用例同时覆盖了两个判定的取真分支和取假分支以及4个条件产生的8种情况,所以它们满足判定-条件覆盖的标准。白盒测试用例设计练习5.要满足条件组
本文标题:第08课--白盒测试路径分析测试(基本路径测试)..
链接地址:https://www.777doc.com/doc-5255204 .html