第08课-白盒测试路径分析测试(基本路径测试)_第1页
第08课-白盒测试路径分析测试(基本路径测试)_第2页
第08课-白盒测试路径分析测试(基本路径测试)_第3页
第08课-白盒测试路径分析测试(基本路径测试)_第4页
第08课-白盒测试路径分析测试(基本路径测试)_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

把程序看成装在一个透明的白盒子里,程序的结构和处理呈现过程完全可见,按照程序的内部逻辑测试程序,以检查程序中的每条通路是否都能按照预先要求正确工作。

第3章白盒测试方法

2路径分析测试3分支条件测试、循环测试4其它测试类型5主要内容综合测试实例

6黑盒测试与白盒测试1逻辑覆盖测试白盒测试的常用方法逻辑覆盖路径分析测试

循环、条件分支…基本路径测试相关概念基本路径本质上是从程序入口到出口的一些通路。之所以称其为基本路径,原因在于可以通过对基本路径进行连接或者重复操作得到程序中的其它路径控制流图基于代码结构构造的有向图,可用于描述程序的控制结构测试思想

根据程序的控制流图找出一个模块所需测试的基本路径,根据这些基本路径设计构造相应的测试用例基本路径测试设计步骤根据模块逻辑构造控制流图(FlowGraph)计算控制流图的环复杂度(CyclomaticComplexity)列出包含起始节点和终止节点的基本路径检查一下列出的基本路径数目是否超过控制流图的环复杂度设计覆盖这些基本路径的测试用例控制流图说明控制流图是由节点和边组成的有向图节点代表了代码或程序流程图中矩形框中所表示的处理,菱形表示的判断处理以及判断处理流程相交的汇合点,在图中用标有编号的圆圈表示边表明了控制的顺序,在图中用有向箭头表示。控制流图三种逻辑结构的控制流图顺序条件循环控制流图

如果判定中的条件表达式是复合条件时,即条件表达式是由一个或多个逻辑运算符(OR,AND,NAND,NOR)连接的逻辑表达式,则需要改复合条件的判定为一系列只有单个条件的嵌套的判定。例如对应图(a)

的复合条件的判定,应该画成如图(b)

所示的控制流图。条件语句ifaORb中条件a和条件b各有一个只有单个条件的判定结点。环复杂度含义用V(G)表示用来衡量一个模块判定结构的复杂程度,在数量上表现为独立的路径条数,是需要测试的基本路径数目的上限。环复杂度计算公式V(G)=闭合区域的数目由节点和边围成的封闭区域这些封闭区域一定是不可再分的包括周边的区域V(G)=二值判定节点个数+1.V(G)=边的数目-节点的数目+2环复杂度环复杂度闭合区域的数目=5二值判定节点个数+1=4+1=5边的数目-节点的数目+2=16-13+2=5基本路径实用的定义一条路径是基本路径如果:是一条从起始节点到终止节点的路径.至少包含一条其它基本路径没有包含的边.(至少引入一个新处理语句或一个新判断的程序通路.)注意:对于循环而言,基本路径应包含不执行循环和执行一次循环体。基本路径基本路径1-2-111-2-3-4-5-6-10-2-111-2-3-4-5-7-10-2-111-2-3-8-9-10-2-111-2-3-8-10-2-11基本路径测试方法举例基本路径测试用例的设计

voidsort(intirecordnum,intitype){intx=0;inty=0;while(irecordnum-->0){if(itype==0)break; elseif(itype==1)x=x+10;elsey=y+20;}}基本路径测试方法举例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)基本路径和测试用例81-86->87->88->92->93->95->97-98->102相应的测试用例:测试输入=(68,68,56)预期结果=这是一个等腰三角形!81-86->87->88->92->93->95->96->102相应的测试用例:测试输入=(68,60,56)预期结果=这是一个不等边三角形!81-8687889299-10093102959697-9889-9094基本路径和测试用例81-86->87->88->92->93->94->102相应的测试用例:测试输入=(68,68,68)预期结果=这是一个等边三角形!81-86->87->89-90->92->99-100->102相应的测试用例:测试输入=(68,8,60)预期结果=这不是一个三角形!基本路径和测试用例(2)81-8687889299-10093102959697-9889-9094基本路径与环复杂度81-86->87->88->92->99-100->10281-86->87->88->92->93->95->97-98->10281-86->87->88->92->93->95->96->10281-86->87->88->92->93->94->10281-86->87->89-90->92->93->94->10281-8687889299-10093102959697-9889-9094并不是所有的基本路径都对应程序的可执行通路,都可作为设计测试用例的依据。之所以存在这种情况,是因为控制流图中并不包含程序的处理信息,无法明确前后节点之间的逻辑关系。基本路径与环复杂度结论如果基本路径必须是可行的,则逻辑关系会压缩基本路径集合数量,因此环复杂度是包含起始点和终止点的基本路径数目的上限案例分析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.input<100

