收藏 分销(赏)

Ch3-软件测试方法3.4.pptx

上传人:xrp****65 文档编号:13224764 上传时间:2026-02-05 格式:PPTX 页数:56 大小:540.52KB 下载积分:10 金币
下载 相关 举报
Ch3-软件测试方法3.4.pptx_第1页
第1页 / 共56页
Ch3-软件测试方法3.4.pptx_第2页
第2页 / 共56页


点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,#,3.4,基于逻辑覆盖的方法,3.4.0,语句,覆盖,3.4.1,判定,覆盖,3.4.2,条件,覆盖,3.4.3,判定,-,条,件覆盖,3.4.4,条件,组合覆盖,3.4.5,基本路径覆盖,逻辑覆盖,vs.,路径覆盖,逻辑覆盖,:,以程序,或系统,的内部逻辑结构为基础,,分为语句覆盖、判定覆盖,、条件覆盖、判,定,-,条件覆盖、条件组合覆盖,等。,基本,路径覆盖,:在程序,或业务,控制流,程的基础上,分析控制构造的环路,复杂度,,导出基本可执行路径集合,从而设计测试用例,。,3.4.0,语句覆盖,语句覆盖法的基本思想是设计若干测试用例,运行被测程序,使程序中的每个可执行语句至少被执行一次,如果是顺序结构,就是让测试从头执行到尾,如果有分支、条件和循环,需要利用下面的方法,执行足够的测试覆盖全部语句,程序源代,码:,1,.dim a,b as integer,dim c as double,if(a,0,and b 0)then,c=c/a,end if,if(a 1 or c 1)then,c=c+1,end if,c=b+,c,示例:语句覆盖可发现的问题,(a,b,c)=(1,1,2),3,6,8,9,IF,IF,ENDIF,ENDIF,f,e,i,c,b,a,d,4,5,7,j,h,程序控制流,图:,覆盖路径:,abdefhi,程序源代,码:,1,.dim a,b as integer,dim c as double,if(a,0,or,b 0)then,c=c/a,end if,if(a,1 or,c 1)then,c=c+1,end if,c=b+,c,(a,b,c)=(1,1,2),and,3,6,8,9,IF,IF,ENDIF,ENDIF,f,e,i,c,b,a,d,4,5,7,j,h,程序控制流,图:,覆盖路径:,abdefhi,示例:语句覆盖不能发现的问题,优点:,可以很直观地从源代码得到测试用例,无须细分每条判定表达式,缺点:,语句覆盖常是“最弱的覆盖”,不考虑各种分支的组合,不能发现其中的逻辑错误。,假如只要求达到语句覆盖,那么换来的确实测试效果不明显,很难更多地发现代码中的问题。,语句覆盖的优缺点,3.4.1,判定覆盖,判定覆,盖,的,基本思想是设计若干用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断真假值均曾被满足。,一个判定代表着程序,的一个分支,,所,以判定覆盖也被称为,分支覆盖,。,示,例,测试用例,:,a=2,,,b=1,,,c=6,a=-2,,,b=-1,,,c=-3,或,测试用例,:,a=1,,,b=1,,,c=0,a=2,,,b=-1,,,c=6,判定覆盖的优缺点,优点:,判定覆盖具有比语句覆盖更强的测试能力。同样判定覆盖也具有和语句覆盖一样的简单性,无须细分每个判定就可以得到测试用例。,缺点:,往往大部分的判定语句是由多个逻辑条件组合而成,若仅仅判断其整个最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径。判定覆盖仍是弱的逻辑覆盖。,9,3.4.2,条件覆盖,条件覆盖,的基本思想是设计若干测试用例,执行被测程序以后,要使每个判断中每个条件的可能取值至少满足一次。,(,a0 and b0,),a0,b,0,示,例,判断,M,表达式,:,条,件,a0,取真 记为,T1,条件,a0,取假 记为,F1,条,件,b0,取真 记为,T2,条件,b0,取假 记为,F2,判断,N,表达式,:,条,件,a1,取真 记为,T3,条件,a1,取假 记为,F3,条,件,c1,取真 记为,T4,条件,c1,取 假 记为,F4,M,N,测试用例,覆盖条件,具体取值条件,a=2,b=-1,c=-2,T1,F2,T3,F4,a0,b1,c=1,a=-1,b=2,c=3,F1,T2,F3,T4,a0,a1,它覆盖了判定,M,的,F,分支,和判断,N,的,T,分支,。,示例,M,N,优点:,增加了对条件判定情况的测试。,缺点:,条件覆盖不一定包含判定覆盖。,例如,上面设计的用例就没有覆盖判断,M,的,T,分支和判断,N,的,F,分支。条件覆盖只能保证每个条件至少有一次为真或假,而不考虑所有的判定结果。,条件覆盖的优缺点,3.4.3,判,定,-,条,件覆盖,判定,-,条件覆盖,是判定和条件覆盖设计方法的交集,,即设计足够的测试用例,使得判断条件中的所有条件可能取值至少执行一次,同时,所有判断的可能结果至少执行一,次。,判定,条件覆盖,按,照判定条件覆盖的要求,设计的测试用例要满足如下条件:,(,1,)所有条件可能至少执行一次取值;,(,2,)所有判断的可能结果至少执行一次。,M,N,示例,测试用例,覆盖条件,覆盖判断,a=2,b=1,c=6,T1,T2,T3,T4,M,的,T,分支,N,的,T,分支,a=-1,b=-2,c=-3,F1,F2,F3,F4,M,的,F,分支,N,的,F,分支,M,N,判定,-,条件覆盖的优缺点,优点,:,能同时满足判定、条件两种覆盖标准。,缺点,:,未考虑条件的组合情况。,3.4.4,条件组合覆盖,条件组合覆盖,的基本思想是通,过执行足够的测试用例,使得程序中每个判定的所有可能的条件取值组合都至少出现一次。,示例,设,计,组合条件,如表所示:,编号,覆盖条件取值,判定条件取值,具体条件取值,1,T1,T2,M,取,T,a0,b0,2,T1,F2,M,取,F,a0,b=0,3,F1,T2,M,取,F,a0,4,F1,F2,M,取,F,a=0,b1,c1,6,T3,F4,N,取,T,a1,c=1,7,F3,T4,N,取,T,a1,8,F3,F4,N,取,F,a=1,c 0),5 ,6 If(iType=0),7x=y+2;,8 else,9 If(iType=1),10 x=y+10;,11 else,12 x=y+20;,13 ,14,(,1,)画出控制流图,(,2,)计算,环路复杂,度,(,3,)导出独立路径(用语句编号表示),(,4,)设计测试用例,例题,(,1,)画出控制流图:,(,2,)计算,环路复杂,度:,10,(条边),-8,(个节点),+2=4,(,3,)导出独立路径(用语句编号表示),路径,1,:,414,路径,2,:,467,13,414,路径,3,:,4691013414,路径,4,:,4691213414,4,6,7,9,10,12,13,14,例,题解答,输入数据,预期输出,测试用例,1,irecordnum=0,itype=0,x=0,y=0,测试用例,2,irecordnum=1,itype=0,x=2,y=0,测试用例,3,irecordnum=1,itype=1,x=10,y=0,测试用例,4,irecordnum=1,itype=2,x=20,y=0,(,4,)设计测试用例:,例,题解答,习题,1,Int IsLeap(int year)if (year%4=0)1 if(year%100=0)2 if(year%400=0)3 leap=1;4 else leap=0;5 else leap=1;6else leap=0;7return leap;8,(,1,),画出,控制流图,(,2,),请计算环行复杂度,V,(,G,),(,3,),导出基本路径,(,4,),设计测试用例,41,习题,1,解答,(,1,),控制流图(见右),(,2,),环行复杂度,V(G),:,V(G)=10-8+2=4,(,3,),基本路径集,:,1-7-8,1-2-6-8,1-2-3-4-8,1-2-3-5-8,42,(,4,),设计测试用例:,测试用例,4,个:,1001,:满足不被,4,整除的路径,1996,:满足能被,4,不能被,100,整除的路径,2000,:满足能被,400,整除的路径,1800,:满足不能被,400,整除的路径,下,面是选择排序的程序,其中,datalist,是数据表,它有两个数据成员:一是元素类型为,Element,的数组,V,,另一个是数组大小,n,。算法中用到交换两数组元素内容的操作,Swap(),:,void SelectSort(datalist list),/,对表,list.V0,到,list.Vn-1,进行排序,n,是表当前长度。,for(int i=0;i list.n-1;i+),int k=i;,/,在,list,中找具有最小关键码的对象,for(int j=i+1;j list.n;j+),if(list.Vj list.Vk)k=j;,/,当前具最小关键码的对象,if(k!=i)Swap(list.Vi,list.Vk);,/,交换,习题,2,(,1,)路径,1,,,3,(,2,)路径,1,,,2,,,4,,,6,(,3,)路径,1,,,2,,,4,,,7,(,4,)路径,1,,,2,,,5,,,8,,,3,(,5,)路径,1,,,2,,,5,,,9,,,3,习题,2,解答,补充一:循环测试,目标,:,在循环内部及边界上执行测试,(,1,)简单循环,(,2,)嵌套循环,(,3,)串接循环,(,4,)不规则循环,补充一:循环测试,1,.,简,单循环,(,迭代次数,n),完全跳过循环,只经过循环一次,经过循环两次,经过循环,m,(,m R),Q=Q-R;,else R=R-Q;,return Q;,程序插桩技术,在程序入口处插入对计数器,C(i),的初始化语句,在程序出口处加入打印语句,为记录该程序中语句的执行次数,使用插桩技术插入语句:,C(i)=C(i)+1,其中,:i=1,2,6,插桩之后的流程图如右图。,程序插桩技术,如果我们在程序的入口处还插入了对计数器,C(i),初始化的语句,在出口处插入了打印这些计数器的语句,就构成了完整的插桩程序。它就能记录并输出在各程序点上语句的实际执行次数。,右,图为插桩之后的程序,箭头所指为插入的语句。源程序的语句已略去。,设计插桩程序时需要考虑的问题包括:,探测哪些信息;,在程序的什么部位设置探测点;,需要设置多少个探测点;,程序中特定部位插入某些用以判断变量特性的语句。,第,1,个,问题:,具体,问题具体分析。,第,2,个,问题:,在,实际测试通常在下面一些部位设置探测点:,程序块的第,1,个可执行语句之前,for,do,do-while,do until,等循环语句处。,if,else if,else,及,end if,等条件语句各分支处。,输入,/,输出语句之后。,函数、过程、子程序调用语句之后。,return,语句之后,goto,语句之后,第,3,个,问题:,需要,考虑如何设置最少探测点方案。,第,4,个,问题:,是,如何在程序中特定部位插入断言语句。在应用程序插桩技术时,可在程序中特定部位插入某些用以判断变量特性的语句,使得程序执行中这些语句得以证实,。,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服