版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
把程序看成裝在一個透明的白盒子里,程序的結構和處理呈現過程完全可見,按照程序的內部邏輯測試程序,以檢查程序中的每條通路是否都能按照預先要求正確工作。
第3章白盒測試方法
2路徑分析測試3分支條件測試、循環(huán)測試4其它測試類型5主要內容綜合測試實例
6黑盒測試與白盒測試1邏輯覆蓋測試白盒測試的常用方法邏輯覆蓋路徑分析測試
循環(huán)、條件分支…基本路徑測試相關概念基本路徑本質上是從程序入口到出口的一些通路。之所以稱其為基本路徑,原因在于可以通過對基本路徑進行連接或者重復操作得到程序中的其它路徑控制流圖基于代碼結構構造的有向圖,可用于描述程序的控制結構測試思想
根據程序的控制流圖找出一個模塊所需測試的基本路徑,根據這些基本路徑設計構造相應的測試用例基本路徑測試設計步驟根據模塊邏輯構造控制流圖(FlowGraph)計算控制流圖的環(huán)復雜度(CyclomaticComplexity)列出包含起始節(jié)點和終止節(jié)點的基本路徑檢查一下列出的基本路徑數目是否超過控制流圖的環(huán)復雜度設計覆蓋這些基本路徑的測試用例控制流圖說明控制流圖是由節(jié)點和邊組成的有向圖節(jié)點代表了代碼或程序流程圖中矩形框中所表示的處理,菱形表示的判斷處理以及判斷處理流程相交的匯合點,在圖中用標有編號的圓圈表示邊表明了控制的順序,在圖中用有向箭頭表示??刂屏鲌D三種邏輯結構的控制流圖順序條件循環(huán)控制流圖
如果判定中的條件表達式是復合條件時,即條件表達式是由一個或多個邏輯運算符(OR,AND,NAND,NOR)連接的邏輯表達式,則需要改復合條件的判定為一系列只有單個條件的嵌套的判定。例如對應圖(a)
的復合條件的判定,應該畫成如圖(b)
所示的控制流圖。條件語句ifaORb中條件a和條件b各有一個只有單個條件的判定結點。環(huán)復雜度含義用V(G)表示用來衡量一個模塊判定結構的復雜程度,在數量上表現為獨立的路徑條數,是需要測試的基本路徑數目的上限。環(huán)復雜度計算公式V(G)=閉合區(qū)域的數目由節(jié)點和邊圍成的封閉區(qū)域這些封閉區(qū)域一定是不可再分的包括周邊的區(qū)域V(G)=二值判定節(jié)點個數+1.V(G)=邊的數目-節(jié)點的數目+2環(huán)復雜度環(huán)復雜度閉合區(qū)域的數目=5二值判定節(jié)點個數+1=4+1=5邊的數目-節(jié)點的數目+2=16-13+2=5基本路徑實用的定義一條路徑是基本路徑如果:是一條從起始節(jié)點到終止節(jié)點的路徑.至少包含一條其它基本路徑沒有包含的邊.(至少引入一個新處理語句或一個新判斷的程序通路.)注意:對于循環(huán)而言,基本路徑應包含不執(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基本路徑測試方法舉例基本路徑測試用例的設計
voidsort(intirecordnum,intitype){intx=0;inty=0;while(irecordnum-->0){if(itype==0)break; elseif(itype==1)x=x+10;elsey=y+20;}}基本路徑測試方法舉例1.依據程序內部邏輯畫出相應的流圖476149101213R1R2R3R4基本路徑測試方法舉例2.計算流圖的環(huán)形復雜度(McCabe定義的程序復雜性度量值)計算環(huán)路復雜度的三種方法環(huán)路復雜度=邊數-節(jié)點數+2=10-8+2=4環(huán)路復雜度=判斷節(jié)點數+1=3+1=4環(huán)路復雜度=區(qū)域的數目=4可以計算上圖所示流圖的環(huán)形復雜度為4基本路徑測試方法舉例3.確定獨立路徑組成的基本路徑集合程序的環(huán)形復雜度=程序中獨立路徑的數量路徑1:4→14路徑2:4→6→7→14路徑3:4→6→9→10→13→4→14路徑4:4→6→9→12→13→4→144.設計出可強制執(zhí)行基本集合中每條路徑的測試用例輸入數據預期輸出測試用例1irecordnum=0itype=0x=0y=0測試用例2irecordnum=1itype=0x=0y=0測試用例3irecordnum=1itype=1x=10y=0測試用例4irecordnum=1itype=2x=0y=20案例2——三角形問題使用基本路徑設計測試用例方法推導三角形問題的測試用例控制流圖81-8687889299-10093102959697-9889-9094環(huán)復雜度環(huán)復雜度閉合區(qū)域的數目
=5二值判定節(jié)點個數+1=4+1=5邊的數目-節(jié)點的數目+2=15-12+2=581-8687889299-10093102959697-9889-9094基本路徑和測試用例(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)預期結果=這是一個不等邊三角形!81-8687889299-10093102959697-9889-9094基本路徑和測試用例81-86->87->88->92->93->94->102相應的測試用例:測試輸入=(68,68,68)預期結果=這是一個等邊三角形!81-86->87->89-90->92->99-100->102相應的測試用例:測試輸入=(68,8,60)預期結果=這不是一個三角形!基本路徑和測試用例(2)81-8687889299-10093102959697-9889-9094基本路徑與環(huán)復雜度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并不是所有的基本路徑都對應程序的可執(zhí)行通路,都可作為設計測試用例的依據。之所以存在這種情況,是因為控制流圖中并不包含程序的處理信息,無法明確前后節(jié)點之間的邏輯關系。基本路徑與環(huán)復雜度結論如果基本路徑必須是可行的,則邏輯關系會壓縮基本路徑集合數量,因此環(huán)復雜度是包含起始點和終止點的基本路徑數目的上限案例分析3——已知程序代碼,根據基本路徑測試法,導出測試用例根據基本路徑測試法生成測試用例,確?;韭窂郊忻織l路徑的執(zhí)行。以一個求平均值的過程averagy為例,說明測試用例的設計過程。用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)由過程描述導出控制流圖
在上面給出的過程中,針對要映射為對應控制流圖中一個結點的PDL語句或語句組,標記上用數字表示的標號。加了標號的PDL程序如下(只有可執(zhí)行語句部分):對應的控制流圖如圖所示:該圖所有的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后面的省略號(……)表示在控制結構中以后剩下的路徑是可選擇的。在很多情況下,標識判斷結點,常常能夠有效地幫助導出測試用例。在上例中,結點2、3、5、6和10都是判斷結點。滿足上例基本路徑集的測試用例是:path1:輸入數據:value[k]=有效輸入,限于k<i(i定義如下)
value[i]=-999,當2≤i≤100
預期結果:n個值的正確的平均值、正確的總計數。
注意:不能孤立地進行測試,應當作為路徑4、5、6測試的一部分來測試。
path2:輸入數據:value[1]=-999
預期結果:平均值=-999,總計數取初始值。
path3:輸入數據:試圖處理101個或更多的值,而前100個應當是有效的值。
預期結果:與測試用例1相同。path4:輸入數據:value[i]=有效輸入,且i<100
value[k]<最小值,當k<i時
預期結果:n個值的正確的平均值,正確的總計數path5:輸入數據:value[i]=有效輸入,且i<100
value[k]>最大值,當k≤i時
預期結果:n個值的正確的平均值,正確的總計數
path6:輸入數據:value[i]=有效輸入,且i<100
預期結果:n個值的正確的平均值,正確的總計數每個測試用例執(zhí)行之后,與預期結果進行比較。如果所有測試用例都執(zhí)行完畢,則可以確信程序中所有的可執(zhí)行語句至少被執(zhí)行了一次。白盒測試用例設計作業(yè)使用邏輯覆蓋和基本路徑方法完成教材P88頁第7題:(1)分別以語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋和路徑覆蓋方法設計測試用例,并寫出每個測試用例的執(zhí)行路徑。(2)畫出程序的控制流圖。用基本路徑測試方法設計測試用例。白盒測試用例設計練習T1T2T3T4TATB白盒測試用例設計練習1.要滿足語句覆蓋,執(zhí)行路徑通過:1→2→3→4→5即可??稍O計測試用例: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)白盒測試用例設計練習3.要滿足條件覆蓋,每個判定中的每個條件的可能取值都要取到,即:T1T2T3T4~T1~T2~T3~T4。觀察前面設計測試用例:1:A=4B=0X=8(路徑1→2→3→4→5覆蓋條件:T1T2T3T4)2:A=1B=1X=1(路徑1→3→5覆蓋條件:~T1~T2~T3~T4)上述測試用例覆蓋了4個條件產生的8種情況。4.可見,這組測試用例同時覆蓋了兩個判定的取真分支和取假分支以及4個條件產生的8種情況,所以它們滿足判定-條件覆蓋的標準。白盒測試用例設計練習5.要滿足條件組合覆蓋,每個判定中各條件的每一種組合至少要出現一次,在兩個判定中有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設計測試用例:(沿用前面兩個測試用例)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③⑦)白盒測試用例設計練習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①⑧)白盒測試用例設計練習設計的測試用例測試用例執(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白盒測試用例設計練習基本路徑數:流圖的環(huán)形復雜度=5確定獨立路徑的基本集合。路徑1:1→1-1→1-2→2→3-1→3-2→5輸入:A=3,B=0,X=3;預期輸出:X=1路徑2:1→1-1→3-1→3-2→5輸入:A=0,B=0(任意)
,X=1;預期輸出:X=1路徑3:1→1-1→1-2→3-1→3-2→5輸入:A=3,B=1,X=1;預期輸出:X=1路徑4:1→1-1→1-2→2→3-1→4→5輸入:A=4,B=0,X=1;預期輸出:X=1路徑5:1→1-1→1-2→2→3-1→3-2→4→5輸入:A=3,B=0,X=6;預期輸出:X=3設計執(zhí)行基本路徑集合中每條路徑的測試用例?;韭窂綔y試相關概念基本路徑本質上是從程序入口到出口的一些通路。之所以稱其為基本路徑,原因在于可以通過對基本路徑進行連接或者重復操作得到程序中的其它路徑控制流圖基于代碼結構構造的有向圖,可用于描述程序的控制結構測試思想
根據程序的控制流圖找出一個模塊所需測試的基本路徑,根據這些基本路徑設計構造相應的測試用例總結基本路徑測試思想:根據程序的控制流圖找出一個模塊所需測試的基本路徑,根據這些基本路徑設計構造相應的測試用例基本路徑測試設計步驟根據模塊邏輯構造控制流圖(FlowGraph)計算控制流圖的環(huán)復雜度(CyclomaticComplexity)列出包含起始節(jié)點和終止節(jié)點的基本路徑設計覆蓋這些基本路徑的測試用例其中第1、3、4步是重難點。綜合運用白盒測試方法綜合運用白盒測試技術設計下面代碼的測試用例
4-46參考答案設計步驟構造被測代碼的控制流圖,運用基本路徑測試方法設計相關測試用例針對代碼中的各個邏輯條件,運用分支-條件測試方法設計相關測試用例針對代碼中的循環(huán),運用循環(huán)測試方法設計相關測試用例合并前三步所得結果在第四步的基礎上,根據被測對象的特點增加相關測試用例
4-47以簡單條件為節(jié)點②①③④⑥⑤⑧⑦⑨⑩11121312345678910111213
4-48環(huán)復雜度環(huán)復雜度閉合區(qū)域的數目=6二值判定節(jié)點個數+1=5+1=6邊的數目-節(jié)點的數目+2=17-13+2=612345678910111213
4-49基本路徑基本路徑和相應的測試用例1->2->10->12->13(10-11?)測試用例:測試輸入=((-999),0,360)預期結果=-9991->2->3->10->11->13測試用例測試輸入=((0..100,-999),0,360),預期結果=49.512345678910111213
4-50基本路徑基本路徑和相應的測試用例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),預期結果=-99912345678910111213
4-51基本路徑基本路徑和相應的測試用例1->2->3->4->5->6->8->2->10->12->13測試用例:測試輸入=((380,-999),0,360),預期結果=-99912345678910111213
4-52分支-條件測試需測試的邏輯條件Dowhile((value[i]!=-999)&&(inputNumber<100))if((value[i]>=minimum)&&(value[i]<=maximum))ifvalidNumber>0
4-53分支-條件測試分支和相應的測試用例相應的測試用例測試輸入=((180,-999),0,360),預期結果=180測試輸入=((-999),0,360),預期結果=-999測試輸入=((0..100,-999),0,360),預期結果=49.5
4-54分支-條件測試分支和相應的測試用例相應的測試用例測試輸入=((180,-999),0,360),預期結果=180測試輸入=((-10,-999),0,360),預期結果=-999測試輸入=((380,,-999),0,360),預期結果=-999
4-55分支-條件測試分支和相應的測試用例相應的測試用例測試輸入=((180,-999),0,360),預期結果=180測試輸入=((-999),0,360),預期結果=-999
4-56循環(huán)測試需測試的循環(huán)條件Dowhile((value[i]!=-999)&&(inputNumber<100))直接跳過循環(huán)體測試用例:測試輸入=((-999),0,360),預期結果=-999只執(zhí)行一遍循環(huán)體測試用例:測試輸入=((180,-999),0,360),預期結果=180連續(xù)執(zhí)行兩遍循環(huán)體測試用例:測試輸入=((10,20,-999),0,360),預期結果=15
4-57循環(huán)測試需測試的循環(huán)條件Dowhile((value[i]!=-999)&&(inputNumber<100))如果循環(huán)次數為n,執(zhí)行m(m<n)遍循環(huán)體測試用例:測試輸入=((0..49,-999),0,360),預期結果=24.5如果循環(huán)次數為n,那么執(zhí)行n-1遍循環(huán)體測試用例:測試輸入=((0..98,-999),0,360),預期結果=49.0如果循環(huán)次數為n,那么執(zhí)行n遍循環(huán)體測試用例:測試輸入=((0..99,-999),0,360),預期結果=49.5
4-58循環(huán)測試需測試的循環(huán)條件Dowhile((value[i]!=-999)&&(inputNumber<100))測試用例:測試輸入=((0..100,-999),0,360),預期結果=50
4-59結果合并合并的結果測試輸入=((-999),0,3
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 46940-2025中醫(yī)藥中醫(yī)臨床術語系統(tǒng)分類框架
- 海外領事保護培訓課件
- 電子數據取證分析師崗前操作規(guī)范考核試卷含答案
- 布藝工操作能力競賽考核試卷含答案
- 船舶機工崗前個人技能考核試卷含答案
- 潤滑油調合操作工崗前情緒管理考核試卷含答案
- 漁網具工測試驗證測試考核試卷含答案
- 動物膠提膠濃縮工創(chuàng)新思維強化考核試卷含答案
- 酒店員工職業(yè)發(fā)展與晉升通道制度
- 浪費培訓教學課件
- 《水庫泥沙淤積及影響評估技術規(guī)范》
- 2023-2024學年浙江省杭州市西湖區(qū)教科版五年級上冊期末考試科學試卷
- GB/T 7948-2024滑動軸承塑料軸套極限PV試驗方法
- DL∕T 1057-2023 自動跟蹤補償消弧線圈成套裝置技術條件
- AQ 2003-2018 軋鋼安全規(guī)程(正式版)
- 兒童特發(fā)性矮身材診斷與治療中國專家共識(2023版)解讀
- 村委會指定監(jiān)護人證明書模板
- 送給業(yè)主禮物方案
- JJG 393-2018便攜式X、γ輻射周圍劑量當量(率)儀和監(jiān)測儀
- 辦理退休委托書
- 數據分析部年終述職報告總結
評論
0/150
提交評論