incrementtotal.validby1;

IFvalue[i]>=minimumANDvalue[i]<=maximum

THENincrementtotal.valid[i];

ELSEskip;

ENDIF

Incrementiby1;

ENDDO

IFtotal.valid>0

THENaveragy=sum/total.valid;

ELSEaveragy=-999;

ENDIF

ENDaveragy(1)由过程描述导出控制流图

在上面给出的过程中,针对要映射为对应控制流图中一个结点的PDL语句或语句组,标记上用数字表示的标号。加了标号的PDL程序如下(只有可执行语句部分):对应的控制流图如图所示:该图所有的6条路径是:

path1:1-2-10-11-13

path2:1-2-10-12-13

path3:1-2-3-10-11-13

path4: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<100

value[k]<最小值,当k<i时

预期结果:n个值的正确的平均值,正确的总计数path5:输入数据:value[i]=有效输入,且i<100

value[k]>最大值,当k≤i时

预期结果:n个值的正确的平均值,正确的总计数

path6:输入数据:value[i]=有效输入,且i<100

预期结果:n个值的正确的平均值,正确的总计数每个测试用例执行之后,与预期结果进行比较。如果所有测试用例都执行完毕,则可以确信程序中所有的可执行语句至少被执行了一次。白盒测试用例设计作业使用逻辑覆盖和基本路径方法完成教材P88页第7题:(1)分别以语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖方法设计测试用例,并写出每个测试用例的执行路径。(2)画出程序的控制流图。用基本路径测试方法设计测试用例。白盒测试用例设计练习T1T2T3T4TATB白盒测试用例设计练习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.要满足条件组合覆盖,每个判定中各条件的每一种组合至少要出现一次,在两个判定中有8种可能的组合:①A>2,B=0:T1,T2 ②A>2,B≠0:T1,~T2③A≤2,B=0:~T1,T2 ④A≤2,B≠0:~T1,~T2⑤A=4,X>1:T3,T4 ⑥A=4,X≤1:T3,~T4⑦A≠4,X>1:~T3,T4 ⑧A≠4,X≤1:~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④⑧) 3:A=4B=1X=1(路径1→3→4→5覆盖条件:T1~T2T3~T4②⑥)4:A=0B=0X=4(路径1→3→4→5覆盖条件:~T1T2~T3T4③⑦)白盒测试用例设计练习6.要满足路径覆盖,每一条可能的路径至少执行一次,可能的路径包括:1→3→5;1→2→3→4→5;1→3→4→5;1→2→3→5。观察条件组合覆盖的测试用例,可以保留前三个,再增加下面一个新的用例即可:1:A=1B=1X=1(路径1→3→5覆盖条件:~T1~T2~T3~T4④⑧) 2:A=4B=0X=8(路径1→2→3→4→5覆盖条件:T1T2T3T4①⑤)3:A=4B=1X=1(路径1→3→4→5覆盖条件:T1~T2T3~T4②⑥)4:A=3B=0X=0(路径1→2→3→5覆盖条件:T1T2~T3~T4①⑧)白盒测试用例设计练习设计的测试用例测试用例执行路径覆盖条件覆盖组合号语句覆盖判定覆盖条件覆盖判定-条件覆盖A=1B=1X=1A=4B=0X=81→3→51→2→3→4→5~TA~TB~T1~T2~T3~T4TATBT1T2T3T4条件组合覆盖A=1B=1X=1A=4B=0X=8A=4B=1X=1A=0B=0X=41→3→51→2→3→4→51→3→4→51→3→4→5~T1~T2~T3~T4T1T2T3T4T1~T2T3~T4~T1T2~T3T4④⑧①⑤②⑥③⑦路径覆盖A=1B=1X=1A=4B=0X=8A=4B=1X=1A=3B=0X=01→3→51→2→3→4→51→3→4→51→2→3→5~T1~T2~T3~T4T1T2T3T4T1~T2T3~T4T1T2~T3~T4白盒测试用例设计练习基本路径数:流图的环形复杂度=5确定独立路径的基本集合。路径1:1→1-1→1-2→2→3-1→3-2→5输入:A=3,B=0,X=3;预期输出:X=1路径2:1→1-1→3-1→3-2→5输入:A=0,B=0(任意)

