L-第4章 软件工程白盒测试用例设计方法ppt课件_第1页
L-第4章 软件工程白盒测试用例设计方法ppt课件_第2页
L-第4章 软件工程白盒测试用例设计方法ppt课件_第3页
L-第4章 软件工程白盒测试用例设计方法ppt课件_第4页
L-第4章 软件工程白盒测试用例设计方法ppt课件_第5页
已阅读5页,还剩113页未读 继续免费阅读

下载本文档

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

文档简介

.,1,第4章白盒测试用例设计方法,.2,本章内容,讨论常用的白盒测试用例设计方法,包括基本路径测试分支-条件测试循环测试其它白盒测试方法综合运用白盒测试方法进行程序结构测试白盒测试工具覆盖准则覆盖率测试工具,.3,白盒测试,定义基于系统或者组件的内部实现结构和逻辑寻找缺陷的测试技术常用的白盒测试技术基本路径测试分支-条件测试循环测试,.4,说明一般情况,仅使用一种测试用例设计方法很难获得被测对象所需的测试用例。在实际测试中,最终的测试用例通常都是多种设计技术相结合的结果。在使用白盒测试方法之前进行代码评审是一个非常好的工程实践,.5,不可能进行彻底的白盒测试,结论是:41+42+43+410,需要14秒左右的时间如果循环次数为20次,100次时,结果又如何?结论是:循环20次,需要约4072小时,循环100次则大约需要6.79*1047年,左图是具有某程序的流程图,假设循环10次,请计算一下有多少条程序执行通路?假设由图中得到的所有路径都是可执行路径,执行一次循环大约需要10微秒(奔腾41.7G),且一年365天每天24小时不停机,请回答:如果循环次数为10的话,遍历图中所有路径需要多长时间?,.6,基本路径测试,测试思想根据程序的控制流图找出一个模块所需测试的基本路径,根据这些基本路径设计构造相应的测试用例.相关概念:基本路径,控制流图,.7,基本路径测试,设计步骤根据模块逻辑构造控制流图(FlowGraph)计算控制流图的环复杂度(CyclomaticComplexity)列出包含起始节点和终止节点的基本路径检查一下列出的基本路径数目是否超过控制流图的环复杂度设计覆盖这些基本路径的测试用例,.8,控制流图,说明控制流图是由节点和边组成的有向图节点代表了代码或程序流程图中矩形框中所表示的处理,菱形表示的判断处理以及判断处理流程相交的汇合点,在图中用标有编号的圆圈表示边表明了控制的顺序,在图中用有向箭头表示。,.9,控制流图,三种逻辑结构的控制流图,顺序,条件,循环,.10,控制流图,1,2,3,5,6,7,10,8,B,11,4,9,E,.11,环复杂度,含义用V(G)表示用来衡量一个模块判定结构的复杂程度,在数量上表现为独立的路径条数,是需要测试的基本路径数目的上限。,.12,环复杂度,计算公式V(G)=闭合区域的数目由节点和边围成的封闭区域这些封闭区域一定是不可再分的包括周边的区域V(G)=二值判定节点个数+1.V(G)=边的数目-节点的数目+2,.13,环复杂度,环复杂度闭合区域的数目=5二值判定节点个数+1=4+1=5边的数目-节点的数目+2=16-13+2=5,.14,基本路径,实用的定义一条路径是基本路径如果:是一条从起始节点到终止节点的路径.至少包含一条其它基本路径没有包含的边.(至少引入一个新处理语句或一个新判断的程序通路.)注意:对于循环而言,基本路径应包含不执行循环和执行一次循环体。,.15,基本路径,基本路径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,.16,基本路径示例:,voidSort(intiRecordNum,intiType)12intx=0;3inty=0;4while(iRecordNum-0)56If(iType=0)7x=y+2;8else9If(iType=1)10 x=y+10;11else12x=y+20;1314,.17,基本路径测试示例:,计算环形复杂度:10(条边)-8(个节点)+2=4基本路径:路径1:414路径2:46714路径3:4691013414路径4:4691213414,.18,三角形问题,使用基本路径设计测试用例方法推导三角形问题的测试用例P67,.19,控制流图,81-86,87,88,92,99-100,93,102,95,96,97-98,89-90,94,.20,环复杂度,环复杂度闭合区域的数目=5二值判定节点个数+1=4+1=5边的数目-节点的数目+2=15-12+2=5,.21,基本路径和测试用例(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)预期结果=这是一个不等边三角形!,.22,基本路径和测试用例81-86-87-88-92-93-94-102相应的测试用例:测试输入=(68,68,68)预期结果=这是一个等边三角形!81-86-87-89-90-92-99-100-102相应的测试用例:测试输入=(68,8,60)预期结果=这不是一个三角形!,基本路径和测试用例(2),.23,基本路径与环复杂度,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-102,.24,基本路径与环复杂度,结论如果基本路径必须是可行的,则逻辑关系会压缩基本路径集合数量,因此环复杂度是包含起始点和终止点的基本路径数目的上限,.25,练习,.26,练习,15-17,19,20,21,22-23,24,25,26,27,29,30,31,32,.27,对节点粒度的讨论,.28,对节点粒度的讨论,1,2,3,4,5,6,7,8,9,10,11,12,13,.29,思考,如果被误写成if(a19-29-31-32(30-32?)测试用例:测试输入=(-999),0,360)预期结果=-99915-17-19-20-21-24-19-29-31-32(30-32?)测试用例:测试输入=(-10,-999),0,360),预期结果=-999,.60,基本路径(方案1),基本路径和相应的测试用例15-17-19-20-21-22-23-25-26-27-19-29-30-32测试用例:测试输入=(180,-999),0,360),预期结果=180,.61,环复杂度(方案2),环复杂度闭合区域的数目=6二值判定节点个数+1=5+1=6边的数目-节点的数目+2=17-13+2=6,1,2,3,4,5,6,7,8,9,10,11,12,13,.62,基本路径(方案2),基本路径和相应的测试用例1-2-10-12-13(10-11?)测试用例:测试输入=(-999),0,360)预期结果=-9991-2-3-10-11-13测试用例测试输入=(0.100,-999),0,360),预期结果=49.5,.63,基本路径(方案2),基本路径和相应的测试用例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),预期结果=-999,.64,基本路径(方案2),基本路径和相应的测试用例1-2-3-4-5-6-8-2-10-12-13测试用例:测试输入=(380,-999),0,360),预期结果=-999,.65,分支-条件测试,需测试的逻辑条件P69Dowhile(valuei!=-999)&(inputNumber=minimum)&(valuei0,.66,分支-条件测试,分支和相应的测试用例,相应的测试用例测试输入=(180,-999),0,360),预期结果=180测试输入=(-999),0,360),预期结果=-999测试输入=(0.100,-999),0,360),预期结果=49.5,.67,分支-条件测试,分支和相应的测试用例,相应的测试用例测试输入=(180,-999),0,360),预期结果=180测试输入=(-10,-999),0,360),预期结果=-999测试输入=(380,-999),0,360),预期结果=-999,.68,分支-条件测试,分支和相应的测试用例,相应的测试用例测试输入=(180,-999),0,360),预期结果=180测试输入=(-999),0,360),预期结果=-999,.69,循环测试,需测试的循环条件Dowhile(valuei!=-999)&(inputNumber100)直接跳过循环体测试用例:测试输入=(-999),0,360),预期结果=-999只执行一遍循环体测试用例:测试输入=(180,-999),0,360),预期结果=180连续执行两遍循环体测试用例:测试输入=(10,20,-999),0,360),预期结果=15,.70,循环测试,需测试的循环条件Dowhile(valuei!=-999)&(inputNumber100)如果循环次数为n,执行m(m0取真记为T2假F2判断Q表达式:设条件a1取真记为T3假F3条件c1取真记为T4假F4,判断M,判断Q,.98,条件覆盖,它覆盖了判定M的N分支和判断Q的Y分支。,我们用条件覆盖设计的思想就是让测试用例能覆盖T1、T2、T3、T4、F1、F2、F3、F4,判断M,判断Q,.99,条件覆盖,示例下面的测试用例可以使code1满足条件覆盖:A=2B=0X=4;A=1B=1X=0另外一组:A=1B=0X=3;A=2B=1X=1执行该测试用例是否满足语句覆盖?分支覆盖?,Code1,.100,分支-条件覆盖(1),定义程序中的每条语句至少被执行一次,分支中的每个条件所有可能至少一次,每个分支本身的结果也至少出现一次,Code1,.101,判定条件覆盖,按照判定条件覆盖的要求,我们设计的测试用例要满足如下条件:所有条件可能至少执行一次取值;所有判断的可能结果至少执行一次。,要满足T1、T2、T3、T4F1、F2、F3、F4,.102,判定条件覆盖,要满足T1、T2、T3、T4,F1、F2、F3、F4,.103,分支-条件覆盖(2),示例下面的测试用例可以使code1满足分支-条件覆盖:A=2B=0X=3;(T,T,T,f)T,TA=1B=0X=3;(f,t,F,t)F,TA=1B=1X=1(f,F,f,F)F,F执行该测试用例程序中的每条语句至少被执行一次,分支中的每个条件所有可能至少一次,每个分支本身的结果也至少出现一次,Code1,.104,多条件覆盖,Code1,定义程序中的每条语句至少被执行一次,并且每个条件的所有可能结果的组合至少出现一次,.105,多条件覆盖,Code1,示例A1为真且B=0为真A1为真且B=0为假A1为假且B=0为真A1为假且B=0为假A=2为真且X1为真A=2为真且X1为假A=2为假且X1为真A=2为假且X1为假,.106,多条件覆盖,Code1,测试用例A=2,B=0,X=4(t,t,t,t)A=1,B=0,X=3(f,t,f,t)A=2,B=1,X=1(t,f,t,f)A=1,B=1,X=1(f,f,f,f),1,3,4,2,E,1,3,4,2,E,1,3,4,2,E,1,3,4,2,E,1,3,4,2,E,1,3,4,2,E,.107,路径覆盖,Code1,说明路径覆盖是指设计足够多的测试用例,使得程序中所有可能的路径至少被遍历一次。为了遍历code1中的四条可执行路径,设计4个测试用例:“A=2,B=0,X=3”,(t,t,t,f)“A=1,B=0,X=1”,(f,t,f,f)“A=2,B=1,X=1”(t,f,t,f)“A=3,B=0,X=1”。(t,t,f,f),.108,注意,说明即使对路径数很有限的程序即使作到了路径覆盖,仍然不能保证被测程序的正确性。例如,对于代码“if(I=0)”,如果将“if(I=0)”错写成了“if(I0)”,假设设计的测试用例中I的值均大于0,这样,虽然满足了路径覆盖,但仍然发现不了这个问题。,.109,RationalPurecoverage,RationalPurecoverage可以帮助检查使用.NET,Java,VisualC/C+和VisualBasic开发的程序并提供代码覆盖信息如何运行purecoverage有3种可以运行purecoverage的方法通过purecoverage自带的用户界面通过IDE如MicrosoftVisualStudio6,VisualStudio.NET,和IBMWebSphereStudio通过命令行,.110,File-Run,通过自带用户界面,.111,命令行coveragePurecoverage选项,通过命令行,.112,命令,运行时信息,通过命令行,.113,检查代码覆盖,通过Purecoverage自带用户界面的运行步骤设计测试用例使用Purecoverage运行测试用例直到所有测试用例执行完成合并所有有效的覆盖结果到最终的代码覆盖信息文件中下面以purecoverage自带样例文件“Hello.exe”(in“purecoverageinstalldirPurifyPlusCoverageSampleshello.exe”)为例介绍如何检查代码覆盖,.114,检查代码覆盖,设计测试用例基于程序源代码,我得到两个测试用例点击Yes,看时间点击No,不看时间运行每个用例,收集覆盖信息点击Yes,覆盖信息显示如下,.115,检查代码覆盖,运行每个用例,收集覆盖信息点击No,显示覆盖信息,.116,检查

温馨提示

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

最新文档

评论

0/150

提交评论