




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、2022-3-1信息工程教研室 谷凌雁白盒測試白盒測試 白盒測試概念 測試覆蓋標(biāo)準(zhǔn)邏輯驅(qū)動測試基本路徑測試 把測試對象看做一個透明的盒子 白盒測試是根據(jù)被測程序的內(nèi)部結(jié)構(gòu)設(shè)計測試用例并完成測試的一種測試方法 白盒測試或邏輯驅(qū)動測試 基于一個應(yīng)用代碼的內(nèi)部邏輯知識,測試覆蓋全部代碼、分支、路徑和條件 白盒測試(結(jié)構(gòu)測試)概念白盒測試 (結(jié)構(gòu)測試)特點 可以構(gòu)成測試數(shù)據(jù)使特定程序部分得到測試 有一定的充分性度量手段 可獲得較多工具支持 通常只用于單元測試白盒測試的方法靜態(tài)測試方法: 程序結(jié)構(gòu)分析正式審查 同事審查 公開陳述 檢驗動態(tài)測試方法: 邏輯覆蓋語句覆蓋判定覆蓋條件覆蓋判定-條件覆蓋條件組合
2、 路徑覆蓋通用代碼審查清單 數(shù)據(jù)引用錯誤 數(shù)據(jù)聲明錯誤 計算錯誤 比較錯誤 控制流程錯誤 子程序參數(shù)錯誤 輸入、輸出錯誤 其他錯誤代碼覆蓋率 采用白盒法進行測試時,考慮的是測試用例對程序內(nèi)部邏輯的覆蓋程度 最徹底的白盒法是覆蓋程序中的每一條路徑,但這往往無法實現(xiàn) 采用其它一些標(biāo)準(zhǔn)來量度覆蓋的程度,并希望覆蓋程度盡可能高些測試覆蓋標(biāo)準(zhǔn)測試覆蓋標(biāo)準(zhǔn) 上頁小程序的流程圖,其中包括了一個執(zhí)行達20次的循環(huán)。那么它所包含的不同執(zhí)行路徑數(shù)高達520(1013)條,若要對它進行窮舉測試,覆蓋所有的路徑。假使測試程序?qū)γ恳粭l路徑進行測試需要1毫秒,同樣假定一天工作24小時,一年工作365 天, 那么要想把如圖
3、所示的小程序的所有路徑測試完,則需要3170年。邏輯驅(qū)動測試 語句覆蓋 判定覆蓋 條件覆蓋 判定條件覆蓋 條件組合覆蓋路徑覆蓋例:實現(xiàn)一個簡單的數(shù)學(xué)運算 Dim a,b As Integer Dim c As Double If (a0 And b0) Then c=c/a End if If (a1 or c1) Then c=c+1 End if1. c=b+c1.語句覆蓋基本思想是:設(shè)計若干測試用例,運行被測程序,使程序中每個可執(zhí)行語句至少執(zhí)行一次。11.語句覆蓋續(xù)1只需設(shè)計一個測試用例:a=2,b=1,c=6;即達到了語句覆蓋。1.語句覆蓋續(xù)2 【優(yōu)點】【優(yōu)點】 :可以很直觀地從源代碼
4、得到測試用例,無須細(xì)分每條判定表達式。 【缺點】【缺點】 :由于這種測試方法僅僅針對程序邏輯中顯式存在的語句,但對于隱藏的條件是無法測試的。如在多分支的邏輯運算中無法全面的考慮。語句覆蓋是最弱的邏輯覆蓋。2.判定覆蓋基本思想是:設(shè)計若干測試用例,運行被測程序,使得程序中每個判斷的取真分支和取假分支至少經(jīng)歷一次,即判斷真假值均曾被滿足。12.判定覆蓋續(xù)1a=2,b=1 ,c=6可覆蓋判斷M的Y分支和判斷Q的Y分支; a=-2,b=-1 ,c=-3可覆蓋判斷M的N分支和判斷Q的N分支 。 這兩組測試用例可覆蓋所有判定的真假分支。判斷M判斷Q2.判定覆蓋續(xù)2a=1,b=1 ,c=-3 可覆蓋判斷M的
5、Y分支和判斷Q的N分支 ; a=1,b=-2 ,c=3可覆蓋判斷M的N分支和判斷Q的Y分支 ; 同樣的這兩組測試用例也可覆蓋所有判定的真假分支。判斷M判斷Q2.判定覆蓋續(xù)3 【優(yōu)點】【優(yōu)點】:判定覆蓋具有比語句覆蓋更強的測試能力。同樣判定覆蓋也具有和語句覆蓋一樣的簡單性,無須細(xì)分每個判定就可以得到測試用例。 【缺點】【缺點】:往往大部分的判定語句是由多個邏輯條件組合而成,若僅僅判斷其整個最終結(jié)果,而忽略每個條件的取值情況,必然會遺漏部分測試路徑。判定覆蓋仍是弱的邏輯覆蓋。3.條件覆蓋基本思想是:設(shè)計若干測試用例,執(zhí)行被測程序以后要使每個判斷中每個條件的可能取值至少滿足一次。13.條件覆蓋續(xù)1
6、判斷M表達式:設(shè)條件 a0 取真 記為 T1 假 F1 條件 b0 取真 記為 T2 假 F2 判斷Q表達式:設(shè)條件 a1 取真 記為 T3 假 F3 條件 c1 取真 記為 T4 假 F4判斷M判斷Q3.條件覆蓋續(xù)2測試用例覆蓋條件具體取值條件a=2,b=-1,c=-2T1, F2, T3, F4a0,b1,c=1a=-1,b=2,c=3F1, T2, F3, T4a0,a1它覆蓋了判定它覆蓋了判定M M的的N分支和判斷分支和判斷Q Q的的Y分支。分支。我們用條件覆蓋設(shè)計的思想就是讓測試用例能覆蓋T1、T2、T3、T4、F1、F2、F3、F4判斷M判斷Q3.條件覆蓋續(xù)3 【優(yōu)點】【優(yōu)點】:增
7、加了對條件判定情況的測試,增加了測試路徑。 【缺點】【缺點】:條件覆蓋不一定包含判定覆蓋。例如,我們剛才設(shè)計的用例就沒有覆蓋判斷M的Y分支和判斷Q的N分支。條件覆蓋只能保證每個條件至少有一次為真,而不考慮所有的判定結(jié)果。4.判定條件覆蓋基本思想是:設(shè)計足夠的測試用例,使得判斷條件中的所有條件可能至少執(zhí)行一次取值,同時,所有判斷的可能結(jié)果至少執(zhí)行一次。1判斷M判斷Q4.判定條件覆蓋續(xù)1 按照判定條件覆蓋的要求,我們設(shè)計的測試用例要滿足如下條件:所有條件可能至少執(zhí)行一次取值;所有判斷的可能結(jié)所有判斷的可能結(jié)果至少執(zhí)行一次。果至少執(zhí)行一次。要滿足要滿足T1、T2、 T3 、T4F1、 F2 、F3、
8、F44.判定條件覆蓋續(xù)2測試用例覆蓋條件覆蓋判斷a=2,b=1,c=6T1, T2,T3, T4M的Y分支和Q的Y分支a=-1,b=-2,c=-3F1, F2, F3, F4M的N分支和Q的N分支判斷M判斷Q要滿足要滿足T1、T2、 T3 、T4F1、 F2 、F3、F44.判定條件覆蓋續(xù)3 【優(yōu)點】【優(yōu)點】 :能同時滿足判定、條件兩種覆蓋標(biāo)準(zhǔn)。 【缺點】【缺點】 :判定/條件覆蓋準(zhǔn)則的缺點是未考慮條件的組合情況。5.條件組合覆蓋基本思想是:設(shè)計足夠的測試用例,基本思想是:設(shè)計足夠的測試用例,使使得所有可能的條件取值組合至少執(zhí)行一得所有可能的條件取值組合至少執(zhí)行一次次15.條件組合覆蓋續(xù)1 按
9、照條件組合覆蓋的基本思想,對于前面的例子,我們把每個判斷中的所有條件進行組合,設(shè)計組合條件如表所示,而我們設(shè)計的測試用例就要包括所有的組合條件。編號覆蓋條件取值判定條件取值具體條件取值1 T1,T2M取Y a0,b02 T1,F2M取N a0,b=03 F1,T2M取N a04 F1,F2M取N a= 0,b1,c16 T3,F4Q取Y a1,c=17 F3,T4Q取Y a18 F3,F4Q取N a=1,c 0 )5 6 If ( iType=0 )7x=y+2;8 else9 If ( iType=1 )10 x=y+10;11 else12 x=y+20;13 14 基本路徑測試方法(續(xù))
10、 畫出控制流圖: 如右圖所示 計算環(huán)形復(fù)雜度: 10(條邊)- 8(個節(jié)點)+ 2 = 4 導(dǎo)出獨立路徑(用語句編號表示) 路徑1:414 路徑2:46714 路徑3:4691013414 路徑4:4691213414467910121314路徑覆蓋的利弊 實現(xiàn)了所有路徑的測試,發(fā)現(xiàn)錯誤能力強 某些條件錯誤可能無法發(fā)現(xiàn) 路徑數(shù)龐大,不可能覆蓋所有路徑 用例數(shù)量的增加例1:有下面的C函數(shù),用基本路徑測試法進行測試 void Sort(int iRecordNum,int iType)o o int x=0;o int y=0;o while (iRecordNum- 0)o o if(0= =i
11、Type)o x=y+2; break;o elseo if (1= =iType)ox=y+10;o elseo x=y+20;o 1. 基本路徑測試舉例912基本路徑測試舉例第一步:第一步:畫出控制流圖流程圖用來描述程序控制結(jié)構(gòu)??蓪⒘鞒虉D映射到一個相應(yīng)的流圖(假設(shè)流程圖的菱形決定框中不包含復(fù)合條件)。在流圖中,每一個圓,稱為流圖的結(jié)點,代表一個或多個語句。一個處理方框序列和一個菱形決測框可被映射為一個結(jié)點,流圖中的箭頭,稱為邊或連接,代表控制流,類似于流程圖中的箭頭。一條邊必須終止于一個結(jié)點,即使該結(jié)點并不代表任何語句(例如:if-else-then結(jié)構(gòu))。由邊和結(jié)點限定的范圍稱為區(qū)域。
12、計算區(qū)域時應(yīng)包括圖外部的范圍?;韭窂綔y試-畫控制流圖出 畫出其程序流程圖和對應(yīng)的控制流圖如下467810111314467148101113程序流程圖 控制流圖991212基本路徑測試 - 計算圈復(fù)雜度第二步:第二步:計算圈復(fù)雜度計算如下:流圖中有四個區(qū)域;V(G)=10條邊-8結(jié)點+2=4;V(G)=3個判定結(jié)點+1=4。4671481011132134基本路徑測試 - 導(dǎo)出測試用例第三步:第三步:導(dǎo)出測試用例根據(jù)上面的計算方法,可得出四個獨立的路徑。(一條獨立路徑是指,和其他的獨立路徑相比,至少引入一個新處理語句或一個新判斷的程序通路。V(G)值正好等于該程序的獨立路徑的條數(shù)。) 路徑1
13、:4-14 路徑2:4-6-7-14 路徑3:4-6-8-10-13-4-14 路徑4:4-6-8-11-13-4-14根據(jù)上面的獨立路徑,去設(shè)計輸入數(shù)據(jù),使程序分別執(zhí)行到上面四條路徑。4671481011132134基本路徑測試 - 準(zhǔn)備測試用例第四步:第四步:準(zhǔn)備測試用例 為了確?;韭窂郊械拿恳粭l路徑的執(zhí)行,根據(jù)判斷結(jié)點給出的條件,選擇適當(dāng)?shù)臄?shù)據(jù)以保證某一條路徑可以被測試到,滿足上面例子基本路徑集的測試用例是:基本路徑測試 - 準(zhǔn)備測試用例路徑1:4-14輸入數(shù)據(jù):iRecordNum0,或者取iRecordNum 0)o o if(0= =iType)o x=y+2; break;o
14、 elseo if(1= =iType)o x=y+10;o elseo x=y+20;o 1. 例2:下例程序流程圖描述了最多輸入50個值(以1作為輸入結(jié)束標(biāo)志),計算其中有效的學(xué)生分?jǐn)?shù)的個數(shù)、總分?jǐn)?shù)和平均值。開始 i =1,n1=n2=0,sum=0Score i -1 AND n20 AND scorei0average=sum/n1average= 1 返回FFFTTT12和345和6789101112123456789111012R1R2R3R4R5R6開始 i =1,n1=n2=0,sum=0Score i -1 AND n20 AND scorei0average=sum/n1a
15、verage= 1 返回FFFTTT12和345和6789101112步驟步驟1:導(dǎo)出過程的流圖導(dǎo)出過程的流圖步驟步驟2:2:確定環(huán)形復(fù)雜性度量確定環(huán)形復(fù)雜性度量V(G)V(G):1)V(G)= 6 (個區(qū)域)2)V(G)=EN+2=1612+2=6其中E為流圖中的邊數(shù),N為結(jié)點數(shù);3)V(G)=P+1=5+1=6 其中P為謂詞結(jié)點的個數(shù)。在流圖中,結(jié)點2、3、5、6、9是謂詞結(jié)點。123456789111012R1R2R3R4R5R6步驟步驟3 3:確定基本路徑集合確定基本路徑集合(即獨立路徑集合)。于是可確定6條獨立的路徑:路徑1:1-2-9-10-12路徑2:1-2-9-11-12路徑3
16、:1-2-3-9-10-12路徑4:1-2-3-4-5-8-2路徑5:1-2-3-4-5-6-8-2路徑6:1-2-3-4-5-6-7-8-2123456789111012R1R2R3R4R5R6步驟步驟4 4:為每一條獨立路徑各為每一條獨立路徑各設(shè)計一組測試用例,以便設(shè)計一組測試用例,以便強迫程序沿著該路徑至少強迫程序沿著該路徑至少執(zhí)行一次。執(zhí)行一次。1)路徑1(1-2-9-10-12)的測試用例: scorek=有效分?jǐn)?shù)值,當(dāng)k i ; scorei=1, 2i50;期望結(jié)果:根據(jù)輸入的有效分?jǐn)?shù)算出正確的分?jǐn)?shù)個數(shù)n1、總分sum和平均分average。開始 i =1,n1=n2=0,sum
17、=0Score i -1 AND n20 AND scorei0average=sum/n1average= 1 返回FFFTTT12和345和67891011122)路徑2(1-2-9-11-12)的測試用例: score 1 = 1 ; 期望的結(jié)果:average = 1 ,其他量保持初值。3)路徑3(1-2-3-9-10-12)的測試用例: 輸入多于50個有效分?jǐn)?shù),即試圖處理51個分?jǐn)?shù),要求前51個為有效分?jǐn)?shù);期望結(jié)果:n1=50、且算出正確的總分和平均分。開始 i =1,n1=n2=0,sum=0Score i -1 AND n20 AND scorei0average=sum/n1a
18、verage= 1 返回FFFTTT12和345和67891011124)路徑4(1-2-3-4-5-8-2)的測試用例: scorei=有效分?jǐn)?shù),當(dāng)i50; scorek0, k i ;期望結(jié)果:根據(jù)輸入的有效分?jǐn)?shù)算出正確的分?jǐn)?shù)個數(shù)n1、總分sum和平均分average。5)路徑5的測試用例: scorei=有效分?jǐn)?shù), 當(dāng)i100, k i ;期望結(jié)果:根據(jù)輸入的有效分?jǐn)?shù)算出正確的分?jǐn)?shù)個數(shù)n1、總分sum和平均分average。開始 i =1,n1=n2=0,sum=0Score i -1 AND n20 AND scorei0average=sum/n1average= 1 返回FFFTT
19、T12和345和67891011126)路徑6(1-2-3-4-5-6-7-8-2)的測試用例: scorei=有效分?jǐn)?shù), 當(dāng)i50;期望結(jié)果:根據(jù)輸入的有效分?jǐn)?shù)算出正確的分?jǐn)?shù)個數(shù)n1、總分sum和平均分average。開始 i =1,n1=n2=0,sum=0Score i -1 AND n20 AND scorei0average=sum/n1average= 1 返回FFFTTT12和345和6789101112 例3.第一步:第一步:導(dǎo)出控制流圖第二步:第二步:計算環(huán)形復(fù)雜度1)V(G)= 4 (個區(qū)域)2)V(G)=EN+2=108+2=4 其中E為流圖中的邊數(shù),N為結(jié)點數(shù);3)V(
20、G)=P+1=3+1=4 其中P為謂詞結(jié)點的個數(shù)。在流圖中,結(jié)點7、9、11是謂詞結(jié)點。第三步:第三步:確定基本路徑集 路徑1:7-18 路徑2:7-9-10-16-7-18 路徑3:7-9-11-15-16-7-18 路徑4:7-9-11-13-14-15-16-7-18第四步:第四步:為每一條路徑設(shè)計測試用例白盒測試的主要目的: 保證一個模塊中的所有獨立路徑至少被執(zhí)行一次; 對所有的邏輯值均需要測試真、假兩個分支; 在上下邊界及可操作范圍內(nèi)運行所有循環(huán); 檢查內(nèi)部數(shù)據(jù)結(jié)構(gòu)以確保其有效性。本章小結(jié) 控制流圖有以下幾個特點: (1)具有唯一入口結(jié)點,表示程序段的開始語句; (2)具有唯一出口結(jié)
21、點,表示程序段的結(jié)束語句; (3)結(jié)點由帶標(biāo)號的圓圈表示,表示一個或多個無分支的源程序語句; (4)控制邊由帶箭頭的直線或弧表示,代表控制流的方向。本章小結(jié)白盒測試: 邏輯覆蓋+路徑覆蓋 覆蓋標(biāo)準(zhǔn)從低到高分別是: 語句覆蓋:是一個比較弱的測試標(biāo)準(zhǔn),它的含義是:選擇足夠的測試用例,使得程序中每個語句至少都能被執(zhí)行一次。它是最弱的邏輯覆蓋,效果有限,必須與其它方法交互使用。 判定覆蓋(也稱為分支覆蓋):執(zhí)行足夠的測試用例,使得程序中的每一個分支至少都通過一次。判定覆蓋只比語句覆蓋稍強一些,但實際效果表明,只是判定覆蓋,還不能保證一定能查出在判斷的條件中存在的錯誤。因此,還需要更強的邏輯覆蓋準(zhǔn)則去檢驗判斷內(nèi)部條件。條件覆蓋:執(zhí)行足夠的測試用例,使程序中每個判斷的每個條件的每個可能取值至少執(zhí)行一次;條件覆蓋深入到判定中的每個條
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度競業(yè)協(xié)議失效一個月競業(yè)限制解除補償合同
- 二零二五年度大型商場裝修合同(含室內(nèi)外環(huán)境美化)
- 二零二五年度特色主題展臺設(shè)計制作安裝一體化合同
- 二零二五年度紋身技藝培訓(xùn)與加盟合作協(xié)議
- 二零二五年度新能源產(chǎn)業(yè)臨時研發(fā)人員服務(wù)協(xié)議
- 2025年度網(wǎng)絡(luò)安全防護合同價款調(diào)整與網(wǎng)絡(luò)安全事件應(yīng)對
- 二零二五年度虛擬現(xiàn)實產(chǎn)業(yè)利潤分配協(xié)議書
- 二零二五年度搏擊教練員免責(zé)責(zé)任書
- 農(nóng)業(yè)現(xiàn)代化技術(shù)推廣合作協(xié)議
- 智能建筑系統(tǒng)合同
- 工作室成員成長檔案模板(內(nèi)部版)課件
- 項目滯后趕工措施
- 預(yù)防接種人員崗位培訓(xùn)習(xí)題(Ⅰ類培訓(xùn)練習(xí)題庫共385題)
- 現(xiàn)場經(jīng)濟簽證單范本
- 固定義齒工藝流程圖
- 《網(wǎng)店運營與管理》課件(完整版)
- (高職)員工培訓(xùn)與開發(fā)(第四版)完整版教學(xué)課件全套電子教案
- 相親相愛 簡譜
- 第四章工具鋼
- 2022年春新冀人版科學(xué)五年級下冊全冊課件
- 服裝購銷合同最新版
評論
0/150
提交評論