软件测试技术6-动态白盒测试.

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

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

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

资源描述

软件测试基础Part2软件测试技术6动态白盒测试本节学习内容动态白盒测试结构性测试基于程序的源代码,因此,通常也称为基于代码测试(code-basedtesting)或白盒测试技术。白盒技术的基本思想是把测试对象的每部分代码至少执行一次。设计面向控制流的测试用例,分析程序的逻辑,然后执行测试用例。动态白盒测试为了能够明确程序的执行结果是否会导致失败,测试的期望结果是根据需求或规格说明来确定的,而不是代码本身。白盒测试技术主要是检查测试对象的语句,其基本目标是在测试时实现事先定义的语句覆盖率,比如执行程序中所有可能的语句。动态白盒测试为什么要进行白盒测试•从一个比喻开始•白盒测试是高效测试•白盒测试能彻底解决编码阶段引入的问题清洗面包机动态白盒测试做白盒测试时,第一步先将源代码转换为控制流图。在控制流图中,以结点表示语句,以边来表示语句之间的控制流。白盒测试的基本思想动态白盒测试1.语句覆盖2.判定覆盖3.条件覆盖4.判定/条件覆盖5.条件组合覆盖6.路径覆盖白盒测试主要技术动态白盒测试白盒测试举例•publicintfunction(inta,intb,intx){•1if(a1&&b==0)•2x=x/a;•3if(a==2||x1)•4x=x+1;•}1.语句覆盖2.判定覆盖3.条件覆盖4.判定/条件覆盖5.条件组合覆盖6.路径覆盖动态白盒测试名词理解:开始(A1)AND(B=0)(A=2)OR(X1)返回X=X/AX=X+1FFTTabdce条件判断1.语句覆盖2.判定覆盖3.条件覆盖4.判定/条件覆盖5.条件组合覆盖6.路径覆盖动态白盒测试开始(A1)AND(B=0)(A=2)OR(X1)返回X=X/AX=X+1FFTTabdce条件判断1234abcde动态白盒测试(1)语句覆盖•使程序中每个语句至少执行一次1234abcde如右图所示:使每个语句至少执行一次的流程是哪一条呢?动态白盒测试(1)语句覆盖只需设计一个测试用例:输入数据:A=2,B=0,X=4即达到了语句覆盖;语句覆盖是最弱的逻辑覆盖用例编号测试用例(A/B/X)覆盖语句预期结果实际结果TC12,0,41,2,3,4X=3动态白盒测试(1)语句覆盖练习:画出以下程序的程序流图和控制流图,并采用语句覆盖设计测试用例。动态白盒测试开始(x3)AND(z0)(x==4)OR(y5)j=j%3k=x*y-1j=k-zj=X*y+10FFTTabdce条件判断j=j%3返回1234abcde5程序流图和控制流图动态白盒测试用例编号测试用例(x/z/y)覆盖语句预期结果实际结果TC14,-1,61,2,3,4,5k=23,j=1测试用例如下:动态白盒测试(2)判定覆盖(分支覆盖)•使每个判定的真假分支都至少执行一次开始(A1)AND(B==0)(A==2)OR(X1)返回X=X/AX=X+1FFTTabdce动态白盒测试(2)判定覆盖(分支覆盖)例:可设计两组测试用例:•A=3,B=0,X=1可覆盖c、d分支•A=2,B=1,X=3可覆盖b、e分支两组测试用例可覆盖所有判定的真假分支判定覆盖仍是弱的逻辑覆盖用例编号测试用例(A/B/X)覆盖分支预期结果实际结果TC13,0,1c,dX=1TC22,1,3b,eX=2动态白盒测试(2)判定覆盖(分支覆盖)步骤:1.识别并标识所有输入;2.识别并标识所有判断;3.取不同的输入组合构成测试用例,并给出预期结果用例编号测试用例(A/B/X)覆盖分支预期结果实际结果TC13,0,1c,dX=1TC22,1,3b,eX=2动态白盒测试(2)判定覆盖(分支覆盖)练习:采用判定覆盖设计以下测试用例动态白盒测试(3)条件覆盖•使每个判定的每个条件的可能取值至少执行一次第一判定表达式:设条件A1取真记为T1假F1条件B=0取真记为T2假F2第二判定表达式:设条件A=2取真记为T3假F3条件X1取真记为T4假F4动态白盒测试开始(A1)AND(B=0)(A=2)OR(X1)返回X=X/AX=X+1FFTTabdce条件(3)条件覆盖动态白盒测试(3)条件覆盖开始(A1)AND(B=0)(A=2)OR(X1)返回X=X/AX=X+1FFTTabdce条件满足不满足A1T1F1B=0T2F2A=2T3F3X1T4F4动态白盒测试(3)条件覆盖两个测试用例覆盖了四个条件八种可能取值。未覆盖c、d分支,不满足判定覆盖的要求.条件覆盖不一定包含判定覆盖判定覆盖也不一定包含条件覆盖测试用例ABX通过路径满足的条件覆盖分支103abeF1,T2,F3,T4b,e211abeT1,F2,T3,F4b,e请用条件覆盖为以上流程图设计测试用例?动态白盒测试(3)条件覆盖步骤:1.识别并标识所有输入;2.识别并标识所有条件;3.取不同的输入组合构成测试用例,并给出预期结果用例编号测试用例ABX通过路径满足的条件覆盖分支TC1103abeF1,T2,F3,T4b,eTC2211abeT1,F2,T3,F4b,e动态白盒测试练习:采用条件覆盖设计以下测试用例(3)条件覆盖动态白盒测试1、找出所有条件的取值(3)条件覆盖开始(x3)AND(z0)(x==4)OR(y5)j=j%3k=x*y-1j=k-zj=X*y+10FFTTabdce条件判断j=j%3返回条件满足不满足x3T1F1z0T2F2x=4T3F3y5T4F4动态白盒测试2、为所有的条件设计测试用例(3)条件覆盖用例编号测试用例ABX通过路径满足的条件覆盖分支TC1动态白盒测试(4)判定/条件覆盖选取足够多的测试用例,使判断中的每个条件的所有可能取值至少执行一次,同时每个判断本身的所有可能判断结果至少执行一次.动态白盒测试(4)判定/条件覆盖开始(A1)AND(B=0)(A=2)OR(X1)返回X=X/AX=X+1FFTTabdce条件满足不满足A1T1F1B=0T2F2A=2T3F3X1T4F4判断分支:b.c.d.e.动态白盒测试(4)判定/条件覆盖请设计测试用例,能同时满足判定、条件两种覆盖标准。用例编号测试用例ABX通过路径满足的条件覆盖分支TC1204aceT1,T2,T3,T4c,eTC2111abdF1,F2,F3,F4b,d用例编号测试用例ABX通过路径满足的条件覆盖分支动态白盒测试(5)条件组合覆盖所有可能的条件取值组合至少执行一次A1,B=0T1T2A1,B≠0T1F2A≯1,B=0F1T2A≯1,B≠0F1F2A=2,X1T3T4A=2,X≯1T3F4A≠2,X1F3T4A≠2,X≯1F3F4开始(A1)AND(B=0)(A=2)OR(X1)返回X=X/AX=X+1FFTTbdce动态白盒测试(5)条件组合覆盖用例编号测试用例ABX通过路径满足的条件覆盖分支TC1204aceT1,T2,T3,T4c,eTC2211abeT1,F2,T3,F4b,eTC3102abdF1,T2,F3,T4b,dTC4111abdF1,F2,F3,F4b,d动态白盒测试练习对该程序进行以下白盒测试:•语句覆盖•判断覆盖•条件覆盖•条件判断覆盖•条件组合覆盖动态白盒测试练习对该程序进行以下白盒测试:•语句覆盖•判断覆盖•条件覆盖•条件判断覆盖•条件组合覆盖动态白盒测试(6)DD路径覆盖•前面所讲的几种方法主要关注控制流的语句或分支以及条件的复杂度。如果测试对象包含循环语句,则仅靠前面讲过的几种技术和方法是不够的。•路径覆盖要求遍历测试对象的所有不同的路径。DDPath:全称是Decision-to-decision_path(决策路径)动态白盒测试(6)DD路径覆盖开始(A1)AND(B=0)(A=2)OR(X1)返回X=X/AX=X+1FFTTabdce1.ace2.acd3.abe4.abd动态白盒测试(6)DD路径覆盖用例编号测试用例ABX通过路径满足的条件覆盖分支TC1204aceT1,T2,T3,T4c,eTC2301acdT1,T2,F3,F4c,dTC3112abeF1,F2,F3,T4b,eTC4111abdF1,F2,F3,F4b,d开始(A1)AND(B=0)(A=2)OR(X1)返回X=X/AX=X+1FFTTabdce动态白盒测试(7)基本路径测试•对简单的程序流程而言,可通过以上方法确定程序的路径有多少条,但对复杂的程序,必须通过程序的控制流图来确定程序的路径。•基路径测试:把覆盖的路径数压缩到一定限度内,如,程序中的循环体只执行0次和1次,就成为基路径测试。动态白盒测试(7)基本路径测试控制流图(CFGControlFlowGraph)•控制流图分析是描述程序控制流的一种图示方法。12,34,567891011区域节点边控制流图R1R4R2R3通过控制流图的清楚描述,程序结构顺序很容易理解,同时可以发现一些可能的控制流异常,如跳出循环体,或程序结构有多个出口。动态白盒测试(7)基本路径测试12345687910程序流程图12,34,567891011区域节点边控制流图R1R4R2R3将流程图映射成控制流图动态白盒测试(7)基本路径测试圈复杂度的计算1、公式法2、独立路径法3、区域法(闭合环路法)动态白盒测试(7)基本路径测试基本路径法测试用例设计步骤:•绘制程序的控制流图(CFG)•计算程序的圈复杂度,导出独立路径条数•确定现行独立路径的基本集合•设计可强制执行基本集合中每一条路径的测试用例动态白盒测试(7)基本路径测试例:•在该例中,要注意组合条件的控制流图的画法。动态白盒测试第一步:画控制流图-简单来看3235333638注意:32和35的判断都是组合条件,需要拆分。设:C1:age25C2:sex=‘M’C3:age50C4:comm2000.00C1C3333638C2C4③②①④⑤动态白盒测试第二步:计算圈复杂度•V(G)=4+1•或V(G)=e-n+2=10-7+2=5由此得出共5条独立路径动态白盒测试第三步:确定现行独立路径的基本集合P1:c1,c2,c3,36,38P2:c1,c2,c3,c4,38P3:c1,c2,33,c3,c4,38P4:c1,c2,c3,c4,36,38P5:c1,c3,c4,38动态白盒测试第四步:为每条独立路径设计测试用例独立路径集合:P1:c1,c2,c3,36,38P2:c1,c2,c3,c4,38P3:c1,c2,33,c3,c4,38P4:c1,c2,c3,c4,36,38P5:c1,c3,c4,38测试用例AgeSexCommP155F1500P230F1500P330M1500P435F2500P520M1500动态白盒测试练习1.设有一段程序如下:If((a==b)and((c==d)or(e==f)))doS1Elseif((p==q)or(s==t))doS2ElsedoS3在满足判定/条件覆盖的要求下,最少需要多少个测试用例动态白盒测试voidCycleSampleTwo(intvalue){if(value!=0){if(value0)value+=1;else{if(value==999)//specialvaluevalue=0;elsevalue-=1;}}}2、为代码画出控制流图,并计算圈复杂度。练习动态白盒测试3:1.intmain(void){2.inta,b,c,max,min;3.printf(Inputthreenumber:);4.scanf(%d%d%d,&a,&b,&c);5.if(ab){6.max=a;7.min=b;8.}else{9.max=b;10.min=a;11.}12.if(maxc)13.max=c;14.elseif(minc)15.min=c;16.printf(max=%d\nmin=%d,max,min);17.return0;18.}这段代码由C语言书写,在输入三个整数后,能够输出最大值和最小值。问题1:画出

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

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

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

×
保存成功