第5章白盒測試_第1頁
第5章白盒測試_第2頁
第5章白盒測試_第3頁
第5章白盒測試_第4頁
第5章白盒測試_第5頁
已閱讀5頁,還剩77頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、2022-2-21信息工程教研室 谷凌雁白盒測試白盒測試 白盒測試概念 測試覆蓋標準邏輯驅動測試基本路徑測試 把測試對象看做一個透明的盒子 白盒測試是根據被測程序的內部結構設計測試用例并完成測試的一種測試方法 白盒測試或邏輯驅動測試 基于一個應用代碼的內部邏輯知識,測試覆蓋全部代碼、分支、路徑和條件 白盒測試(結構測試)概念白盒測試 (結構測試)特點 可以構成測試數據使特定程序部分得到測試 有一定的充分性度量手段 可獲得較多工具支持 通常只用于單元測試白盒測試的方法靜態(tài)測試方法: 程序結構分析正式審查 同事審查 公開陳述 檢驗動態(tài)測試方法: 邏輯覆蓋語句覆蓋判定覆蓋條件覆蓋判定-條件覆蓋條件組

2、合 路徑覆蓋通用代碼審查清單 數據引用錯誤 數據聲明錯誤 計算錯誤 比較錯誤 控制流程錯誤 子程序參數錯誤 輸入、輸出錯誤 其他錯誤代碼覆蓋率 采用白盒法進行測試時,考慮的是測試用例對程序內部邏輯的覆蓋程度 最徹底的白盒法是覆蓋程序中的每一條路徑,但這往往無法實現 采用其它一些標準來量度覆蓋的程度,并希望覆蓋程度盡可能高些測試覆蓋標準測試覆蓋標準 上頁小程序的流程圖,其中包括了一個執(zhí)行達20次的循環(huán)。那么它所包含的不同執(zhí)行路徑數高達520(1013)條,若要對它進行窮舉測試,覆蓋所有的路徑。假使測試程序對每一條路徑進行測試需要1毫秒,同樣假定一天工作24小時,一年工作365 天, 那么要想把如

3、圖所示的小程序的所有路徑測試完,則需要3170年。邏輯驅動測試 語句覆蓋 判定覆蓋 條件覆蓋 判定條件覆蓋 條件組合覆蓋路徑覆蓋例:實現一個簡單的數學運算 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.語句覆蓋基本思想是:設計若干測試用例,運行被測程序,使程序中每個可執(zhí)行語句至少執(zhí)行一次。11.語句覆蓋續(xù)1只需設計一個測試用例:a=2,b=1,c=6;即達到了語句覆蓋。1.語句覆蓋續(xù)2 【優(yōu)點】【優(yōu)點】 :可以很直觀地從源代

4、碼得到測試用例,無須細分每條判定表達式。 【缺點】【缺點】 :由于這種測試方法僅僅針對程序邏輯中顯式存在的語句,但對于隱藏的條件是無法測試的。如在多分支的邏輯運算中無法全面的考慮。語句覆蓋是最弱的邏輯覆蓋。2.判定覆蓋基本思想是:設計若干測試用例,運行被測程序,使得程序中每個判斷的取真分支和取假分支至少經歷一次,即判斷真假值均曾被滿足。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)點】:判定覆蓋具有比語句覆蓋更強的測試能力。同樣判定覆蓋也具有和語句覆蓋一樣的簡單性,無須細分每個判定就可以得到測試用例。 【缺點】【缺點】:往往大部分的判定語句是由多個邏輯條件組合而成,若僅僅判斷其整個最終結果,而忽略每個條件的取值情況,必然會遺漏部分測試路徑。判定覆蓋仍是弱的邏輯覆蓋。3.條件覆蓋基本思想是:設計若干測試用例,執(zhí)行被測程序以后要使每個判斷中每個條件的可能取值至少滿足一次。13.條件覆蓋續(xù)1

6、 判斷M表達式:設條件 a0 取真 記為 T1 假 F1 條件 b0 取真 記為 T2 假 F2 判斷Q表達式:設條件 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分支。分支。我們用條件覆蓋設計的思想就是讓測試用例能覆蓋T1、T2、T3、T4、F1、F2、F3、F4判斷M判斷Q3.條件覆蓋續(xù)3 【優(yōu)點】【優(yōu)點】:

