




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
把程序看成裝在一個(gè)透明的白盒子里,程序的結(jié)構(gòu)和處理呈現(xiàn)過程完全可見,按照程序的內(nèi)部邏輯測(cè)試程序,以檢查程序中的每條通路是否都能按照預(yù)先要求正確工作。
第4章白盒測(cè)試方法把程序看成裝在一個(gè)透明的白盒子里,程序的結(jié)構(gòu)和處理呈現(xiàn)過程完1
2路徑分析測(cè)試3分支條件測(cè)試、循環(huán)測(cè)試4其它測(cè)試類型5主要內(nèi)容綜合測(cè)試實(shí)例
6黑盒測(cè)試與白盒測(cè)試1邏輯覆蓋測(cè)試2路徑分析測(cè)試3分支條件測(cè)試、循環(huán)測(cè)試4其它測(cè)試類型5主要2白盒測(cè)試的常用方法邏輯覆蓋路徑分析測(cè)試
循環(huán)、條件分支…白盒測(cè)試的常用方法邏輯覆蓋路徑分析測(cè)試循環(huán)、條件分支…3白盒測(cè)試的基本概念什么是白盒測(cè)試把程序看成裝在一個(gè)透明的白盒子里,程序的結(jié)構(gòu)和處理過程完全可見,按照程序的內(nèi)部邏輯測(cè)試程序,以檢查程序中的每條通路是否都能按照預(yù)先要求正確工作。白盒測(cè)試的基本概念什么是白盒測(cè)試4(1)在測(cè)試中,應(yīng)盡量先使用工具進(jìn)行靜態(tài)結(jié)構(gòu)分析。(2)測(cè)試中可采取先靜態(tài)后動(dòng)態(tài)的組合方式:先進(jìn)行靜態(tài)結(jié)構(gòu)分析、代碼檢查,再進(jìn)行覆蓋率測(cè)試。白盒測(cè)試應(yīng)用策略(3)利用靜態(tài)分析的結(jié)果作為導(dǎo)引,通過代碼檢查和動(dòng)態(tài)測(cè)試的方式對(duì)靜態(tài)發(fā)現(xiàn)結(jié)果進(jìn)行進(jìn)一步的確認(rèn),使測(cè)試工作更為有效。白盒測(cè)試應(yīng)用策略(3)利用靜態(tài)分析的結(jié)果作為導(dǎo)引,通5白盒測(cè)試應(yīng)用策略(4)覆蓋率測(cè)試是白盒測(cè)試的重點(diǎn),一般可使用基本路徑測(cè)試法達(dá)到語句覆蓋標(biāo)準(zhǔn);對(duì)于軟件的重點(diǎn)模塊,應(yīng)使用多種覆蓋率標(biāo)準(zhǔn)衡量代碼的覆蓋率。(5)在不同的測(cè)試節(jié)點(diǎn),測(cè)試的側(cè)重點(diǎn)不同:在單元測(cè)試階段,以代碼檢查、邏輯覆蓋為主;在集成測(cè)試階段,需要增加靜態(tài)結(jié)構(gòu)分析等;在系統(tǒng)測(cè)試階段,應(yīng)根據(jù)黑盒測(cè)試的結(jié)果,采取相應(yīng)的白盒測(cè)試。白盒測(cè)試應(yīng)用策略(4)覆蓋率測(cè)試是白盒測(cè)試的重點(diǎn),一般可使用6面對(duì)對(duì)象的白盒測(cè)試類測(cè)試一般有兩種主要的方式:功能性測(cè)試和結(jié)構(gòu)性測(cè)試,即對(duì)應(yīng)于傳統(tǒng)結(jié)構(gòu)化軟件的黑盒測(cè)試和白盒測(cè)試。結(jié)構(gòu)性測(cè)試對(duì)類中的方法進(jìn)行測(cè)試,它把類作為一個(gè)單元來進(jìn)行測(cè)試。測(cè)試分為兩層:第一層考慮類中各獨(dú)立方法的代碼;第二層考慮方法之間的相互作用。對(duì)于一個(gè)類的測(cè)試要保證類在其狀態(tài)的代表集上能夠正確工作,構(gòu)造函數(shù)的參數(shù)選擇以及消息序列的選擇都要滿足這一準(zhǔn)則
面對(duì)對(duì)象的白盒測(cè)試類測(cè)試一般有兩種主要的方式:功能性測(cè)試和結(jié)7面對(duì)對(duì)象的白盒測(cè)試方法的單獨(dú)測(cè)試結(jié)構(gòu)性測(cè)試的第一層是考慮各獨(dú)立的方法,這可以與過程的測(cè)試采用同樣的方法,兩者之間最大的差別在于方法改變了它所在實(shí)例的狀態(tài),這就要取得隱藏的狀態(tài)信息來估算測(cè)試的結(jié)果,傳給其它對(duì)象的消息被忽略,而以樁來代替,并根據(jù)所傳的消息返回相應(yīng)的值,測(cè)試數(shù)據(jù)要求能完全覆蓋類中代碼,可以用傳統(tǒng)的測(cè)試技術(shù)來獲取。面對(duì)對(duì)象的白盒測(cè)試方法的單獨(dú)測(cè)試8面對(duì)對(duì)象的白盒測(cè)試方法的綜合測(cè)試第二層要考慮一個(gè)方法調(diào)用本對(duì)象類中的其它方法和從一個(gè)類向其它類發(fā)送信息的情況。單獨(dú)測(cè)試一個(gè)方法時(shí),只考慮其本身執(zhí)行的情況,而沒有考慮動(dòng)作的順序問題,測(cè)試用例中加入了激發(fā)這些調(diào)用的信息,以檢查它們是否正確運(yùn)行了。對(duì)于同一類中方法之間的調(diào)用,一般只需要極少甚至不用附加數(shù)據(jù),因?yàn)榉椒ǘ际菍?duì)類進(jìn)行存取,故這一類測(cè)試的準(zhǔn)則是要求遍歷類的所有主要狀態(tài)。面對(duì)對(duì)象的白盒測(cè)試方法的綜合測(cè)試9運(yùn)用白盒測(cè)試方法綜合實(shí)例運(yùn)用白盒測(cè)試技術(shù)設(shè)計(jì)下面代碼的測(cè)試用例書P85運(yùn)用白盒測(cè)試方法綜合實(shí)例運(yùn)用白盒測(cè)試技術(shù)設(shè)計(jì)下面代碼的測(cè)試用10參考答案設(shè)計(jì)步驟構(gòu)造被測(cè)代碼的控制流圖,運(yùn)用基本路徑測(cè)試方法設(shè)計(jì)相關(guān)測(cè)試用例針對(duì)代碼中的各個(gè)邏輯條件,運(yùn)用分支-條件測(cè)試方法設(shè)計(jì)相關(guān)測(cè)試用例針對(duì)代碼中的循環(huán),運(yùn)用循環(huán)測(cè)試方法設(shè)計(jì)相關(guān)測(cè)試用例合并前三步所得結(jié)果在第四步的基礎(chǔ)上,根據(jù)被測(cè)對(duì)象的特點(diǎn)增加相關(guān)測(cè)試用例參考答案設(shè)計(jì)步驟11以復(fù)合條件為節(jié)點(diǎn)P79(方案1)15-1719202122-232425262729303132以復(fù)合條件為節(jié)點(diǎn)P79(方案1)15-1719202122-12以簡(jiǎn)單條件為節(jié)點(diǎn)P80(方案2)②①③④⑥⑤⑧⑦⑨⑩11121312345678910111213以簡(jiǎn)單條件為節(jié)點(diǎn)P80(方案2)②①③④⑥⑤⑧⑦⑨⑩111213環(huán)復(fù)雜度(方案1)環(huán)復(fù)雜度閉合區(qū)域的數(shù)目=4二值判定節(jié)點(diǎn)個(gè)數(shù)+1=3+1=4邊的數(shù)目-節(jié)點(diǎn)的數(shù)目+2=14-12+2=415-1719202122-232425262729303132環(huán)復(fù)雜度(方案1)環(huán)復(fù)雜度15-1719202122-23214基本路徑(方案1)基本路徑和相應(yīng)的測(cè)試用例15-17->19->29->31->32(30-32?)測(cè)試用例:測(cè)試輸入=((-999),0,360)預(yù)期結(jié)果=-99915-17->19->20->21->24->19->29->31->32(30-32?)測(cè)試用例:測(cè)試輸入=((-10,-999),0,360),預(yù)期結(jié)果=-99915-1719202122-232425262729303132基本路徑(方案1)基本路徑和相應(yīng)的測(cè)試用例15-17192015基本路徑(方案1)基本路徑和相應(yīng)的測(cè)試用例15-17->19->20->21->22-23->25->26->27->19->29->30->32測(cè)試用例:測(cè)試輸入=((180,-999),0,360),預(yù)期結(jié)果=18015-1719202122-232425262729303132基本路徑(方案1)基本路徑和相應(yīng)的測(cè)試用例15-17192016環(huán)復(fù)雜度(方案2)環(huán)復(fù)雜度閉合區(qū)域的數(shù)目=6二值判定節(jié)點(diǎn)個(gè)數(shù)+1=5+1=6邊的數(shù)目-節(jié)點(diǎn)的數(shù)目+2=17-13+2=612345678910111213環(huán)復(fù)雜度(方案2)環(huán)復(fù)雜度1234567891011121317基本路徑(方案2)基本路徑和相應(yīng)的測(cè)試用例1->2->10->12->13(10-11?)測(cè)試用例:測(cè)試輸入=((-999),0,360)預(yù)期結(jié)果=-9991->2->3->10->11->13測(cè)試用例測(cè)試輸入=((0..100,-999),0,360),預(yù)期結(jié)果=5012345678910111213基本路徑(方案2)基本路徑和相應(yīng)的測(cè)試用例12345678918基本路徑(方案2)基本路徑和相應(yīng)的測(cè)試用例1->2->3->4->5->6->7->9->2->10->11->13測(cè)試用例:測(cè)試輸入=((180,-999),0,360),預(yù)期結(jié)果=1801->2->3->4->5->8->2->10->12->13測(cè)試用例:測(cè)試輸入=((-10,-999),0,360),預(yù)期結(jié)果=-99912345678910111213基本路徑(方案2)基本路徑和相應(yīng)的測(cè)試用例12345678919基本路徑(方案2)基本路徑和相應(yīng)的測(cè)試用例1->2->3->4->5->6->8->2->10->12->13測(cè)試用例:測(cè)試輸入=((380,-999),0,360),預(yù)期結(jié)果=-99912345678910111213基本路徑(方案2)基本路徑和相應(yīng)的測(cè)試用例12345678920分支-條件測(cè)試需測(cè)試的邏輯條件Dowhile((value[i]!=-999)&&(inputNumber<100))if((value[i]>=minimum)&&(value[i]<=maximum))ifvalidNumber>0分支-條件測(cè)試需測(cè)試的邏輯條件21分支-條件測(cè)試分支和相應(yīng)的測(cè)試用例相應(yīng)的測(cè)試用例測(cè)試輸入=((180,-999),0,360),預(yù)期結(jié)果=180測(cè)試輸入=((-999),0,360),預(yù)期結(jié)果=-999測(cè)試輸入=((0..100,-999),0,360),預(yù)期結(jié)果=50分支-條件測(cè)試分支和相應(yīng)的測(cè)試用例相應(yīng)的測(cè)試用例22分支-條件測(cè)試分支和相應(yīng)的測(cè)試用例P89相應(yīng)的測(cè)試用例測(cè)試輸入=((180,-999),0,360),預(yù)期結(jié)果=180測(cè)試輸入=((-10,-999),0,360),預(yù)期結(jié)果=-999測(cè)試輸入=((380,,-999),0,360),預(yù)期結(jié)果=-999分支-條件測(cè)試分支和相應(yīng)的測(cè)試用例P89相應(yīng)的測(cè)試用例23分支-條件測(cè)試分支和相應(yīng)的測(cè)試用例P89相應(yīng)的測(cè)試用例測(cè)試輸入=((180,-999),0,360),預(yù)期結(jié)果=180測(cè)試輸入=((-999),0,360),預(yù)期結(jié)果=-999分支-條件測(cè)試分支和相應(yīng)的測(cè)試用例P89相應(yīng)的測(cè)試用例24循環(huán)測(cè)試需測(cè)試的循環(huán)條件Dowhile((value[i]!=-999)&&(inputNumber<100))直接跳過循環(huán)體測(cè)試用例:測(cè)試輸入=((-999),0,360),預(yù)期結(jié)果=-999只執(zhí)行一遍循環(huán)體測(cè)試用例:測(cè)試輸入=((180,-999),0,360),預(yù)期結(jié)果=180連續(xù)執(zhí)行兩遍循環(huán)體測(cè)試用例:測(cè)試輸入=((10,20,-999),0,360),預(yù)期結(jié)果=15循環(huán)測(cè)試需測(cè)試的循環(huán)條件25循環(huán)測(cè)試需測(cè)試的循環(huán)條件Dowhile((value[i]!=-999)&&(inputNumber<100))如果循環(huán)次數(shù)為n,執(zhí)行m(m<n)遍循環(huán)體測(cè)試用例:測(cè)試輸入=((0..49,-999),0,360),預(yù)期結(jié)果=24.5如果循環(huán)次數(shù)為n,那么執(zhí)行n-1遍循環(huán)體測(cè)試用例:測(cè)試輸入=((0..98,-999),0,360),預(yù)期結(jié)果=49.0如果循環(huán)次數(shù)為n,那么執(zhí)行n遍循環(huán)體測(cè)試用例:測(cè)試輸入=((0..99,-999),0,360),預(yù)期結(jié)果=49.5循環(huán)測(cè)試需測(cè)試的循環(huán)條件26循環(huán)測(cè)試需測(cè)試的循環(huán)條件Dowhile((value[i]!=-999)&&(inputNumber<100))測(cè)試用例:測(cè)試輸入=((0..100,-999),0,360),預(yù)期結(jié)果=50循環(huán)測(cè)試需測(cè)試的循環(huán)條件27結(jié)果合并合并的結(jié)果測(cè)試輸入=((-999),0,360),預(yù)期結(jié)果=-999測(cè)試輸入=((-10,-999),0,360),預(yù)期結(jié)果=-999測(cè)試輸入=((180,-999),0,360),預(yù)期結(jié)果=180測(cè)試輸入=((380,-999),0,360),預(yù)期結(jié)果=-999測(cè)試輸入=((0..100,-999),0,360),預(yù)期結(jié)果=49.5測(cè)試輸入=((10,20,-999),0,360),預(yù)期結(jié)果=15測(cè)試輸入=((0..49,-999),0,360),預(yù)期結(jié)果=24.5結(jié)果合并合并的結(jié)果28結(jié)果合并合并的結(jié)果測(cè)試輸入=((0..98,-999),0,360),預(yù)期結(jié)果=49.0測(cè)試輸入=((0..99,-999),0,360),預(yù)期結(jié)果=49.5測(cè)試輸入=((0..100,-999),0,360),預(yù)期結(jié)果=50結(jié)果合并合并的結(jié)果29補(bǔ)充測(cè)試用例對(duì)于if語句僅使用分支-條件測(cè)試是否可以盡可能多地發(fā)現(xiàn)被測(cè)代碼的缺陷呢可以等于邊界點(diǎn)上的測(cè)試用例測(cè)試輸入=((0,-999),0,360),預(yù)期結(jié)果=0測(cè)試輸入=((360,-999),0,360),預(yù)期結(jié)果=360實(shí)際中,還可以采用走讀的方法補(bǔ)充測(cè)試用例對(duì)于if語句僅使用分支-條件測(cè)試是否可以盡可能多30補(bǔ)充測(cè)試用例考慮到異常輸出的出現(xiàn)頻率,利用錯(cuò)誤猜測(cè)再次增加測(cè)試輸入=((a,-999),0,360),預(yù)期結(jié)果=“輸入錯(cuò)誤”測(cè)試輸入=((10,-999),a,360),預(yù)期結(jié)果=“輸入錯(cuò)誤”測(cè)試輸入=((10,-999),0,a),預(yù)期結(jié)果=“輸入錯(cuò)誤”補(bǔ)充測(cè)試用例考慮到異常輸出的出現(xiàn)頻率,利用錯(cuò)誤猜測(cè)再次增加31運(yùn)用邏輯覆蓋的方法測(cè)試程序程序4-4:1 If(x>1&&y=1)then2 z=z*23 If(x=3||z>1)then4 y++;運(yùn)用邏輯覆蓋的方法設(shè)計(jì)測(cè)試用例組,如下表所示。實(shí)例設(shè)計(jì)——實(shí)例2
運(yùn)用邏輯覆蓋的方法測(cè)試程序?qū)嵗O(shè)計(jì)——實(shí)例232白盒測(cè)試—綜合應(yīng)用實(shí)例課件33運(yùn)用路徑分析的方法測(cè)試程序程序4-5:1 main()2 {3 intflag,t1,t2,a=0,b=0;4scanf(“%d,%d,%d\n”,&flag,&t1,&t2);5 while(flag>0)6 {7 a=a+1;8 if(t1=1)9 then10{11 b=b+1;12 flag=0;13 }實(shí)例設(shè)計(jì)——實(shí)例3
14 else15 {16 if(t2=1)17 thenb=b-1;18 elsea=a-2;19 flag--;20 }21 }22 printf(“a=%d,b=d%\n”,a,b);23 }運(yùn)用路徑分析的方法測(cè)試程序?qū)嵗O(shè)計(jì)——實(shí)例314 el34圖4-8程序4-5的流程圖實(shí)例3——步驟1
1main()2{3intflag,t1,t2,a=0,b=0;4scanf(“%d,%d,%d\n”,&flag,&t1,&t2);5while(flag>0)6{7a=a+1;8if(t1=1)9then10{11 b=b+1;12 flag=0;}14else15{16if(t2=1)17thenb=b-1;18elsea=a-2;19flag--;20}21}22printf(“a=%d,b=d%\n”,a,b);23}程序的流程圖如圖4-8所示:圖4-8程序4-5的流程圖實(shí)例3——步驟11ma352.程序的控制流圖如圖4-9所示,其中R1、R2、R3和R4代表控制流圖的4個(gè)區(qū)域。R4代表的是控制流圖外的區(qū)域,也算作控制流圖的一個(gè)區(qū)域。圖4-9程序4-5的控制流圖實(shí)例3——步驟22.程序的控制流圖如圖4-9所示,其中R1、R2、R3和R4363.運(yùn)用路徑分析的方法設(shè)計(jì)測(cè)試用例組。(1)根據(jù)程序環(huán)形復(fù)雜度的計(jì)算公式,求出程序路徑集合中的獨(dú)立路徑數(shù)目。公式1:V(G)=11-9+2,其中11是控制流圖G中邊的數(shù)量,9是控制流圖中節(jié)點(diǎn)的數(shù)目。公式2:V(G)=3+1,其中3是控制流圖G中判斷節(jié)點(diǎn)的數(shù)目。公式3:V(G)=4,其中4是控制流圖G中區(qū)域的數(shù)目。因此,控制流圖G的環(huán)形復(fù)雜度是4。(2)根據(jù)上面環(huán)形復(fù)雜度的計(jì)算結(jié)果,源程序的基本路徑集合中有4條獨(dú)立路徑:路徑1:5->22路徑2:5->7,8->11,12->21->5->22路徑3:5->7,8->16->17->19->21->5->22路徑4:5->7,8->16->18->19->21->5->22(3)設(shè)計(jì)測(cè)試用例組11如表4-11所示。根據(jù)上述4條獨(dú)立路徑設(shè)計(jì)出了這組測(cè)試用例,其中的4組數(shù)據(jù)能夠遍歷各個(gè)獨(dú)立路徑,也就滿足了路徑分析測(cè)試的要求。需要注意的是,對(duì)于源程序中的循環(huán)體,測(cè)試用例組11中的輸入數(shù)據(jù)使其執(zhí)行零次或一次。實(shí)例3——步驟3
3.運(yùn)用路徑分析的方法設(shè)計(jì)測(cè)試用例組。實(shí)例3——步驟337表4-11測(cè)試用例組11表4-11測(cè)試用例組1138小結(jié)
白盒測(cè)試是基于被測(cè)程序的源代碼設(shè)計(jì)測(cè)試用例的測(cè)試方法。常見的白盒測(cè)試方法有邏輯覆蓋測(cè)試和路徑分析測(cè)試兩大類。在邏輯覆蓋測(cè)試中,按照覆蓋策略由弱到強(qiáng)的嚴(yán)格程度,介紹了語句覆蓋、判斷覆蓋、條件覆蓋、判斷/條件覆蓋、條件組合覆蓋和路徑覆蓋六種覆蓋測(cè)策略。語句覆蓋:每個(gè)語句至少執(zhí)行一次。判定覆蓋:在語句覆蓋的基礎(chǔ)上,每個(gè)判定的每個(gè)分支至少執(zhí)行一次。條件覆蓋:在語句覆蓋的基礎(chǔ)上,使每個(gè)判定表達(dá)式的每個(gè)條件都取到各種可能的結(jié)果。判定/條件覆蓋:即判定覆蓋和條件覆蓋的交集。條件組合覆蓋:每個(gè)判定表達(dá)式中條件的各種可能組合都至少出現(xiàn)一次。路徑覆蓋:每條可能的路徑都至少執(zhí)行一次,若圖中有環(huán),則每個(gè)環(huán)至少經(jīng)過一次。在路徑分析測(cè)試中,介紹了獨(dú)立路徑測(cè)試和Z路徑覆蓋測(cè)試兩種常用方法。小結(jié)白盒測(cè)試是基于被測(cè)程序的源代碼設(shè)計(jì)測(cè)試用例的測(cè)試方法。39小結(jié)
路徑覆蓋:每條可能的路徑都至少執(zhí)行一次,若圖中有環(huán),則每個(gè)環(huán)至少經(jīng)過一次。在路徑分析測(cè)試中,介紹了獨(dú)立路徑測(cè)試和Z路徑覆蓋測(cè)試兩種常用方法。獨(dú)立路徑測(cè)試方法把覆蓋的路徑數(shù)壓縮到一定限度內(nèi),程序中的循環(huán)體最多只執(zhí)行一次,對(duì)程序中所有獨(dú)立路徑進(jìn)行測(cè)試。它是在程序控制流圖的基礎(chǔ)上,分析控制構(gòu)造的環(huán)路復(fù)雜性,導(dǎo)出基本可執(zhí)行路徑集合,設(shè)計(jì)測(cè)試用例的方法。設(shè)計(jì)出的測(cè)試用例要保證程序的每一個(gè)可執(zhí)行語句至少要執(zhí)行一次。Z路徑覆蓋測(cè)試是指采用簡(jiǎn)化循環(huán)的方法進(jìn)行路徑覆蓋測(cè)試。被測(cè)源程序中的循環(huán)體執(zhí)行零次或一次。最后,介紹了其他一些白盒測(cè)試方法。循環(huán)測(cè)試是一種著重循環(huán)結(jié)構(gòu)有效性測(cè)試的測(cè)試方法。變異測(cè)試是一種故障驅(qū)動(dòng)測(cè)試,針對(duì)某一類特定程序故障進(jìn)行的測(cè)試。程序插裝是借助于在被測(cè)程序中設(shè)置斷點(diǎn)或打印語句來進(jìn)行測(cè)試的方法,在執(zhí)行測(cè)試的過程中可以了解一些程序的動(dòng)態(tài)信息。小結(jié)路徑覆蓋:每條可能的路徑都至少執(zhí)行一次,若圖中有環(huán),則40把程序看成裝在一個(gè)透明的白盒子里,程序的結(jié)構(gòu)和處理呈現(xiàn)過程完全可見,按照程序的內(nèi)部邏輯測(cè)試程序,以檢查程序中的每條通路是否都能按照預(yù)先要求正確工作。
第4章白盒測(cè)試方法把程序看成裝在一個(gè)透明的白盒子里,程序的結(jié)構(gòu)和處理呈現(xiàn)過程完41
2路徑分析測(cè)試3分支條件測(cè)試、循環(huán)測(cè)試4其它測(cè)試類型5主要內(nèi)容綜合測(cè)試實(shí)例
6黑盒測(cè)試與白盒測(cè)試1邏輯覆蓋測(cè)試2路徑分析測(cè)試3分支條件測(cè)試、循環(huán)測(cè)試4其它測(cè)試類型5主要42白盒測(cè)試的常用方法邏輯覆蓋路徑分析測(cè)試
循環(huán)、條件分支…白盒測(cè)試的常用方法邏輯覆蓋路徑分析測(cè)試循環(huán)、條件分支…43白盒測(cè)試的基本概念什么是白盒測(cè)試把程序看成裝在一個(gè)透明的白盒子里,程序的結(jié)構(gòu)和處理過程完全可見,按照程序的內(nèi)部邏輯測(cè)試程序,以檢查程序中的每條通路是否都能按照預(yù)先要求正確工作。白盒測(cè)試的基本概念什么是白盒測(cè)試44(1)在測(cè)試中,應(yīng)盡量先使用工具進(jìn)行靜態(tài)結(jié)構(gòu)分析。(2)測(cè)試中可采取先靜態(tài)后動(dòng)態(tài)的組合方式:先進(jìn)行靜態(tài)結(jié)構(gòu)分析、代碼檢查,再進(jìn)行覆蓋率測(cè)試。白盒測(cè)試應(yīng)用策略(3)利用靜態(tài)分析的結(jié)果作為導(dǎo)引,通過代碼檢查和動(dòng)態(tài)測(cè)試的方式對(duì)靜態(tài)發(fā)現(xiàn)結(jié)果進(jìn)行進(jìn)一步的確認(rèn),使測(cè)試工作更為有效。白盒測(cè)試應(yīng)用策略(3)利用靜態(tài)分析的結(jié)果作為導(dǎo)引,通45白盒測(cè)試應(yīng)用策略(4)覆蓋率測(cè)試是白盒測(cè)試的重點(diǎn),一般可使用基本路徑測(cè)試法達(dá)到語句覆蓋標(biāo)準(zhǔn);對(duì)于軟件的重點(diǎn)模塊,應(yīng)使用多種覆蓋率標(biāo)準(zhǔn)衡量代碼的覆蓋率。(5)在不同的測(cè)試節(jié)點(diǎn),測(cè)試的側(cè)重點(diǎn)不同:在單元測(cè)試階段,以代碼檢查、邏輯覆蓋為主;在集成測(cè)試階段,需要增加靜態(tài)結(jié)構(gòu)分析等;在系統(tǒng)測(cè)試階段,應(yīng)根據(jù)黑盒測(cè)試的結(jié)果,采取相應(yīng)的白盒測(cè)試。白盒測(cè)試應(yīng)用策略(4)覆蓋率測(cè)試是白盒測(cè)試的重點(diǎn),一般可使用46面對(duì)對(duì)象的白盒測(cè)試類測(cè)試一般有兩種主要的方式:功能性測(cè)試和結(jié)構(gòu)性測(cè)試,即對(duì)應(yīng)于傳統(tǒng)結(jié)構(gòu)化軟件的黑盒測(cè)試和白盒測(cè)試。結(jié)構(gòu)性測(cè)試對(duì)類中的方法進(jìn)行測(cè)試,它把類作為一個(gè)單元來進(jìn)行測(cè)試。測(cè)試分為兩層:第一層考慮類中各獨(dú)立方法的代碼;第二層考慮方法之間的相互作用。對(duì)于一個(gè)類的測(cè)試要保證類在其狀態(tài)的代表集上能夠正確工作,構(gòu)造函數(shù)的參數(shù)選擇以及消息序列的選擇都要滿足這一準(zhǔn)則
面對(duì)對(duì)象的白盒測(cè)試類測(cè)試一般有兩種主要的方式:功能性測(cè)試和結(jié)47面對(duì)對(duì)象的白盒測(cè)試方法的單獨(dú)測(cè)試結(jié)構(gòu)性測(cè)試的第一層是考慮各獨(dú)立的方法,這可以與過程的測(cè)試采用同樣的方法,兩者之間最大的差別在于方法改變了它所在實(shí)例的狀態(tài),這就要取得隱藏的狀態(tài)信息來估算測(cè)試的結(jié)果,傳給其它對(duì)象的消息被忽略,而以樁來代替,并根據(jù)所傳的消息返回相應(yīng)的值,測(cè)試數(shù)據(jù)要求能完全覆蓋類中代碼,可以用傳統(tǒng)的測(cè)試技術(shù)來獲取。面對(duì)對(duì)象的白盒測(cè)試方法的單獨(dú)測(cè)試48面對(duì)對(duì)象的白盒測(cè)試方法的綜合測(cè)試第二層要考慮一個(gè)方法調(diào)用本對(duì)象類中的其它方法和從一個(gè)類向其它類發(fā)送信息的情況。單獨(dú)測(cè)試一個(gè)方法時(shí),只考慮其本身執(zhí)行的情況,而沒有考慮動(dòng)作的順序問題,測(cè)試用例中加入了激發(fā)這些調(diào)用的信息,以檢查它們是否正確運(yùn)行了。對(duì)于同一類中方法之間的調(diào)用,一般只需要極少甚至不用附加數(shù)據(jù),因?yàn)榉椒ǘ际菍?duì)類進(jìn)行存取,故這一類測(cè)試的準(zhǔn)則是要求遍歷類的所有主要狀態(tài)。面對(duì)對(duì)象的白盒測(cè)試方法的綜合測(cè)試49運(yùn)用白盒測(cè)試方法綜合實(shí)例運(yùn)用白盒測(cè)試技術(shù)設(shè)計(jì)下面代碼的測(cè)試用例書P85運(yùn)用白盒測(cè)試方法綜合實(shí)例運(yùn)用白盒測(cè)試技術(shù)設(shè)計(jì)下面代碼的測(cè)試用50參考答案設(shè)計(jì)步驟構(gòu)造被測(cè)代碼的控制流圖,運(yùn)用基本路徑測(cè)試方法設(shè)計(jì)相關(guān)測(cè)試用例針對(duì)代碼中的各個(gè)邏輯條件,運(yùn)用分支-條件測(cè)試方法設(shè)計(jì)相關(guān)測(cè)試用例針對(duì)代碼中的循環(huán),運(yùn)用循環(huán)測(cè)試方法設(shè)計(jì)相關(guān)測(cè)試用例合并前三步所得結(jié)果在第四步的基礎(chǔ)上,根據(jù)被測(cè)對(duì)象的特點(diǎn)增加相關(guān)測(cè)試用例參考答案設(shè)計(jì)步驟51以復(fù)合條件為節(jié)點(diǎn)P79(方案1)15-1719202122-232425262729303132以復(fù)合條件為節(jié)點(diǎn)P79(方案1)15-1719202122-52以簡(jiǎn)單條件為節(jié)點(diǎn)P80(方案2)②①③④⑥⑤⑧⑦⑨⑩11121312345678910111213以簡(jiǎn)單條件為節(jié)點(diǎn)P80(方案2)②①③④⑥⑤⑧⑦⑨⑩111253環(huán)復(fù)雜度(方案1)環(huán)復(fù)雜度閉合區(qū)域的數(shù)目=4二值判定節(jié)點(diǎn)個(gè)數(shù)+1=3+1=4邊的數(shù)目-節(jié)點(diǎn)的數(shù)目+2=14-12+2=415-1719202122-232425262729303132環(huán)復(fù)雜度(方案1)環(huán)復(fù)雜度15-1719202122-23254基本路徑(方案1)基本路徑和相應(yīng)的測(cè)試用例15-17->19->29->31->32(30-32?)測(cè)試用例:測(cè)試輸入=((-999),0,360)預(yù)期結(jié)果=-99915-17->19->20->21->24->19->29->31->32(30-32?)測(cè)試用例:測(cè)試輸入=((-10,-999),0,360),預(yù)期結(jié)果=-99915-1719202122-232425262729303132基本路徑(方案1)基本路徑和相應(yīng)的測(cè)試用例15-17192055基本路徑(方案1)基本路徑和相應(yīng)的測(cè)試用例15-17->19->20->21->22-23->25->26->27->19->29->30->32測(cè)試用例:測(cè)試輸入=((180,-999),0,360),預(yù)期結(jié)果=18015-1719202122-232425262729303132基本路徑(方案1)基本路徑和相應(yīng)的測(cè)試用例15-17192056環(huán)復(fù)雜度(方案2)環(huán)復(fù)雜度閉合區(qū)域的數(shù)目=6二值判定節(jié)點(diǎn)個(gè)數(shù)+1=5+1=6邊的數(shù)目-節(jié)點(diǎn)的數(shù)目+2=17-13+2=612345678910111213環(huán)復(fù)雜度(方案2)環(huán)復(fù)雜度1234567891011121357基本路徑(方案2)基本路徑和相應(yīng)的測(cè)試用例1->2->10->12->13(10-11?)測(cè)試用例:測(cè)試輸入=((-999),0,360)預(yù)期結(jié)果=-9991->2->3->10->11->13測(cè)試用例測(cè)試輸入=((0..100,-999),0,360),預(yù)期結(jié)果=5012345678910111213基本路徑(方案2)基本路徑和相應(yīng)的測(cè)試用例12345678958基本路徑(方案2)基本路徑和相應(yīng)的測(cè)試用例1->2->3->4->5->6->7->9->2->10->11->13測(cè)試用例:測(cè)試輸入=((180,-999),0,360),預(yù)期結(jié)果=1801->2->3->4->5->8->2->10->12->13測(cè)試用例:測(cè)試輸入=((-10,-999),0,360),預(yù)期結(jié)果=-99912345678910111213基本路徑(方案2)基本路徑和相應(yīng)的測(cè)試用例12345678959基本路徑(方案2)基本路徑和相應(yīng)的測(cè)試用例1->2->3->4->5->6->8->2->10->12->13測(cè)試用例:測(cè)試輸入=((380,-999),0,360),預(yù)期結(jié)果=-99912345678910111213基本路徑(方案2)基本路徑和相應(yīng)的測(cè)試用例12345678960分支-條件測(cè)試需測(cè)試的邏輯條件Dowhile((value[i]!=-999)&&(inputNumber<100))if((value[i]>=minimum)&&(value[i]<=maximum))ifvalidNumber>0分支-條件測(cè)試需測(cè)試的邏輯條件61分支-條件測(cè)試分支和相應(yīng)的測(cè)試用例相應(yīng)的測(cè)試用例測(cè)試輸入=((180,-999),0,360),預(yù)期結(jié)果=180測(cè)試輸入=((-999),0,360),預(yù)期結(jié)果=-999測(cè)試輸入=((0..100,-999),0,360),預(yù)期結(jié)果=50分支-條件測(cè)試分支和相應(yīng)的測(cè)試用例相應(yīng)的測(cè)試用例62分支-條件測(cè)試分支和相應(yīng)的測(cè)試用例P89相應(yīng)的測(cè)試用例測(cè)試輸入=((180,-999),0,360),預(yù)期結(jié)果=180測(cè)試輸入=((-10,-999),0,360),預(yù)期結(jié)果=-999測(cè)試輸入=((380,,-999),0,360),預(yù)期結(jié)果=-999分支-條件測(cè)試分支和相應(yīng)的測(cè)試用例P89相應(yīng)的測(cè)試用例63分支-條件測(cè)試分支和相應(yīng)的測(cè)試用例P89相應(yīng)的測(cè)試用例測(cè)試輸入=((180,-999),0,360),預(yù)期結(jié)果=180測(cè)試輸入=((-999),0,360),預(yù)期結(jié)果=-999分支-條件測(cè)試分支和相應(yīng)的測(cè)試用例P89相應(yīng)的測(cè)試用例64循環(huán)測(cè)試需測(cè)試的循環(huán)條件Dowhile((value[i]!=-999)&&(inputNumber<100))直接跳過循環(huán)體測(cè)試用例:測(cè)試輸入=((-999),0,360),預(yù)期結(jié)果=-999只執(zhí)行一遍循環(huán)體測(cè)試用例:測(cè)試輸入=((180,-999),0,360),預(yù)期結(jié)果=180連續(xù)執(zhí)行兩遍循環(huán)體測(cè)試用例:測(cè)試輸入=((10,20,-999),0,360),預(yù)期結(jié)果=15循環(huán)測(cè)試需測(cè)試的循環(huán)條件65循環(huán)測(cè)試需測(cè)試的循環(huán)條件Dowhile((value[i]!=-999)&&(inputNumber<100))如果循環(huán)次數(shù)為n,執(zhí)行m(m<n)遍循環(huán)體測(cè)試用例:測(cè)試輸入=((0..49,-999),0,360),預(yù)期結(jié)果=24.5如果循環(huán)次數(shù)為n,那么執(zhí)行n-1遍循環(huán)體測(cè)試用例:測(cè)試輸入=((0..98,-999),0,360),預(yù)期結(jié)果=49.0如果循環(huán)次數(shù)為n,那么執(zhí)行n遍循環(huán)體測(cè)試用例:測(cè)試輸入=((0..99,-999),0,360),預(yù)期結(jié)果=49.5循環(huán)測(cè)試需測(cè)試的循環(huán)條件66循環(huán)測(cè)試需測(cè)試的循環(huán)條件Dowhile((value[i]!=-999)&&(inputNumber<100))測(cè)試用例:測(cè)試輸入=((0..100,-999),0,360),預(yù)期結(jié)果=50循環(huán)測(cè)試需測(cè)試的循環(huán)條件67結(jié)果合并合并的結(jié)果測(cè)試輸入=((-999),0,360),預(yù)期結(jié)果=-999測(cè)試輸入=((-10,-999),0,360),預(yù)期結(jié)果=-999測(cè)試輸入=((180,-999),0,360),預(yù)期結(jié)果=180測(cè)試輸入=((380,-999),0,360),預(yù)期結(jié)果=-999測(cè)試輸入=((0..100,-999),0,360),預(yù)期結(jié)果=49.5測(cè)試輸入=((10,20,-999),0,360),預(yù)期結(jié)果=15測(cè)試輸入=((0..49,-999),0,360),預(yù)期結(jié)果=24.5結(jié)果合并合并的結(jié)果68結(jié)果合并合并的結(jié)果測(cè)試輸入=((0..98,-999),0,360),預(yù)期結(jié)果=49.0測(cè)試輸入=((0..99,-999),0,360),預(yù)期結(jié)果=49.5測(cè)試輸入=((0..100,-999),0,360),預(yù)期結(jié)果=50結(jié)果合并合并的結(jié)果69補(bǔ)充測(cè)試用例對(duì)于if語句僅使用分支-條件測(cè)試是否可以盡可能多地發(fā)現(xiàn)被測(cè)代碼的缺陷呢可以等于邊界點(diǎn)上的測(cè)試用例測(cè)試輸入=((0,-999),0,360),預(yù)期結(jié)果=0測(cè)試輸入=((360,-999),0,360),預(yù)期結(jié)果=360實(shí)際中,還可以采用走讀的方法補(bǔ)充測(cè)試用例對(duì)于if語句僅使用分支-條件測(cè)試是否可以盡可能多70補(bǔ)充測(cè)試用例考慮到異常輸出的出現(xiàn)頻率,利用錯(cuò)誤猜測(cè)再次增加測(cè)試輸入=((a,-999),0,360),預(yù)期結(jié)果=“輸入錯(cuò)誤”測(cè)試輸入=((10,-999),a,360),預(yù)期結(jié)果=“輸入錯(cuò)誤”測(cè)試輸入=((10,-999),0,a),預(yù)期結(jié)果=“輸入錯(cuò)誤”補(bǔ)充測(cè)試用例考慮到異常輸出的出現(xiàn)頻率,利用錯(cuò)誤猜測(cè)再次增加71運(yùn)用邏輯覆蓋的方法測(cè)試程序程序4-4:1 If(x>1&&y=1)then2 z=z*23 If(x=3||z>1)then4 y++;運(yùn)用邏輯覆蓋的方法設(shè)計(jì)測(cè)試用例組,如下表所示。實(shí)例設(shè)計(jì)——實(shí)例2
運(yùn)用邏輯覆蓋的方法測(cè)試程序?qū)嵗O(shè)計(jì)——實(shí)例272白盒測(cè)試—綜合應(yīng)用實(shí)例課件73運(yùn)用路徑分析的方法測(cè)試程序程序4-5:1 main()2 {3 intflag,t1,t2,a=0,b=0;4scanf(“%d,%d,%d\n”,&flag,&t1,&t2);5 while(flag>0)6 {7 a=a+1;8 if(t1=1)9 then10{11 b=b+1;12 flag=0;13 }實(shí)例設(shè)計(jì)——實(shí)例3
14 else15 {16 if(t2=1)17 thenb=b-1;18 elsea=a-2;19 flag--;20 }21 }22 printf(“a=%d,b=d%\n”,a,b);23 }運(yùn)用路徑分析的方法測(cè)試程序?qū)嵗O(shè)計(jì)——實(shí)例314 el74圖4-8程序4-5的流程圖實(shí)例3——步驟1
1main()2{3intflag,t1,t2,a=0,b=0;4scanf(“%d,%d,%d\n”,&flag,&t1,&t2);5while(flag>0)6{7a=a+1;8if(t1=1)9then10{11 b=b+1;12 flag=0;}14else15{16if(t2=1)17thenb=b-1;18elsea=a-2;19flag--;20}21}22printf(“a=%d,b=d%\n”,a,b);23}程序
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年Z世代消費(fèi)趨勢(shì)前瞻:新消費(fèi)品牌競(jìng)爭(zhēng)策略報(bào)告
- 初中數(shù)學(xué)九年級(jí)下冊(cè)統(tǒng)編教案 8.1中學(xué)生的視力情況調(diào)查2
- AI大模型智算運(yùn)營(yíng)運(yùn)維服務(wù)建設(shè)方案
- 哮喘診斷新定義
- 內(nèi)蒙古自治區(qū)錫林郭勒盟三縣聯(lián)考2024-2025學(xué)年八年級(jí)下學(xué)期6月月考道德與法治試卷(含答案)
- 洗胃及胃排空試題及答案
- 河南省青桐鳴2024-2025學(xué)年高一下學(xué)期5月大聯(lián)考英語試卷(不含音頻) - 原卷
- 2025年甘肅省定西市安定區(qū)城區(qū)聯(lián)考三模數(shù)學(xué)試題(含部分答案)
- 2025短視頻平臺(tái)委托開發(fā)合同
- 2025國(guó)際石油勘探合同標(biāo)準(zhǔn)格式的爭(zhēng)議解決條款研究
- GB/T 13754-2017供暖散熱器散熱量測(cè)定方法
- GA 838-2009小型民用爆炸物品儲(chǔ)存庫(kù)安全規(guī)范
- 【考研政治】2021年4月浙江理工大學(xué)研究生招生考試政治練習(xí)題100道(附答案解析)
- QTZ80(6013)塔吊基礎(chǔ)天然基礎(chǔ)計(jì)算書施工方案
- 初一英語競(jìng)賽課件
- 高熱驚厥應(yīng)急預(yù)案
- 場(chǎng)地平整土石方工程施工方案
- 質(zhì)量部崗位技能矩陣圖
- 新車驗(yàn)收表格
- 10KV環(huán)網(wǎng)柜試驗(yàn)報(bào)告模板
- 護(hù)理科研課題申請(qǐng)書
評(píng)論
0/150
提交評(píng)論