《2014第5讲白盒测试方法(一)解析.ppt》由会员分享,可在线阅读,更多相关《2014第5讲白盒测试方法(一)解析.ppt(37页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、软软 件件 测测 试试 技技 术术 课课 程程第第5讲讲 白盒测试技术白盒测试技术山东建筑大学计算机科学与技术学院软件工程专业Testing测试用例设计测试用例设计 测试用例测试用例的设计是软件测试的关键所的设计是软件测试的关键所在在,我们需要,我们需要设计设计出最有可能发现软件错出最有可能发现软件错误的测试用例误的测试用例,同时尽量,同时尽量避免测试用例的避免测试用例的冗余冗余(即避免使用发现错误效果相同的(即避免使用发现错误效果相同的测测试用例),尽量做到用最少的用例达到较试用例),尽量做到用最少的用例达到较高的覆盖。高的覆盖。为了达到这个目的,我们就需要使用为了达到这个目的,我们就需要使
2、用一定的测试用例设计方法,本次课主要讲一定的测试用例设计方法,本次课主要讲解基于了解内部结构的解基于了解内部结构的白盒测试方法白盒测试方法。山东建筑大学计算机科学与技术学院软件工程专业Testing白盒测试白盒测试逻辑覆盖法逻辑覆盖法 逻辑覆盖是以逻辑覆盖是以程序内部的逻辑结构为程序内部的逻辑结构为程序内部的逻辑结构为程序内部的逻辑结构为基础基础基础基础的设计测试用例的技术,它考虑的是的设计测试用例的技术,它考虑的是用测试数据执行程序时,用测试数据执行程序时,对程序代码以及对程序代码以及结构的逻辑覆盖程度结构的逻辑覆盖程度。逻辑覆盖法通常采用逻辑覆盖法通常采用流程图流程图来设计测来设计测试用例
3、,它考察的重点是图中的试用例,它考察的重点是图中的判定框判定框,因为这些判定通常是与选择结构或是循环因为这些判定通常是与选择结构或是循环结构有关,是决定程序结构的关键成分。结构有关,是决定程序结构的关键成分。山东建筑大学计算机科学与技术学院软件工程专业Testing发现错误发现错误的能力的能力标标 准准含含 义义 1 1(弱弱)语句覆盖语句覆盖 2 2判定覆盖判定覆盖 3 3条件覆盖条件覆盖4 4 判定判定/条件覆盖条件覆盖5 5条件组合覆盖条件组合覆盖 逻辑覆盖测试的逻辑覆盖测试的6 6种标准种标准 每条语句至少执行一次每条语句至少执行一次每一判定的每个分支至少执行一次每一判定的每个分支至少
4、执行一次每一判定中的每个条件,分别按每一判定中的每个条件,分别按“真真”、“假假”至少至少各执行一次各执行一次同时满足判定覆盖和条件覆盖的要求同时满足判定覆盖和条件覆盖的要求求出判定中所有条件的各种可能组合值,每一可能求出判定中所有条件的各种可能组合值,每一可能的条件组合至少执行一次的条件组合至少执行一次山东建筑大学计算机科学与技术学院软件工程专业Testing逻辑覆盖逻辑覆盖-语句覆盖语句覆盖语句覆盖,它的含义是设计若干个语句覆盖,它的含义是设计若干个测试用例,测试用例,使得程序中的每一条可使得程序中的每一条可执行语句至少执行一次。执行语句至少执行一次。山东建筑大学计算机科学与技术学院软件工
5、程专业Testing逻辑覆盖逻辑覆盖-语句覆盖语句覆盖案例代码:案例代码:1 Int A,B,X;2 If(A1 AND B=0)3 X=X-A;4 End If5 If(A=5 OR X1)6 X=X+3;7 End If8 X=B/X;1.给出程序流程图2.辅助设计测试用例设计方法:山东建筑大学计算机科学与技术学院软件工程专业Testing逻辑覆盖逻辑覆盖-语句覆盖语句覆盖 所有可执行语句都在路径所有可执行语句都在路径acef上,上,所以我们只需要一个用例,这个用例所以我们只需要一个用例,这个用例执行路径执行路径acef,就可以覆盖所有的可,就可以覆盖所有的可执行语句执行语句。1.给出程序
6、流程图2.辅助设计测试用例测试用例:测试用例:A=5,B=0,X=7执行路径:执行路径:acef山东建筑大学计算机科学与技术学院软件工程专业Testing逻辑覆盖逻辑覆盖-语句覆盖语句覆盖语句覆盖的缺点:语句覆盖的缺点:1.无法区分某些逻辑错误。无法区分某些逻辑错误。2.缺失路径。缺失路径。用例:用例:A=5,B=0,X=7A1orB=0测试结果还是正确的。测试结果还是正确的。山东建筑大学计算机科学与技术学院软件工程专业Testing逻辑覆盖逻辑覆盖-判定覆盖判定覆盖判定覆盖(判定覆盖(Decision Coverage)也被称为分支覆盖,它的含义是设也被称为分支覆盖,它的含义是设计若干个测试
7、用例,计若干个测试用例,使得程序中的使得程序中的每一个取每一个取“真真”分支和取分支和取“假假”分分支至少执行一次。支至少执行一次。山东建筑大学计算机科学与技术学院软件工程专业Testing逻辑覆盖逻辑覆盖-判定覆盖判定覆盖 参考左图,要满足判定覆盖,参考左图,要满足判定覆盖,需要选择路径需要选择路径acef和和abdf,或,或abef和和acdf。测试用例:测试用例:A=5,B=0,X=4(覆盖(覆盖acef)A=1,B=1,X=1(覆盖(覆盖abdf)测试用例:测试用例:A=5,B=1,X=1(覆盖(覆盖abef)A=3,B=0,X=1(覆盖(覆盖acdf)山东建筑大学计算机科学与技术学院
8、软件工程专业Testing逻辑覆盖逻辑覆盖-判定覆盖判定覆盖用例用例 A=5,B=0,X=4 A=1,B=1,X=1 满足判定覆盖,但是依然存在问满足判定覆盖,但是依然存在问题。题。这两个用例对于判定只是满足:这两个用例对于判定只是满足:test A 1 B=0 AND OR1 T T T T2 F F F FA1orB=0测试还是能通过的。测试还是能通过的。山东建筑大学计算机科学与技术学院软件工程专业Testing逻辑覆盖逻辑覆盖-判定覆盖判定覆盖 满足判定覆盖,也不是完整的测试。满足判定覆盖,也不是完整的测试。对于对于复合条件复合条件,判定覆盖会在其一,判定覆盖会在其一个组合中被测试到,但
9、是不能执行所有个组合中被测试到,但是不能执行所有条件的不同分支。因此,条件的不同分支。因此,判定覆盖的完判定覆盖的完整性整性虽然比语句覆盖高,但是却虽然比语句覆盖高,但是却不如条不如条件覆盖件覆盖。用例用例 A=5,B=0,X=4 A=1,B=1,X=1test A 1 B=0 A=5 X11 T T T F2 F F F F山东建筑大学计算机科学与技术学院软件工程专业Testing逻辑覆盖逻辑覆盖-条件覆盖条件覆盖条件覆盖(条件覆盖(Condition Coverage)是设计若干个测试用)是设计若干个测试用例,运行被测程序,使得程序中例,运行被测程序,使得程序中每每一判定语句中每个逻辑条件
10、的可能一判定语句中每个逻辑条件的可能取值至少执行一次取值至少执行一次。山东建筑大学计算机科学与技术学院软件工程专业Testing逻辑覆盖逻辑覆盖-条件覆盖条件覆盖对于第一个判定条件:对于第一个判定条件:条件条件1:A1,真,真T1,假,假F1条件条件2:B=0,真,真T2,假,假F2对于第二个判定条件:对于第二个判定条件:条件条件3:A=5,真,真T3,假,假F3条件条件4:X1,真,真T4,假,假F4测试用例测试用例条件取值条件取值路径路径A=5,B=1,X=1A=5,B=1,X=1T1,F2,T3,F4T1,F2,T3,F4abefabefA=1,B=0,X=3A=1,B=0,X=3F1,
11、T2,F3,T4F1,T2,F3,T4abefabef条件覆盖不一定条件覆盖不一定包含判定覆盖,包含判定覆盖,存在路径缺失问存在路径缺失问题。题。山东建筑大学计算机科学与技术学院软件工程专业Testing逻辑覆盖逻辑覆盖-判定条件覆盖判定条件覆盖判定判定/条件覆盖条件覆盖(Decision/Condition Coverage)也叫分支)也叫分支/条件覆盖是将判定条件覆盖是将判定覆盖、条件覆盖结合起来的一种测试用例覆盖、条件覆盖结合起来的一种测试用例设计方法。设计方法。其含义是设计足够的测试用例,其含义是设计足够的测试用例,使使得判定中每个条件的所有可能取值至少执得判定中每个条件的所有可能取值
12、至少执行一次,同时所有判定的可能结果也至少行一次,同时所有判定的可能结果也至少被执行一次被执行一次。山东建筑大学计算机科学与技术学院软件工程专业Testing逻辑覆盖法逻辑覆盖法-判定条件覆盖判定条件覆盖测试用例测试用例通过通过路径路径条件取值条件取值覆盖覆盖分支分支A=5,B=0,X=7A=5,B=0,X=7acefacefT1,T2,T3,T4T1,T2,T3,T4c,ec,eA=1,B=1,X=1A=1,B=1,X=1abdfabdfF1,F2,F3,F4F1,F2,F3,F4b,db,d满足了判断覆盖。满足了判断覆盖。满足了条件覆盖。满足了条件覆盖。缺点:缺点:不是所有的条件不是所有的
13、条件都能真正检查到。都能真正检查到。条件条件1:A1,真,真T1,假,假F1条件条件2:B=0,真,真T2,假,假F2条件条件3:A=5,真,真T3,假,假F3条件条件4:X1,真,真T4,假,假F4没有真正的没有真正的检查到。检查到。山东建筑大学计算机科学与技术学院软件工程专业Testing逻辑覆盖逻辑覆盖-条件组合覆盖条件组合覆盖条件组合覆盖也称多条件覆盖(条件组合覆盖也称多条件覆盖(Multiple Condition Coverage),它的含义是设),它的含义是设计足够的测试用例,使得计足够的测试用例,使得每个判定中每个每个判定中每个条件的各种组合都至少被执行一次。条件的各种组合都至
14、少被执行一次。满足条件组合覆盖的测试用例一定满足条件组合覆盖的测试用例一定满足判定覆盖、条件覆盖和判定满足判定覆盖、条件覆盖和判定/条件覆条件覆盖。盖。山东建筑大学计算机科学与技术学院软件工程专业Testing逻辑覆盖逻辑覆盖-条件组合覆盖条件组合覆盖对于所举示例,对于所举示例,每个判定中有每个判定中有2个逻辑条件个逻辑条件,每个逻辑条件有每个逻辑条件有2种取值种取值,因此共有因此共有8种可能组合。先对各个判定的条件取值组合加以标记种可能组合。先对各个判定的条件取值组合加以标记。山东建筑大学计算机科学与技术学院软件工程专业Testing逻辑覆盖逻辑覆盖-条件组合覆盖条件组合覆盖测试用例测试用例
15、路径路径条件取值条件取值覆盖组合覆盖组合A=5,B=0,X=7A=5,B=0,X=7acefacefT1,T2,T3,T4T1,T2,T3,T4(1 1)()(5 5)A=5,B=1,X=1A=5,B=1,X=1abefabefT1,F2,T3,F4T1,F2,T3,F4(2 2)()(6 6)A=1,B=0,X=3A=1,B=0,X=3abefabefF1,T2,F3,T4F1,T2,F3,T4(3 3)()(7 7)A=1,B=1,X=1A=1,B=1,X=1abdfabdfF1,F2,F3,F4F1,F2,F3,F4(4 4)()(8 8)满足条件组合覆盖标准的测试数据满足条件组合覆盖标
16、准的测试数据并并不一定能使程序中的每条路径都不一定能使程序中的每条路径都执行到执行到,如没有覆盖路径,如没有覆盖路径acdf。优点优点:条件组合覆盖准则满足判定:条件组合覆盖准则满足判定覆盖、条件覆盖和判定覆盖、条件覆盖和判定/条件覆盖准条件覆盖准则。则。缺点缺点:缺失路径,线性地增加:缺失路径,线性地增加了测试用例的数量,工作量较大了测试用例的数量,工作量较大。山东建筑大学计算机科学与技术学院软件工程专业Testing白盒测试例题白盒测试例题1PROGRAM som(maxint,N:INT)2INT result:=0;i:=0;3IF N 04THEN N :=-N;5WHILE (i
17、N)AND (result=maxint)6DOi :=i+1;7result :=result+i;8OD;9IF result=maxint10THEN OUTPUT(result)11ELSE OUTPUT(“too large”)12END.i:=i+1;result:=result+i;(iN)and(result=maxint)result=maxintN 0N:=-N;output(result);output(too large);exitstartyesnonoyesyesnoN 0result=0 i=0山东建筑大学计算机科学与技术学院软件工程专业Testing白盒测试例题
18、白盒测试例题i:=i+1;result:=result+i;(iN)and(result=maxint)result=maxintN 0N:=-N;output(result);output(too large);exitstartyesnonoyesyesnoN 0result=0 i=0测试用例测试用例路径路径覆盖标准覆盖标准maxintmaxint=10=10,N=-1N=-1maxintmaxint=0=0,N=-1N=-1123456123456123457123457语句覆盖语句覆盖maxintmaxint=10=10,N=3N=3maxintmaxint=-1=-1,N=-1N=
19、-113456134561235712357判定覆盖判定覆盖maxintmaxint=-1=-1,N=-1N=-1maxintmaxint=1=1,N=0N=0123571235713561356条件覆盖条件覆盖maxintmaxint=-1=-1,N=-1N=-1maxintmaxint=1=1,N=0N=0maxintmaxint=10=10,N=3N=31235712357135613561345613456判定条件判定条件覆盖覆盖maxintmaxint=-1=-1,N=-1N=-1maxintmaxint=1=1,N=0N=0maxintmaxint=1=1,N=-1N=-1maxi
20、ntmaxint=-1=-1,N=0N=0123571235713561356134561345613571357条件组合条件组合覆盖覆盖6123457(i=result=0):maxint N iN result=maxint-1 -1 true false 1 0 false true(i=result=0):maxint N iN result=maxint-1 -1 true false 1 0 false true 1 -1 true true-1 0 false false山东建筑大学计算机科学与技术学院软件工程专业Testing路径覆盖路径覆盖路径覆盖(路径覆盖(Path Cov
21、erage)的含义是设)的含义是设计足够的测试用例,要求计足够的测试用例,要求覆盖程序中所有覆盖程序中所有可能的路径可能的路径。我们可以通过我们可以通过基本路径法基本路径法获得程序的基本获得程序的基本路径,基本路径法是在路径,基本路径法是在程序控制流图程序控制流图的基的基础上,通过分析控制构造的环路复杂性,础上,通过分析控制构造的环路复杂性,导出基本可执行路径的集合,从而设计测导出基本可执行路径的集合,从而设计测试用例的方法试用例的方法。山东建筑大学计算机科学与技术学院软件工程专业Testing基本路径法基本路径法基本的控制结构对应的图形符号:基本的控制结构对应的图形符号:l圆圈(结点)圆圈(
22、结点):表示一个或多个的语句或源程序;:表示一个或多个的语句或源程序;l箭头(边或路径)箭头(边或路径):代表控制流:代表控制流 l由边和结点圈定的范围称为区域由边和结点圈定的范围称为区域,当对区域计数时,图形,当对区域计数时,图形外的区域也应记为一个区域。外的区域也应记为一个区域。山东建筑大学计算机科学与技术学院软件工程专业Testing基本路径法基本路径法-控制流图控制流图 举例:举例:假定图中用菱形框表示的判定条件内没有复合条件。假定图中用菱形框表示的判定条件内没有复合条件。山东建筑大学计算机科学与技术学院软件工程专业Testing基本路径法基本路径法-控制流图控制流图 如果判断中的条件
23、表达式是如果判断中的条件表达式是复合条件复合条件,即条件表达式是由一个或多个逻辑运算符即条件表达式是由一个或多个逻辑运算符(or、and、nor)连接的复合条件表达式,)连接的复合条件表达式,则则需要改为一系列只有单个条件需要改为一系列只有单个条件的嵌套的判的嵌套的判断断。QA0PTFA0PQP山东建筑大学计算机科学与技术学院软件工程专业Testing基本路径法基本路径法-程序环路复杂性程序环路复杂性 程序的环路复杂性是一种为程序逻辑复杂性提供定量程序的环路复杂性是一种为程序逻辑复杂性提供定量测度的软件度量,通过对程序控制流图的分析和判断来测度的软件度量,通过对程序控制流图的分析和判断来计算模
24、块的复杂性,从程序的计算模块的复杂性,从程序的环路复杂性可导出程序基环路复杂性可导出程序基本路径集合中的独立路径条数本路径集合中的独立路径条数。独立路径是指包括一组以前没有处理的语句或条件的独立路径是指包括一组以前没有处理的语句或条件的一条路径。从控制流图上看,一条路径。从控制流图上看,一条独立路径是至少包含一条独立路径是至少包含有一条在其他独立路径中从未有过的边的路径有一条在其他独立路径中从未有过的边的路径。山东建筑大学计算机科学与技术学院软件工程专业Testing基本路径法基本路径法-程序环路复杂性程序环路复杂性环路复杂性的计算方法有三种:环路复杂性的计算方法有三种:程序的环形复杂度计算公
25、式为:程序的环形复杂度计算公式为:V(G)=m-n+2,其中,其中,m是程序流图是程序流图G中边的数量,中边的数量,n是结点的数量。是结点的数量。如果如果P是流图中判定结点的个数:是流图中判定结点的个数:V(G)=P+1。源代。源代码码IF语句及语句及While、For或或Repeat循环语句的判定结点数循环语句的判定结点数为为1,而,而Case型等多分支语句的判定结点数等于可能的分型等多分支语句的判定结点数等于可能的分支数减去支数减去1。环路复杂度等于环路复杂度等于控制流图的区域数控制流图的区域数。山东建筑大学计算机科学与技术学院软件工程专业Testing基本路径法基本路径法-设计步骤设计步
26、骤基本路径测试法设计测试用例的步骤如下:基本路径测试法设计测试用例的步骤如下:l以详细设计或源代码作为基础,以详细设计或源代码作为基础,导出程序的导出程序的控制流图控制流图。l计算得到控制流图计算得到控制流图G的的环路复杂性环路复杂性V(G)。)。l确定线性独立路径确定线性独立路径的基本集合。的基本集合。l生成测试用例生成测试用例,确保基本路径集中的每条路,确保基本路径集中的每条路径执行。径执行。山东建筑大学计算机科学与技术学院软件工程专业Testing基本路径法基本路径法-举例举例第一步:画出程序控制流图第一步:画出程序控制流图。A1B=0X=X-AA=5X=X+3X1X=B/X请试着给出控
27、制流图?请试着给出控制流图?山东建筑大学计算机科学与技术学院软件工程专业Testing基本路径法基本路径法-举例举例第二步:计算环路复杂性第二步:计算环路复杂性 根据流图可以算出:根据流图可以算出:V(G)mn210725。第三步:确定独立路径数:第三步:确定独立路径数:l路径路径1:(A-B-C-F-J)l路径路径2:(A-B-C-F-G-H)l路径路径3:(A-B-C-I-H)l路径路径4:(A-D-F-J)l路径路径5:(E-F-J)山东建筑大学计算机科学与技术学院软件工程专业Testing基本路径法基本路径法-举例举例第二步:计算环路复杂性第二步:计算环路复杂性 根据流图可以算出:根据
28、流图可以算出:V(G)mn210725。第三步:确定独立路径数:第三步:确定独立路径数:l路径路径1:(A-B-C-F-J)l路径路径2:(A-B-C-F-G-H)l路径路径3:(A-B-C-I-H)l路径路径4:(A-D-F-J)l路径路径5:(E-F-J)第四步:生成测试用例第四步:生成测试用例A=2,B=0,X=1A=2,B=0,X=4A=5,B=0,X=1A=2,B=1,X=1A=1,B=0,X=1A1B=0X=X-AA=5X=X+3X1X=B/X山东建筑大学计算机科学与技术学院软件工程专业Testing基本路径法总结基本路径法总结基本路径测试法设计步骤如下:基本路径测试法设计步骤如下
29、:l导出程序的控制流图导出程序的控制流图。l计算环路复杂性计算环路复杂性。l确定独立路径确定独立路径。l生成测试用例生成测试用例。通过这种方法只是导出了基本路径集合,通过这种方法只是导出了基本路径集合,如果基本路径中包含如果基本路径中包含循环循环的话,还要结合循的话,还要结合循环测试方法来测试。环测试方法来测试。山东建筑大学计算机科学与技术学院软件工程专业Testing路径测试作业题路径测试作业题 程序流程图描程序流程图描述的是,最多输入述的是,最多输入50个值(以个值(以-1为输为输入结束标志),计入结束标志),计算其中有效的学生算其中有效的学生分数的个数,总分分数的个数,总分和平均值。和平
30、均值。山东建筑大学计算机科学与技术学院软件工程专业Testing作业题作业题1.Void DoWork(int x,int y,int z)int k=0;j=0;if(x3)&(z5)j=x*y+10;j=j%3;1.要求划出流程图。要求划出流程图。2.用尽可能少的测试用例使用尽可能少的测试用例使满足语句覆盖、判定覆盖、满足语句覆盖、判定覆盖、条件覆盖、判定条件覆盖和条件覆盖、判定条件覆盖和条件组合覆盖。条件组合覆盖。3.分析自己设计的测试用例分析自己设计的测试用例引出的每类覆盖存在的问题。引出的每类覆盖存在的问题。山东建筑大学计算机科学与技术学院软件工程专业Testing作业题作业题2.用用C语言编写选择排序的程序,并用白语言编写选择排序的程序,并用白盒法进行测试。盒法进行测试。山东建筑大学计算机科学与技术学院软件工程专业C l i c k t o e d i t c o m p a n y s l o g a n 山东建筑大学计算机科学与技术学院软件工程专业