第08課-白盒測試路徑分析測試(基本路徑測試)_第1頁
第08課-白盒測試路徑分析測試(基本路徑測試)_第2頁
第08課-白盒測試路徑分析測試(基本路徑測試)_第3頁
第08課-白盒測試路徑分析測試(基本路徑測試)_第4頁
第08課-白盒測試路徑分析測試(基本路徑測試)_第5頁
已閱讀5頁,還剩58頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

把程序看成裝在一個透明的白盒子里,程序的結(jié)構(gòu)和處理呈現(xiàn)過程完全可見,按照程序的內(nèi)部邏輯測試程序,以檢查程序中的每條通路是否都能按照預(yù)先要求正確工作。

第3章白盒測試方法

2路徑分析測試3分支條件測試、循環(huán)測試4其它測試類型5主要內(nèi)容綜合測試實例

6黑盒測試與白盒測試1邏輯覆蓋測試白盒測試的常用方法邏輯覆蓋路徑分析測試

循環(huán)、條件分支…基本路徑測試相關(guān)概念基本路徑本質(zhì)上是從程序入口到出口的一些通路。之所以稱其為基本路徑,原因在于可以通過對基本路徑進行連接或者重復(fù)操作得到程序中的其它路徑控制流圖基于代碼結(jié)構(gòu)構(gòu)造的有向圖,可用于描述程序的控制結(jié)構(gòu)測試思想

根據(jù)程序的控制流圖找出一個模塊所需測試的基本路徑,根據(jù)這些基本路徑設(shè)計構(gòu)造相應(yīng)的測試用例基本路徑測試設(shè)計步驟根據(jù)模塊邏輯構(gòu)造控制流圖(FlowGraph)計算控制流圖的環(huán)復(fù)雜度(CyclomaticComplexity)列出包含起始節(jié)點和終止節(jié)點的基本路徑檢查一下列出的基本路徑數(shù)目是否超過控制流圖的環(huán)復(fù)雜度設(shè)計覆蓋這些基本路徑的測試用例控制流圖說明控制流圖是由節(jié)點和邊組成的有向圖節(jié)點代表了代碼或程序流程圖中矩形框中所表示的處理,菱形表示的判斷處理以及判斷處理流程相交的匯合點,在圖中用標(biāo)有編號的圓圈表示邊表明了控制的順序,在圖中用有向箭頭表示??刂屏鲌D三種邏輯結(jié)構(gòu)的控制流圖順序條件循環(huán)控制流圖

如果判定中的條件表達式是復(fù)合條件時,即條件表達式是由一個或多個邏輯運算符(OR,AND,NAND,NOR)連接的邏輯表達式,則需要改復(fù)合條件的判定為一系列只有單個條件的嵌套的判定。例如對應(yīng)圖(a)

的復(fù)合條件的判定,應(yīng)該畫成如圖(b)

所示的控制流圖。條件語句ifaORb中條件a和條件b各有一個只有單個條件的判定結(jié)點。環(huán)復(fù)雜度含義用V(G)表示用來衡量一個模塊判定結(jié)構(gòu)的復(fù)雜程度,在數(shù)量上表現(xiàn)為獨立的路徑條數(shù),是需要測試的基本路徑數(shù)目的上限。環(huán)復(fù)雜度計算公式V(G)=閉合區(qū)域的數(shù)目由節(jié)點和邊圍成的封閉區(qū)域這些封閉區(qū)域一定是不可再分的包括周邊的區(qū)域V(G)=二值判定節(jié)點個數(shù)+1.V(G)=邊的數(shù)目-節(jié)點的數(shù)目+2環(huán)復(fù)雜度環(huán)復(fù)雜度閉合區(qū)域的數(shù)目=5二值判定節(jié)點個數(shù)+1=4+1=5邊的數(shù)目-節(jié)點的數(shù)目+2=16-13+2=5基本路徑實用的定義一條路徑是基本路徑如果:是一條從起始節(jié)點到終止節(jié)點的路徑.至少包含一條其它基本路徑?jīng)]有包含的邊.(至少引入一個新處理語句或一個新判斷的程序通路.)注意:對于循環(huán)而言,基本路徑應(yīng)包含不執(zhí)行循環(huán)和執(zhí)行一次循環(huán)體?;韭窂交韭窂?-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基本路徑測試方法舉例基本路徑測試用例的設(shè)計

