ST-第5章单元测试.

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1软件测试第5章单元测试任课教师:兰方鹏Mobile:13453194233QQ:275392011lfp424@163.com2问题从传统制造业得到什么启发?3本章内容5.1什么是单元测试5.2单元测试的方法5.3白盒测试方法的用例设计5.4代码审查5.5集成测试5.6单元测试工具4本章内容5.1什么是单元测试5.2单元测试的方法5.3白盒测试方法的用例设计5.4代码审查5.5集成测试5.6单元测试工具55.1什么是单元测试单元测试就是对已实现的软件最小单元进行测试,以保证构成软件系统的各个单元的质量单元测试活动中,强调被测试对象的独立性单元测试应从各个层次来对单元内部算法、外部功能实现等进行检验,包括对程序代码的评审和通过运行单元程序来验证其功能特性等内容。6单元测试的目标单元实现了其特定的功能,如果需要,返回正确的值单元的运行能够覆盖预先设定的各种逻辑在单元工作过程中,其内部数据能够保持完整性,包括全局变量的处理、内部数据的形式、内容及相互关系等不发生错误可以接受正确数据,也能处理非法数据,在数据边界条件上,单元也能够正确工作该单元的算法合理,性能良好该单元代码经过扫描,没有发现任何安全性问题7本章内容5.1什么是单元测试5.2单元测试的方法5.3白盒测试方法的用例设计5.4代码审查5.5集成测试5.6单元测试工具8单元测试的方法单元测试主要采用白盒测试方法,辅以黑盒测试方法。白盒测试方法应用于代码评审、单元程序检验之中,而黑盒测试方法则应用于模块、组件等大单元的功能测试之中9黑盒方法和白盒方法黑盒测试方法(Blake-boxTesting),是把程序看作一个不能打开的黑盒子,不考虑程序内部结构和内部特性,而是考察数据的输入、条件限制和数据输出,完成测试白盒测试方法(White-boxTesting),也称结构测试或逻辑驱动测试。白盒测试方法是根据模块内部结构了解,基于内部逻辑结构,针对程序语句、路径、变量状态等来进行测试,检验程序中的各个分支条件是否得到满足、每条执行路径是否按预定要求正确的工作。10驱动程序和桩程序驱动程序(driver),对底层或子层模块进行(单元或集成)测试时所编制的调用被测模块的程序,用以模拟被测模块的上级模块桩程序(stub),也有人称为存根程序,对顶层或上层模块进行测试时,所编制的替代下层模块的程序,用以模拟被测模块工作过程中所调用的模块。11示例ABCDEFGTest驱动程序调用运行桩程序桩程序测试结果被测模块B12本章内容5.1什么是单元测试5.2单元测试的方法5.3白盒测试方法的用例设计5.4代码审查5.5集成测试5.6单元测试工具135.3白盒测试方法的用例设计5.3.1语句覆盖5.3.2判定覆盖法5.3.3条件覆盖法5.3.4判定条件覆盖法5.3.5条件组合覆盖法5.3.6路径测试法5.3.7基本路径测试法14白盒测试方法逻辑覆盖:以程序的内部逻辑结构为基础,分为语句覆盖、判定覆盖、判定-条件覆盖、条件组合覆盖等基本路径测试:在程序控制流程的基础上,分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例。15白盒测试的基本原则白盒测试主要用于单元测试,其基本原则有:保证每个模块中所有独立路径至少被执行一次完成所有逻辑值分别为True和False的条件下的测试在上下边界及可操作范围内运行所有循环,完成循环覆盖测试检查内部数据结构以确保其有效性,完成边界条件的测试165.3.1语句覆盖语句覆盖法的基本思想是设计若干测试用例,运行被测程序,使程序中的每个可执行语句至少被执行一次如果是顺序结构,就是让测试从头执行到尾如果有分支、条件和循环,需要利用下面的方法,执行足够的测试覆盖全部语句17语句覆盖-example1Dima,bAsInteger2DimcAsDouble3IF(a0ANDb0)THEN4c=c/a5EndIf6IF(a1ORc1)THEN7c=c+18EndIf9c=b+c18语句覆盖-continueda0andb0c=c/aa1orc1c=c+1c=b+cTTFFMKNJPTTFF条件M={a0andb0}条件N={a1orc1}简化19语句覆盖-continued2程序模块有4条不同的路径:M=TANDN=T:P1:1-2-4M=TANDN=F:P2:1-2-5M=FANDN=T:P3:1-3-4M=FANDN=F:P4:1-3-5MKNJPTTFF条件M={a0andb0}条件N={a1orc1}12345符合语句覆盖的路径为:P1根据P1设计测试用例:a=2,b=1,c=6测试结果:a=2,b=1,c=520语句覆盖-continued3使用语句覆盖法设计测试用例时能够使得所有的执行语句都能被测试,但是不能准确的判断运算中的逻辑关系错误。MKNJPTTFF条件M={a0orb0}条件N={a1orc1}12345语句覆盖的路径为:P1输入测试用例:a=2,b=1,c=6测试结果:a=2,b=1,c=5215.3.2判定覆盖判定覆盖法的基本思想是设计若干用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断真假值均曾被满足。一个判定往往代表着程序的一个分支,所以判定覆盖也被称为分支覆盖。225.3.2判定覆盖测试用例取值条件判定条件通过路径输入:{a=2,b=1,c=6}输出:{a=2,b=1,c=5}M:a0,b0N:a1,c1M=TN=TP1(1-2-4)输入:{a=-2,b=1,c=-6}输出:{a=-2,b=1,c=-5}M:a=0,b0N:a=1,c=1M=FN=FP4(1-3-5)MNKJPTTFF条件M={a0andb0}条件N={a1orc1}12345思考:如果把条件N改为:a1andc1呢?如果把条件N改为:a1orc1呢?23判定测试-example1PROGRAMsom(maxint,N:INT)2INTresult:=0;i:=0;3IFN04THENN:=-N;5WHILE(iN)AND(result=maxint)6DOi:=i+1;7result:=result+i;8OD;9IFresult=maxint10THENOUTPUT(result)11ELSEOUTPUT(“toolarge”)12END.24判定测试-continuedi:=i+1;result:=result+i;(iN)and(result=maxint)result=maxintN0N:=-N;output(toolarge);output(result);exitstartYNNYNYN0测试覆盖全部语句:maxintN10-10-1但没有覆盖所有分支;用例采取:maxintN1030-1则覆盖全部分支(N=0)result=0i=0255.3.3条件覆盖条件覆盖的基本思想是设计若干测试用例,执行被测程序以后,要使每个判断中每个条件的可能取值至少满足一次。(iN)and(result=maxint)TrueFalseiNresult=maxintTrueFalse26条件测试目标:保证测试到每个逻辑条件取值为true和false简单条件:(arel-opb)whererel-op={,≤,=,≠,≥,}(和NOT连用),即a≤b;NOT(a≤b)组合条件:由AND,OR连接的多个简单条件,即(ab)AND(cd)关系表达式:(E1rel-opE2)其中E1和E2是算术表达式,即((a*b+c)(a+b+c))测试发现的错误:布尔操作符–关系操作符布尔变量–算术表达式布尔括弧27条件测试(2)域测试表达式E1rel-opE2,测试E1≧≦=≠E2如果E1和E2正确,发现rel-op的错误发现E1或E2的错误,全面分析它们的不同如果某表达式含有n个变量,则需要进行2n测试分支测试组合条件C,测试C为true和false分支、以及每个条件例如C=(ab)AND(cd)测试:abTRUE,FALSEcdTRUE,FALSECTRUE,FALSETrueANDTrueT.AndF.,F.AndT.,F.AndF.28条件测试的示例1(i=result=0):maxintNiNresult=maxint-11truefalse10falsetrue测试了所有条件但没有覆盖判定(decision)条件覆盖不等于判定覆盖i:=i+1;result:=result+i;(iN)and(result=maxint)result=maxintN0N:=-N;output(result);output(toolarge);exitstartYNNYNY29测试用例具体取值条件取值条件通过路径输入:{a=2,b=-1,c=-2}输出:{a=2,b=-1,c=-2}M:a0,b=0N:a1,c=1T1,F2T3,F4P3(1-3-4)输入:{a=-1,b=2,c=3}输出:{a=-1,b=2,c=-6}M:a=0,b0N:a=1,c1F1,T2F3,T4P3(1-3-4)MNKJPTTFF条件M={a0andb0}条件N={a1orc1}12345条件测试的示例2TRUEFALSEa0T1F1b0T2F2a1T3F3c1T4F4MN条件覆盖不能保证所有的判定(分支)覆盖被测试305.3.4判定条件覆盖判定-条件覆盖是判定和条件覆盖设计方法的交集,即设计足够的测试用例,使得判断条件中的所有条件可能取值至少执行一次,同时,所有判断的可能结果至少执行一次测试用例取值条件具体取值条件判定条件通过路径输入:a=2,b=1,c=6输出:a=2,b=1,c=5T1,T2,T3,T4a0,b0,a1,c1M=TN=TP1(1-2-4)输入:a=-1,b=-2,c=-3输出:a=-1,b=-2,c=-5F1,F2,F3,F4a=0,b=0,a=1,c=1M=FN=FP4(1-3-5)b0?315.3.5条件组合测试条件组合覆盖的基本思想是设计足够的测试用例,使得判断中每个条件的所有可能至少出现一次,并且每个判断本身的判定结果也至少出现一次。它与条件覆盖的差别是它不是简单地要求每个条件都出现“真”与“假”两种结果,而是要求让这些结果的所有可能组合都至少出现一次32示例(1)组合编号覆盖条件取值判定条件取值判定-条件组合1T1,T2M=.T.a0,b0,M为真2T1,F2M=.F.a0,b=0,M为假3F1,T2M=.F.a=0,b0,M为假4F1,F2M=.F.a=0,b=0,M为假5T3,T4N=.T.a1,c1,N为真6T3,F4N=.T.a1,c=1,N为真7F3,T4N=.T.a=1,c1,N为真8F3,F4N=.F.a=1,c=1,N为假33示例(2)测试用例覆盖条件覆盖路径覆盖组合输入:a=2,b=1,c=6输出:a=2,b=1,c=5T1,T2,T3,T4P1(1-2-4)1,5输入:a=2,b=-1,c=-2输出:a=2,b=-1,c=-2T1,F2,T3,F4P3(1-3-4)2,6输入:a=-1,b=2,c=3输出:a=-1,b=2,c=6F1,T2,F3,T4P3(1-3-4)3,7输入:a=-1,b=-2,c=-3输出:a=-1,b=-2,c=-5F1,F2,F3,F4P4(1-3-5)4,8覆盖了所有组合,但覆盖路径有限,1-2-5没被覆盖345.3.6路径测试顾名思义,路径覆盖就是设计所有的测试用例,来覆盖程序中的所有可能的执行路径。测试用例覆盖路径覆盖条件覆盖组合输入:a=2,b=1,c=6输出:a=2,b=1,c=5P1(1-2-4)T1,T2,T3,T41,5输入:a=1

1 / 124
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功