白盒測試用例設(shè)計方法_第1頁
白盒測試用例設(shè)計方法_第2頁
白盒測試用例設(shè)計方法_第3頁
白盒測試用例設(shè)計方法_第4頁
白盒測試用例設(shè)計方法_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1白盒測試用例設(shè)計方法1.1白盒測試簡介白盒測試又稱結(jié)構(gòu)測試、邏輯驅(qū)動測試或基于程序的測試,一般多發(fā)生在單元測試階段。白盒測試方法主要包括邏輯覆蓋法,基本路徑法,程序插裝等。這里重點介紹一下常用的基本路徑法,對于邏輯覆蓋簡單介紹一下覆蓋準(zhǔn)則。1.2基本路徑法在程序控制流圖的基礎(chǔ)上,通過分析控制構(gòu)造的環(huán)路復(fù)雜性,導(dǎo)出獨立路徑集合,從而 設(shè)計測試用例,設(shè)計出的測試用例要保證在測試中程序的每一個可執(zhí)行語句至少執(zhí)行一次。胃hi I楠句在介紹基本路徑測試方法(又稱獨立路徑測試)之前,先介紹流圖符號:圖1如圖1所示,每一個圓,稱為流圖的節(jié)點,代表一個或多個語句,流程圖中的處理方框 序列和菱形決策框可映射為

2、一個節(jié)點,流圖中的箭頭,稱為邊或連接,代表控制流,類似于 流程圖中的箭頭。一條邊必須終止于一個節(jié)點,即使該節(jié)點并不代表任何語句,例如,圖2中兩個處理方框交匯處是一個節(jié)點,邊和節(jié)點限定的范圍稱為區(qū)域。圖2任何過程設(shè)計表示法都可被翻譯成流圖,下面顯示了一段流程圖以及相應(yīng)的流圖。783)流程圖(Ej流圖注意,程序設(shè)計中遇到復(fù)合條件時(邏輯or, and, nor等),生成的流圖變得更為復(fù)雜,如(c)流圖所示。此時必須為語句IF a OR b中的每一個a和b創(chuàng)建一個獨立的節(jié)點。IF a OR h Then IF a OR h Then procedure xIpracedure yEnd IF(c)流

3、圖獨立路徑是指程序中至少引進一個新的處理語句集合,采用流圖的術(shù)語,即獨立路徑必 須至少包含一條在定義路徑之前不曾用到的邊。例如圖(b)中所示流圖的一個獨立路徑集合 為:路徑1: 1-11路徑 2: 1-2-3-4-5-10-1-11路徑 3: 1-2-3-6-8-9-10-1-11路徑 4: 1-2-3-6-7-9-10-1-11上面定義的路徑1,2, 3和4包含了3)流圖的一個基本集,如果能將測試設(shè)計為強迫 運行這些路徑,那么程序中的每一條語句將至少被執(zhí)行一次,每一個條件執(zhí)行時都將分別 取true和false (分支覆蓋)。應(yīng)該注意到基本集并不唯一,實際上,給定的過程設(shè)計可派 生出任意數(shù)量的

4、不同基本集。如何才能知道需要尋找多少條路徑呢?可以通過如下三種方法 之一來計算獨立路徑的上界:V=E-N+2,E是流圖中邊的數(shù)量,N是流圖節(jié)點數(shù)量。V=P+1,P是流圖中判定節(jié)點的數(shù)量V=R,R是流圖中區(qū)域的數(shù)量例如,(b)流圖可以采用上述任意一種算法來計算獨立路徑的數(shù)量V=11條邊-9個節(jié)點+2=4V=3個判定節(jié)點+1=4流圖有4個區(qū)域,所以V=4由此為了覆蓋所有程序語句,必須設(shè)計至少4個測試用例使程序運行于這4條路徑。在采用基本路徑測試方法中,獲取測試用例可參考以下方式:通過非路徑分析得到的測試用例;找到尚未測試過的路徑并生成相應(yīng)的測試用例;指定特定路徑生成相應(yīng)的測試用例。對程序中的循環(huán)作