7、增加了對條件判定情況的測試,增加了測試路徑。 【缺點】【缺點】:條件覆蓋不一定包含判定覆蓋。例如,我們剛才設計的用例就沒有覆蓋判斷M的Y分支和判斷Q的N分支。條件覆蓋只能保證每個條件至少有一次為真,而不考慮所有的判定結果。4.判定條件覆蓋基本思想是:設計足夠的測試用例,使得判斷條件中的所有條件可能至少執(zhí)行一次取值,同時,所有判斷的可能結果至少執(zhí)行一次。1判斷M判斷Q4.判定條件覆蓋續(xù)1 按照判定條件覆蓋的要求,我們設計的測試用例要滿足如下條件:所有條件可能至少執(zhí)行一次取值;所有判斷的可能結所有判斷的可能結果至少執(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)點】 :能同時滿足判定、條件兩種覆蓋標準。 【缺點】【缺點】 :判定/條件覆蓋準則的缺點是未考慮條件的組合情況。5.條件組合覆蓋基本思想是:設計足夠的測試用例,基本思想是:設計足夠的測試用例,使使得所有可能的條件取值組合至少執(zhí)行一得所有可能的條件取值組合至少執(zhí)行一次次15.條件組合覆蓋續(xù)1

9、按照條件組合覆蓋的基本思想,對于前面的例子,我們把每個判斷中的所有條件進行組合,設計組合條件如表所示,而我們設計的測試用例就要包括所有的組合條件。編號覆蓋條件取值判定條件取值具體條件取值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)形復雜度: 10(條邊)- 8(個節(jié)點)+ 2 = 4 導出獨立路徑(用語句編號表示) 路徑1:414 路徑2:46714 路徑3:4691013414 路徑4:4691213414467910121314路徑覆蓋的利弊 實現了所有路徑的測試,發(fā)現錯誤能力強 某些條件錯誤可能無法發(fā)現 路徑數龐大,不可能覆蓋所有路徑 用例數量的增加例1:有下面的C函數,用基本路徑測試法進行測試 void Sort(int iRecordNum,int iType)o o int x=0;o int y=0;o while (iRecordNum- 0)o o if(0= =

11、iType)o x=y+2; break;o elseo if (1= =iType)ox=y+10;o elseo x=y+20;o 1. 基本路徑測試舉例912基本路徑測試舉例第一步:第一步:畫出控制流圖流程圖用來描述程序控制結構。可將流程圖映射到一個相應的流圖(假設流程圖的菱形決定框中不包含復合條件)。在流圖中,每一個圓,稱為流圖的結點,代表一個或多個語句。一個處理方框序列和一個菱形決測框可被映射為一個結點,流圖中的箭頭,稱為邊或連接,代表控制流,類似于流程圖中的箭頭。一條邊必須終止于一個結點,即使該結點并不代表任何語句(例如:if-else-then結構)。由邊和結點限定的范圍稱為區(qū)域

12、。計算區(qū)域時應包括圖外部的范圍。基本路徑測試-畫控制流圖出 畫出其程序流程圖和對應的控制流圖如下467810111314467148101113程序流程圖 控制流圖991212基本路徑測試 - 計算圈復雜度第二步:第二步:計算圈復雜度計算如下:流圖中有四個區(qū)域;V(G)=10條邊-8結點+2=4;V(G)=3個判定結點+1=4。4671481011132134基本路徑測試 - 導出測試用例第三步:第三步:導出測試用例根據上面的計算方法,可得出四個獨立的路徑。(一條獨立路徑是指,和其他的獨立路徑相比,至少引入一個新處理語句或一個新判斷的程序通路。V(G)值正好等于該程序的獨立路徑的條數。) 路徑

13、1:4-14 路徑2:4-6-7-14 路徑3:4-6-8-10-13-4-14 路徑4:4-6-8-11-13-4-14根據上面的獨立路徑,去設計輸入數據,使程序分別執(zhí)行到上面四條路徑。4671481011132134基本路徑測試 - 準備測試用例第四步:第四步:準備測試用例 為了確保基本路徑集中的每一條路徑的執(zhí)行,根據判斷結點給出的條件,選擇適當的數據以保證某一條路徑可以被測試到,滿足上面例子基本路徑集的測試用例是:基本路徑測試 - 準備測試用例路徑1:4-14輸入數據:iRecordNum0,或者取iRecordNum 0)o o if(0= =iType)o x=y+2; break;

14、o elseo if(1= =iType)o x=y+10;o elseo x=y+20;o 1. 例2:下例程序流程圖描述了最多輸入50個值(以1作為輸入結束標志),計算其中有效的學生分數的個數、總分數和平均值。開始 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/n1