voidsort(intirecordnum,intitype){intx=0;inty=0;while(irecordnum-->0){if(itype==0)break; elseif(itype==1)x=x+10;elsey=y+20;}}基本路徑測試方法舉例1.依據(jù)程序內(nèi)部邏輯畫出相應(yīng)的流圖476149101213R1R2R3R4基本路徑測試方法舉例2.計算流圖的環(huán)形復(fù)雜度(McCabe定義的程序復(fù)雜性度量值)計算環(huán)路復(fù)雜度的三種方法環(huán)路復(fù)雜度=邊數(shù)-節(jié)點數(shù)+2=10-8+2=4環(huán)路復(fù)雜度=判斷節(jié)點數(shù)+1=3+1=4環(huán)路復(fù)雜度=區(qū)域的數(shù)目=4可以計算上圖所示流圖的環(huán)形復(fù)雜度為4基本路徑測試方法舉例3.確定獨立路徑組成的基本路徑集合程序的環(huán)形復(fù)雜度=程序中獨立路徑的數(shù)量路徑1:4→14路徑2:4→6→7→14路徑3:4→6→9→10→13→4→14路徑4:4→6→9→12→13→4→144.設(shè)計出可強制執(zhí)行基本集合中每條路徑的測試用例輸入數(shù)據(jù)預(yù)期輸出測試用例1irecordnum=0itype=0x=0y=0測試用例2irecordnum=1itype=0x=0y=0測試用例3irecordnum=1itype=1x=10y=0測試用例4irecordnum=1itype=2x=0y=20案例2——三角形問題使用基本路徑設(shè)計測試用例方法推導(dǎo)三角形問題的測試用例控制流圖81-8687889299-10093102959697-9889-9094環(huán)復(fù)雜度環(huán)復(fù)雜度閉合區(qū)域的數(shù)目

=5二值判定節(jié)點個數(shù)+1=4+1=5邊的數(shù)目-節(jié)點的數(shù)目+2=15-12+2=581-8687889299-10093102959697-9889-9094基本路徑和測試用例(1)基本路徑和測試用例81-86->87->88->92->93->95->97-98->102相應(yīng)的測試用例:測試輸入=(68,68,56)預(yù)期結(jié)果=這是一個等腰三角形!81-86->87->88->92->93->95->96->102相應(yīng)的測試用例:測試輸入=(68,60,56)預(yù)期結(jié)果=這是一個不等邊三角形!81-8687889299-10093102959697-9889-9094基本路徑和測試用例81-86->87->88->92->93->94->102相應(yīng)的測試用例:測試輸入=(68,68,68)預(yù)期結(jié)果=這是一個等邊三角形!81-86->87->89-90->92->99-100->102相應(yīng)的測試用例:測試輸入=(68,8,60)預(yù)期結(jié)果=這不是一個三角形!基本路徑和測試用例(2)81-8687889299-10093102959697-9889-9094基本路徑與環(huán)復(fù)雜度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->10281-8687889299-10093102959697-9889-9094并不是所有的基本路徑都對應(yīng)程序的可執(zhí)行通路,都可作為設(shè)計測試用例的依據(jù)。之所以存在這種情況,是因為控制流圖中并不包含程序的處理信息,無法明確前后節(jié)點之間的邏輯關(guān)系。基本路徑與環(huán)復(fù)雜度結(jié)論如果基本路徑必須是可行的,則邏輯關(guān)系會壓縮基本路徑集合數(shù)量,因此環(huán)復(fù)雜度是包含起始點和終止點的基本路徑數(shù)目的上限案例分析3——已知程序代碼,根據(jù)基本路徑測試法,導(dǎo)出測試用例根據(jù)基本路徑測試法生成測試用例,確?;韭窂郊忻織l路徑的執(zhí)行。以一個求平均值的過程averagy為例,說明測試用例的設(shè)計過程。用PDL語言描述的averagy過程如下:PROCEDUREaveragy;

*Thisprocedurecomputestheaveragyof100orfewernumbersthatlieboundingvalues;italsocomputesthetotalinputandthetotalvalid.

INTERFACERETURNSaveragy,total.input,total.valid;

INTERFACEACCEPTSvalue,minimum,maximum;TYPEvalue[1:100]ISSCALARARRAY;

TYPEaveragy,total.input,total.valid,minimum,maximum,sumISSCALAR;

TYPEiISINTEGER;i=1;

total.input=total.valid=0;

sum=0;

DOWHILEvalue[i]<>-999ANDtotal.input<100

incrementtotal.validby1;

IFvalue[i]>=minimumANDvalue[i]<=maximum

THENincrementtotal.valid[i];

ELSEskip;

ENDIF

Incrementiby1;

ENDDO

IFtotal.valid>0

THENaveragy=sum/total.valid;

ELSEaveragy=-999;

ENDIF

ENDaveragy(1)由過程描述導(dǎo)出控制流圖