,X=1;预期输出:X=1路径3:1→1-1→1-2→3-1→3-2→5输入:A=3,B=1,X=1;预期输出:X=1路径4:1→1-1→1-2→2→3-1→4→5输入:A=4,B=0,X=1;预期输出:X=1路径5:1→1-1→1-2→2→3-1→3-2→4→5输入:A=3,B=0,X=6;预期输出:X=3设计执行基本路径集合中每条路径的测试用例。基本路径测试相关概念基本路径本质上是从程序入口到出口的一些通路。之所以称其为基本路径,原因在于可以通过对基本路径进行连接或者重复操作得到程序中的其它路径控制流图基于代码结构构造的有向图,可用于描述程序的控制结构测试思想

根据程序的控制流图找出一个模块所需测试的基本路径,根据这些基本路径设计构造相应的测试用例总结基本路径测试思想:根据程序的控制流图找出一个模块所需测试的基本路径,根据这些基本路径设计构造相应的测试用例基本路径测试设计步骤根据模块逻辑构造控制流图(FlowGraph)计算控制流图的环复杂度(CyclomaticComplexity)列出包含起始节点和终止节点的基本路径设计覆盖这些基本路径的测试用例其中第1、3、4步是重难点。综合运用白盒测试方法综合运用白盒测试技术设计下面代码的测试用例

4-46参考答案设计步骤构造被测代码的控制流图,运用基本路径测试方法设计相关测试用例针对代码中的各个逻辑条件,运用分支-条件测试方法设计相关测试用例针对代码中的循环,运用循环测试方法设计相关测试用例合并前三步所得结果在第四步的基础上,根据被测对象的特点增加相关测试用例

4-47以简单条件为节点②①③④⑥⑤⑧⑦⑨⑩11121312345678910111213

4-48环复杂度环复杂度闭合区域的数目=6二值判定节点个数+1=5+1=6边的数目-节点的数目+2=17-13+2=612345678910111213

4-49基本路径基本路径和相应的测试用例1->2->10->12->13(10-11?)测试用例:测试输入=((-999),0,360)预期结果=-9991->2->3->10->11->13测试用例测试输入=((0..100,-999),0,360),预期结果=49.512345678910111213

4-50基本路径基本路径和相应的测试用例1->2->3->4->5->6->7->9->2->10->11->13测试用例:测试输入=((180,-999),0,360),预期结果=1801->2->3->4->5->8->2->10->12->13测试用例:测试输入=((-10,-999),0,360),预期结果=-99912345678910111213

4-51基本路径基本路径和相应的测试用例1->2->3->4->5->6->8->2->10->12->13测试用例:测试输入=((380,-999),0,360),预期结果=-99912345678910111213

4-52分支-条件测试需测试的逻辑条件Dowhile((value[i]!=-999)&&(inputNumber<100))if((value[i]>=minimum)&&(value[i]<=maximum))ifvalidNumber>0

4-53分支-条件测试分支和相应的测试用例相应的测试用例测试输入=((180,-999),0,360),预期结果=180测试输入=((-999),0,360),预期结果=-999测试输入=((0..100,-999),0,360),预期结果=49.5

4-54分支-条件测试分支和相应的测试用例相应的测试用例测试输入=((180,-999),0,360),预期结果=180测试输入=((-10,-999),0,360),预期结果=-999测试输入=((380,,-999),0,360),预期结果=-999

4-55分支-条件测试分支和相应的测试用例相应的测试用例测试输入=((180,-999),0,360),预期结果=180测试输入=((-999),0,360),预期结果=-999

4-56循环测试需测试的循环条件Dowhile((value[i]!=-999)&&(inputNumber<100))直接跳过循环体测试用例:测试输入=((-999),0,360),预期结果=-999只执行一遍循环体测试用例:测试输入=((180,-999),0,360),预期结果=180连续执行两遍循环体测试用例:测试输入=((10,20,-999),0,360),预期结果=15

4-57循环测试需测试的循环条件Dowhile((value[i]!=-999)&&(inputNumber<100))如果循环次数为n,执行m(m<n)遍循环体测试用例:测试输入=((0..49,-999),0,360),预期结果=24.5如果循环次数为n,那么执行n-1遍循环体测试用例:测试输入=((0..98,-999),0,360),预期结果=49.0如果循环次数为n,那么执行n遍循环体测试用例:测试输入=((0..99,-999),0,360),预期结果=49.5

4-58循环测试需测试的循环条件Dowhile((value[i]!=-999)&&(inputNumber<100))测试用例:测试输入=((0..100,-999),0,360),预期结果=50

4-59结果合并合并的结果测试输入=((-999),0,3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论