15、average= 1 返回FFFTTT12和345和6789101112步驟步驟1:導出過程的流圖導出過程的流圖步驟步驟2:2:確定環(huán)形復雜性度量確定環(huán)形復雜性度量V(G)V(G):1)V(G)= 6 (個區(qū)域)2)V(G)=EN+2=1612+2=6其中E為流圖中的邊數,N為結點數;3)V(G)=P+1=5+1=6 其中P為謂詞結點的個數。在流圖中,結點2、3、5、6、9是謂詞結點。123456789111012R1R2R3R4R5R6步驟步驟3 3:確定基本路徑集合確定基本路徑集合(即獨立路徑集合)。于是可確定6條獨立的路徑:路徑1:1-2-9-10-12路徑2:1-2-9-11-12路徑

16、3: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:為每一條獨立路徑各為每一條獨立路徑各設計一組測試用例,以便設計一組測試用例,以便強迫程序沿著該路徑至少強迫程序沿著該路徑至少執(zhí)行一次。執(zhí)行一次。1)路徑1(1-2-9-10-12)的測試用例: scorek=有效分數值,當k i ; scorei=1, 2i50;期望結果:根據輸入的有效分數算出正確的分數個數n1、總分sum和平均分average。開始 i =1,n1=n2=0,su

17、m=0Score i -1 AND n20 AND scorei0average=sum/n1average= 1 返回FFFTTT12和345和67891011122)路徑2(1-2-9-11-12)的測試用例: score 1 = 1 ; 期望的結果:average = 1 ,其他量保持初值。3)路徑3(1-2-3-9-10-12)的測試用例: 輸入多于50個有效分數,即試圖處理51個分數,要求前51個為有效分數;期望結果:n1=50、且算出正確的總分和平均分。開始 i =1,n1=n2=0,sum=0Score i -1 AND n20 AND scorei0average=sum/n1

18、average= 1 返回FFFTTT12和345和67891011124)路徑4(1-2-3-4-5-8-2)的測試用例: scorei=有效分數,當i50; scorek0, k i ;期望結果:根據輸入的有效分數算出正確的分數個數n1、總分sum和平均分average。5)路徑5的測試用例: scorei=有效分數, 當i100, k i ;期望結果:根據輸入的有效分數算出正確的分數個數n1、總分sum和平均分average。開始 i =1,n1=n2=0,sum=0Score i -1 AND n20 AND scorei0average=sum/n1average= 1 返回FFFT

19、TT12和345和67891011126)路徑6(1-2-3-4-5-6-7-8-2)的測試用例: scorei=有效分數, 當i50;期望結果:根據輸入的有效分數算出正確的分數個數n1、總分sum和平均分average。開始 i =1,n1=n2=0,sum=0Score i -1 AND n20 AND scorei0average=sum/n1average= 1 返回FFFTTT12和345和6789101112 例3.第一步:第一步:導出控制流圖第二步:第二步:計算環(huán)形復雜度1)V(G)= 4 (個區(qū)域)2)V(G)=EN+2=108+2=4 其中E為流圖中的邊數,N為結點數;3)V

20、(G)=P+1=3+1=4 其中P為謂詞結點的個數。在流圖中,結點7、9、11是謂詞結點。第三步:第三步:確定基本路徑集 路徑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第四步:第四步:為每一條路徑設計測試用例白盒測試的主要目的: 保證一個模塊中的所有獨立路徑至少被執(zhí)行一次; 對所有的邏輯值均需要測試真、假兩個分支; 在上下邊界及可操作范圍內運行所有循環(huán); 檢查內部數據結構以確保其有效性。本章小結 控制流圖有以下幾個特點: (1)具有唯一入口結點,表示程序段的開始語句; (2)具有唯一出口

21、結點,表示程序段的結束語句; (3)結點由帶標號的圓圈表示,表示一個或多個無分支的源程序語句; (4)控制邊由帶箭頭的直線或弧表示,代表控制流的方向。本章小結白盒測試: 邏輯覆蓋+路徑覆蓋 覆蓋標準從低到高分別是: 語句覆蓋:是一個比較弱的測試標準,它的含義是:選擇足夠的測試用例,使得程序中每個語句至少都能被執(zhí)行一次。它是最弱的邏輯覆蓋,效果有限,必須與其它方法交互使用。 判定覆蓋(也稱為分支覆蓋):執(zhí)行足夠的測試用例,使得程序中的每一個分支至少都通過一次。判定覆蓋只比語句覆蓋稍強一些,但實際效果表明,只是判定覆蓋,還不能保證一定能查出在判斷的條件中存在的錯誤。因此,還需要更強的邏輯覆蓋準則去檢驗判斷內部條件。條件覆蓋:執(zhí)行足夠的測試用例,使程序中每個判斷的每個條件的每個可能取值至少執(zhí)行一次;條件覆蓋深入到判定中的每個條

溫馨提示

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

評論

0/150

提交評論