在上面給出的過程中,針對要映射為對應(yīng)控制流圖中一個結(jié)點的PDL語句或語句組,標(biāo)記上用數(shù)字表示的標(biāo)號。加了標(biāo)號的PDL程序如下(只有可執(zhí)行語句部分):對應(yīng)的控制流圖如圖所示:該圖所有的6條路徑是:

path1:1-2-10-11-13

path2:1-2-10-12-13

path3:1-2-3-10-11-13

path4:1-2-3-4-5-8-9-2-10-11-13……

path5:1-2-3-4-5-6-8-9-2-10-12-13……

path6:1-2-3-4-5-6-7-8-9-2-3-10-11-13……

path4、path5、path6后面的省略號(……)表示在控制結(jié)構(gòu)中以后剩下的路徑是可選擇的。在很多情況下,標(biāo)識判斷結(jié)點,常常能夠有效地幫助導(dǎo)出測試用例。在上例中,結(jié)點2、3、5、6和10都是判斷結(jié)點。滿足上例基本路徑集的測試用例是:path1:輸入數(shù)據(jù):value[k]=有效輸入,限于k<i(i定義如下)

value[i]=-999,當(dāng)2≤i≤100

預(yù)期結(jié)果:n個值的正確的平均值、正確的總計數(shù)。

注意:不能孤立地進行測試,應(yīng)當(dāng)作為路徑4、5、6測試的一部分來測試。

path2:輸入數(shù)據(jù):value[1]=-999

預(yù)期結(jié)果:平均值=-999,總計數(shù)取初始值。

path3:輸入數(shù)據(jù):試圖處理101個或更多的值,而前100個應(yīng)當(dāng)是有效的值。

預(yù)期結(jié)果:與測試用例1相同。path4:輸入數(shù)據(jù):value[i]=有效輸入,且i<100

value[k]<最小值,當(dāng)k<i時

預(yù)期結(jié)果:n個值的正確的平均值,正確的總計數(shù)path5:輸入數(shù)據(jù):value[i]=有效輸入,且i<100

value[k]>最大值,當(dāng)k≤i時

預(yù)期結(jié)果:n個值的正確的平均值,正確的總計數(shù)

path6:輸入數(shù)據(jù):value[i]=有效輸入,且i<100