5、了執(zhí)行了零次和一次的限制,這樣程序路徑的數(shù)目就是有限的。如果程序的數(shù)目有限,就可采用枚舉法得到所有的路徑。完成若干測試用例后,就可以知道所測路徑是哪些,尚有哪些待測路徑。在指出要測試的路徑以后,可以自動生成相應(yīng)的測試用例。1.3邏輯覆蓋1.3.1循環(huán)測試簡介邏輯覆蓋是以程序內(nèi)部的邏輯結(jié)構(gòu)為基礎(chǔ)的設(shè)計測試用例的技術(shù)。它的主要方法有:語 句覆蓋;判定覆蓋;條件覆蓋;判定一條件覆蓋;條件組合覆蓋;路徑覆蓋。舉例如下:(I X、W = 3 a( o a 3 (I X、W = 3 a( o a 3 ( I 5 X) P及v (【5學(xué))=(LX) PS E = V)P 窗力 Q =遷)口( X)pm 很=

6、Y)( I V)=id X) ( E = V) I o = H) P (I V)| =(p。q。e) ZT.(i v/x) (o = a) pi-心(O = H)PC 仁二 Y)=(T y/x) (0 = a) pw (l Y) (: = y)沖(o = h) p(I v)=iT 1 )戰(zhàn) n d (日=0)中棒 d (& = 9 ) (盅 1);=j(A 1) o r (B = 0 )| and (A = 2)or (X 1);=(A 1)and (X 1) or(B = 0) and (A = 2) or (B = 0)and (X 1)=(A L)cr(B 芋 W) and (A = 2

7、) or (B 手 and(X 1 )尸,Vk=jc.-A1一 h申I L4 (a t e d)= (A1) mrf(B = 0)j 瑚(A = 2(X/A1)=(A 1) mcl (B = 0)(m(l (A = 2) cipcJ(X/A 1 ) and ( B = 0 ) and ( X /A 1 )(A 1 ) and (X 1 ) or(B 壬 0 ) and (A , 2 ) and (X 1取真為T,取假為甬;條件B = 0取真為T2,取假為T2。測試用例覆蓋分支【(1, 0, 3),測試用例覆蓋分支【(1, 0, 3),(1, 0, 4)】L3(b, e)【(2, 1, 1),(

8、2, 1, 2)】L3(b, e)條件取值叩2T3TT1T2T3T對于第二個判斷:條件A=2取真為T3,取假為t3 ;條件X1取真為t4,取假為T4。測試用例覆蓋分支條件取值【(2, 0, 4),(2, 0, 3)】L1(c, e)TTTT12 3 4【(1, 0, 1),(1, 0, 1)】L2(b, d)仃亍4【(2, 1, 1),(2, 1, 2)】L3(b, e)LE或1.3.5判定一條件覆蓋判定一條件覆蓋:判定一條件覆蓋就是設(shè)計足夠的測試用例,使得判斷中每個條件的所 有可能取值至少執(zhí)行一次,同時每個判斷中的所有可能取值至少執(zhí)行一次。例如:測試用例覆蓋分支條件取值【(2, 0, 4),

9、(2, 0, 3)】L1(c, e)T1T2T3T4【(1, 1, 1),(1, 1, 1)】L2(b, d)TTX(A=2) and (B=0) or (A1) and (B=0) and (X/A1);(AW1) and (XW1) or (B尹0) and (A2) and (XW1)條件組合覆蓋:條件組合覆蓋就是設(shè)計足夠的測試用例,運行被測程序,使得每個判斷 的所有可能的條件取值組合至少執(zhí)行一次。例: A1, B=0 作 T1T2A1, B約 作T1T2A上1, B = 0作中2A上1, B約 作TT2A=2, X1 作 T3T4A=2, X上 1 作 T3T4A, X1作百4A疙,X

10、上1作T3T4測1試用例覆蓋條件覆蓋組合【(2, 0, 4),(2,0, 3)】(L1)LT2T3T4,【(2, 1, 1),(2, 1, 2)】(L3) ET;,【(1, 0, 3),(1, 0, 4)】(L3)臣頁,【(1, 1, 1),(1, 1, 1)】(L2) 丁3丁4,1.3.7路徑覆蓋路徑覆蓋:路徑測試就是設(shè)計足夠的測試用例,覆蓋程序中所有可能的路徑。測試用例通過路徑覆蓋條件【(2, 0, 4),(2, 0, 3)】ace (L1)TTTT12 3 4【(1, 1, 1),(1, 1, 1)】abd (L2)T1T2T3T4【(1, 1, 2),(1, 1, 3)】abe (L3

11、)丁3丁4【(3, 0, 3),(3, 0, 1)】acd (L4)T1T2T3T4循環(huán)測試主要關(guān)注循環(huán)體結(jié)構(gòu)的正確性,對循環(huán)變量運用類似于邊界值測試的方法以驗證循環(huán)體結(jié)構(gòu)的正確性。循環(huán)測試主要由四種不同類型的循環(huán)結(jié)構(gòu)簡單循環(huán);嵌套循環(huán);連接循環(huán);非結(jié)構(gòu)循環(huán)1.4.1簡單循環(huán)如果n是循環(huán)次數(shù),那么測試用例應(yīng)包括直接跳過循環(huán)體;只執(zhí)行一遍循環(huán)體;連續(xù)執(zhí)行兩遍循環(huán)體;如果循環(huán)次數(shù)為n,執(zhí)行m( m 按照簡單循環(huán)的測試方法測試最內(nèi)層的循環(huán)體,外層循環(huán)仍舊取最小值向外擴展循環(huán)體,測試下一個循環(huán)所有外層循環(huán)變量取最小值;其余內(nèi)層嵌套的循環(huán)體取典型值;繼續(xù)本步驟直到所有的循環(huán)體均測試完畢。1.4.3連接循

12、環(huán) 如果相連接的循環(huán)體互相獨立,按照簡單循環(huán)測試每一個循環(huán)體;1.4.3連接循環(huán) 如果相連接的循環(huán)體互相獨立,按照簡單循環(huán)測試每一個循環(huán)體; 如果相連接的循環(huán)體1的循環(huán)變量的最終結(jié)果是循環(huán)體2循環(huán)變量的初始值,那么采用嵌套循環(huán)的方法來測試(靠前認(rèn)為是內(nèi)層循環(huán))。 最好的方法是重新設(shè)計循環(huán)體結(jié)構(gòu)1.5程序插樁程序插裝是一種基本的測試手段。它是在程序特定部位插入“探針”,以便把程序執(zhí)行過 程中發(fā)生的一些重要歷史事件記錄下來(如語句執(zhí)行次數(shù)、某些變量值的變化情況等),只 有借助于插裝技術(shù),才能了解程序執(zhí)行時的語句覆蓋、分支覆蓋及路徑覆蓋等結(jié)構(gòu)覆蓋情況。 在被測程序中插入的操作(語句)稱為探測器”或探

13、針”。例如:求取兩個整數(shù)X和Y的最大公約數(shù)程序如下:int gsd (int X, int Y) int Q=X;int R=Y;while(Q!=R) if(QR)Q=Q-R;else R=R-Q;return Q;為了記錄改程序中語句的執(zhí)行次數(shù),我們使用插樁技術(shù)插入如下語句:C(i)=C(i)+1,i=1,2,6插樁之后的流程圖如下:在程序入口處插入對 計數(shù)器C(i)的初始化 語句在程序入口處插入對 計數(shù)器C(i)的初始化 語句Ct 1) = C(4|- 1 i ; C3) = C(3) 4 1 iI 圖中虛線框中的內(nèi)容并不是源程序的內(nèi)容,而是我們?yōu)榱擞涗浾Z句的執(zhí)行次數(shù)而插入 的。虛線框中

14、的程序就是為了完成計數(shù)。形式就是C(n)=C (n)+1 ; n = 1, 2, 3, ,n ;該程序從入口開始,到出口執(zhí)行結(jié)束。凡經(jīng)歷的計數(shù)語句都能記錄下該程序點的執(zhí)行 次數(shù)。如果我們在程序的入口處還插入了對計數(shù)器C(i)初始化的語句,在出口處插入了打印 這些計數(shù)器的語句,就構(gòu)成了完整的插樁程序。它就能記錄并輸出在各程序點上語句的實際 執(zhí)行次數(shù)。下圖為插樁之后的程序,箭頭所指為插入的語句。源程序的語句已略去。初始化叫)AC(2) = C(2 + 1AC(n) = C間卜 1A打印C(i)設(shè)計插樁程序時需要考慮的問題包括:(1)探測哪些信息。這個問題需要具體問題具體分析。(2)在程序的什么部位設(shè)置探測點。針對這個問題,在手機測試中,通常在下列一些部位設(shè)置探測點:程序塊的第1個可執(zhí)行語句之前for

溫馨提示

  • 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

提交評論