預(yù)期結(jié)果:n個值的正確的平均值,正確的總計數(shù)每個測試用例執(zhí)行之后,與預(yù)期結(jié)果進行比較。如果所有測試用例都執(zhí)行完畢,則可以確信程序中所有的可執(zhí)行語句至少被執(zhí)行了一次。白盒測試用例設(shè)計作業(yè)使用邏輯覆蓋和基本路徑方法完成教材P88頁第7題:(1)分別以語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋和路徑覆蓋方法設(shè)計測試用例,并寫出每個測試用例的執(zhí)行路徑。(2)畫出程序的控制流圖。用基本路徑測試方法設(shè)計測試用例。白盒測試用例設(shè)計練習(xí)T1T2T3T4TATB白盒測試用例設(shè)計練習(xí)1.要滿足語句覆蓋,執(zhí)行路徑通過:1→2→3→4→5即可??稍O(shè)計測試用例:A=4B=0X=8(路徑1→2→3→4→5)2.要滿足判定覆蓋,兩個判定表達式的取真和取假分支都要走到,執(zhí)行路徑通過:1→3→5和1→2→3→4→5即可:1:A=4B=0X=8(路徑1→2→3→4→5覆蓋條件:TATB)2:A=1B=1X=1(路徑1→3→5覆蓋條件:~TA~TB)白盒測試用例設(shè)計練習(xí)3.要滿足條件覆蓋,每個判定中的每個條件的可能取值都要取到,即:T1T2T3T4~T1~T2~T3~T4。觀察前面設(shè)計測試用例:1:A=4B=0X=8(路徑1→2→3→4→5覆蓋條件:T1T2T3T4)2:A=1B=1X=1(路徑1→3→5覆蓋條件:~T1~T2~T3~T4)上述測試用例覆蓋了4個條件產(chǎn)生的8種情況。4.可見,這組測試用例同時覆蓋了兩個判定的取真分支和取假分支以及4個條件產(chǎn)生的8種情況,所以它們滿足判定-條件覆蓋的標(biāo)準(zhǔn)。白盒測試用例設(shè)計練習(xí)5.要滿足條件組合覆蓋,每個判定中各條件的每一種組合至少要出現(xiàn)一次,在兩個判定中有8種可能的組合:①A>2,B=0:T1,T2 ②A>2,B≠0:T1,~T2③A≤2,B=0:~T1,T2 ④A≤2,B≠0:~T1,~T2⑤A=4,X>1:T3,T4 ⑥A=4,X≤1:T3,~T4⑦A≠4,X>1:~T3,T4 ⑧A≠4,X≤1:~T3,~T4設(shè)計測試用例:(沿用前面兩個測試用例)1:A=4B=0X=8(路徑1→2→3→4→5覆蓋條件:T1T2T3T4①⑤)2:A=1B=1X=1(路徑1→3→5覆蓋條件:~T1~T2~T3~T4④⑧) 3:A=4B=1X=1(路徑1→3→4→5覆蓋條件:T1~T2T3~T4②⑥)4:A=0B=0X=4(路徑1→3→4→5覆蓋條件:~T1T2~T3T4③⑦)白盒測試用例設(shè)計練習(xí)6.要滿足路徑覆蓋,每一條可能的路徑至少執(zhí)行一次,可能的路徑包括:1→3→5;1→2→3→4→5;1→3→4→5;1→2→3→5。觀察條件組合覆蓋的測試用例,可以保留前三個,再增加下面一個新的用例即可:1:A=1B=1X=1(路徑1→3→5覆蓋條件:~T1~T2~T3~T4④⑧) 2:A=4B=0X=8(路徑1→2→3→4→5覆蓋條件:T1T2T3T4①⑤)3:A=4B=1X=1(路徑1→3→4→5覆蓋條件:T1~T2T3~T4②⑥)4:A=3B=0X=0(路徑1→2→3→5覆蓋條件:T1T2~T3~T4①⑧)白盒測試用例設(shè)計練習(xí)設(shè)計的測試用例測試用例執(zhí)行路徑覆蓋條件覆蓋組合號語句覆蓋判定覆蓋條件覆蓋判定-條件覆蓋A=1B=1X=1A=4B=0X=81→3→51→2→3→4→5~TA~TB~T1~T2~T3~T4TATBT1T2T3T4條件組合覆蓋A=1B=1X=1A=4B=0X=8A=4B=1X=1A=0B=0X=41→3→51→2→3→4→51→3→4→51→3→4→5~T1~T2~T3~T4T1T2T3T4T1~T2T3~T4~T1T2~T3T4④⑧①⑤②⑥③⑦路徑覆蓋A=1B=1X=1A=4B=0X=8A=4B=1X=1A=3B=0X=01→3→51→2→3→4→51→3→4→51→2→3→5~T1~T2~T3~T4T1T2T3T4T1~T2T3~T4T1T2~T3~T4白盒測試用例設(shè)計練習(xí)基本路徑數(shù):流圖的環(huán)形復(fù)雜度=5確定獨立路徑的基本集合。路徑1:1→1-1→1-2→2→3-1→3-2→5輸入:A=3,B=0,X=3;預(yù)期輸出:X=1路徑2:1→1-1→3-1→3-2→5輸入:A=0,B=0(任意)

,X=1;預(yù)期輸出:X=1路徑3:1→1-1→1-2→3-1→3-2→5輸入:A=3,B=1,X=1;預(yù)期輸出:X=1路徑4:1→1-1→1-2→2→3-1→4→5輸入:A=4,B=0,X=1;預(yù)期輸出:X=1路徑5:1→1-1→1-2→2→3-1→3-2→4→5輸入:A=3,B=0,X=6;預(yù)期輸出:X=3設(shè)計執(zhí)行基本路徑集合中每條路徑的測試用例?;韭窂綔y試相關(guān)概念基本路徑本質(zhì)上是從程序入口到出口的一些通路。之所以稱其為基本路徑,原因在于可以通過對基本路徑進行連接或者重復(fù)操作得到程序中的其它路徑控制流圖基于代碼結(jié)構(gòu)構(gòu)造的有向圖,可用于描述程序的控制結(jié)構(gòu)測試思想

根據(jù)程序的控制流圖找出一個模塊所需測試的基本路徑,根據(jù)這些基本路徑設(shè)計構(gòu)造相應(yīng)的測試用例總結(jié)基本路徑測試思想:根據(jù)程序的控制流圖找出一個模塊所需測試的基本路徑,根據(jù)這些基本路徑設(shè)計構(gòu)造相應(yīng)的測試用例基本路徑測試設(shè)計步驟根據(jù)模塊邏輯構(gòu)造控制流圖(FlowGraph)計算控制流圖的環(huán)復(fù)雜度(CyclomaticComplexity)列出包含起始節(jié)點和終止節(jié)點的基本路徑設(shè)計覆蓋這些基本路徑的測試用例其中第1、3、4步是重難點。綜合運用白盒測試方法綜合運用白盒測試技術(shù)設(shè)計下面代碼的測試用例

4-46參考答案設(shè)計步驟構(gòu)造被測代碼的控制流圖,運用基本路徑測試方法設(shè)計相關(guān)測試用例針對代碼中的各個邏輯條件,運用分支-條件測試方法設(shè)計相關(guān)測試用例針對代碼中的循環(huán),運用循環(huán)測試方法設(shè)計相關(guān)測試用例合并前三步所得結(jié)果在第四步的基礎(chǔ)上,根據(jù)被測對象的特點增加相關(guān)測試用例

4-47以簡單條件為節(jié)點②①③④⑥⑤⑧⑦⑨⑩11121312345678910111213

4-48環(huán)復(fù)雜度環(huán)復(fù)雜度閉合區(qū)域的數(shù)目=6二值判定節(jié)點個數(shù)+1=5+1=6邊的數(shù)目-節(jié)點的數(shù)目+2=17-13+2=612345678910111213

4-49基本路徑基本路徑和相應(yīng)的測試用例1->2->10->12->13(10-11?)測試用例:測試輸入=((-999),0,360)預(yù)期結(jié)果=-9991->2->3->10->11->13測試用例測試輸入=((0..100,-999),0,360),預(yù)期結(jié)果=49.512345678910111213

4-50基本路徑基本路徑和相應(yīng)的測試用例1->2->3->4->5->6->7->9->2->10->11->13測試用例:測試輸入=((180,-999),0,360),預(yù)期結(jié)果=1801->2->3->4->5->8->2->10->12->13測試用例:測試輸入=((-10,-999),0,360),預(yù)期結(jié)果=-99912345678910111213

4-51基本路徑基本路徑和相應(yīng)的測試用例1->2->3->4->5->6->8->2->10->12->13測試用例:測試輸入=((380,-999),0,360),預(yù)期結(jié)果=-99912345678910111213

4-52分支-條件測試需測試的邏輯條件Dowhile((value[i]!=-999)&&(inputNumber<100))if((value[i]>=minimum)&&(value[i]<=maximum))ifvalidNumber>0

4-53分支-條件測試分支和相應(yīng)的測試用例相應(yīng)的測試用例測試輸入=((180,-999),0,360),預(yù)期結(jié)果=180測試輸入=((-999),0,360),預(yù)期結(jié)果=-999測試輸入=((0..100,-999),0,360),預(yù)期結(jié)果=49.5

4-54分支-條件測試分支和相應(yīng)的測試用例相應(yīng)的測試用例測試輸入=((180,-999),0,360),預(yù)期結(jié)果=180測試輸入=((-10,-999),0,360),預(yù)期結(jié)果=-999測試輸入=((380,,-999),0,360),預(yù)期結(jié)果=-999

4-55分支-條件測試分支和相應(yīng)的測試用例相應(yīng)的測試用例測試輸入=((180,-999),0,360),預(yù)期結(jié)果=180測試輸入=((-999),0,360),預(yù)期結(jié)果=-999

4-56循環(huán)測試需測試的循環(huán)條件Dowhile((value[i]!=-999)&&(inputNumber<100))直接跳過循環(huán)體測試用例:測試輸入=((-999),0,360),預(yù)期結(jié)果=-999只執(zhí)行一遍循環(huán)體測試用例:測試輸入=((180,-999),0,360),預(yù)期結(jié)果=180連續(xù)執(zhí)行兩遍循環(huán)體測試用例:測試輸入=((10,20,-999),0,360),預(yù)期結(jié)果=15

4-57循環(huán)測試需測試的循環(huán)條件Dowhile((value[i]!=-999)&&(inputNumber<100))如果循環(huán)次數(shù)為n,執(zhí)行m(m<n)遍循環(huán)體測試用例:測試輸入=((0..49,-999),0,360),預(yù)期結(jié)果=24.5如果循環(huán)次數(shù)為n,那么執(zhí)行n-1遍循環(huán)體測試用例:測試輸入=((0..98,-999),0,360),預(yù)期結(jié)果=49.0如果循環(huán)次數(shù)為n,那么執(zhí)行n遍循環(huán)體測試用例:測試輸入=((0..99,-999),0,360),預(yù)期結(jié)果=49.5

4-58循環(huán)測試需測試的循環(huán)條件Dowhile((value[i]!=-999)&&(inputNumber<100))測試用例:測試輸入=((0..100,-999),0,360),預(yù)期結(jié)果=50

4-59結(jié)果合并合并的結(jié)果測試輸入=((-999),0,3

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論