白盒測試用例設計方法_第1頁
白盒測試用例設計方法_第2頁
白盒測試用例設計方法_第3頁
白盒測試用例設計方法_第4頁
白盒測試用例設計方法_第5頁
全文預覽已結束

下載本文檔

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

文檔簡介

1/1白盒測試用例設計方法1白盒測試用例設計方法

1.1白盒測試簡介

白盒測試又稱結構測試、邏輯驅動測試或基于程序的測試,一般多發生在單元測試階段。白盒測試方法主要包括邏輯覆蓋法,基本路徑法,程序插裝等。

這里重點介紹一下常用的基本路徑法,對于邏輯覆蓋簡單介紹一下覆蓋準則。

1.2基本路徑法

在程序控制流圖的基礎上,通過分析控制構造的環路復雜性,導出獨立路徑集合,從而設計測試用例,設計出的測試用例要保證在測試中程序的每一個可執行語句至少執行一次。

在介紹基本路徑測試方法(又稱獨立路徑測試)之前,先介紹流圖符號:

圖1

如圖1所示,每一個圓,稱為流圖的節點,代表一個或多個語句,流程圖中的處理方框序列和菱形決策框可映射為一個節點,流圖中的箭頭,稱為邊或連接,代表控制流,類似于流程圖中的箭頭。一條邊必須終止于一個節點,即使該節點并不代表任何語句,例如,圖2中兩個處理方框交匯處是一個節點,邊和節點限定的范圍稱為區域。

圖2

任何過程設計表示法都可被翻譯成流圖,下面顯示了一段流程圖以及相應的流圖。

注意,程序設計中遇到復合條件時(邏輯or,and,nor等),生成的流圖變得更為復雜,如(c)流圖所示。此時必須為語句IFaORb中的每一個a和b創建一個獨立的節點。

(c)流圖

獨立路徑是指程序中至少引進一個新的處理語句集合,采用流圖的術語,即獨立路徑必須至少包含一條在定義路徑之前不曾用到的邊。例如圖(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包含了(b)流圖的一個基本集,如果能將測試設計為強迫運行這些路徑,那么程序中的每一條語句將至少被執行一次,每一個條件執行時都將分別取true和false(分支覆蓋)。應該注意到基本集并不唯一,實際上,給定的過程設計可派生出任意數量的不同基本集。如何才能知道需要尋找多少條路徑呢?可以通過如下三種方法之一來計算獨立路徑的上界:

1.V=E-N+2,E是流圖中邊的數量,N是流圖節點數量。

2.V=P+1,P是流圖中判定節點的數量

3.V=R,R是流圖中區域的數量

例如,(b)流圖可以采用上述任意一種算法來計算獨立路徑的數量

1.V=11條邊-9個節點+2=4

2.V=3個判定節點+1=4

3.流圖有4個區域,所以V=4

由此為了覆蓋所有程序語句,必須設計至少4個測試用例使程序運行于這4條路徑。

在采用基本路徑測試方法中,獲取測試用例可參考以下方式:

?通過非路徑分析得到的測試用例;

?找到尚未測試過的路徑并生成相應的測試用例;

?指定特定路徑生成相應的測試用例。

?對程序中的循環作了執行了零次和一次的限制,這樣程序路徑的數目就是有限的。

?如果程序的數目有限,就可采用枚舉法得到所有的路徑。

?完成若干測試用例后,就可以知道所測路徑是哪些,尚有哪些待測路徑。

?在指出要測試的路徑以后,可以自動生成相應的測試用例。

1.3邏輯覆蓋

1.3.1循環測試簡介

邏輯覆蓋是以程序內部的邏輯結構為基礎的設計測試用例的技術。它的主要方法有:語句覆蓋;判定覆蓋;條件覆蓋;判定—條件覆蓋;條件組合覆蓋;路徑覆蓋。舉例如下:

1.3.2語句覆蓋

語句覆蓋:語句覆蓋就是設計若干個測試用例,運行被測程序,使得每一可執行語句至少執行一次。

在圖例中,正好所有的可執行語句都在路徑L1上,所以選擇路徑L1設計測試用例,就可以覆蓋所有的可執行語句。

測試用例的設計格式如下:【輸入的(A,B,X),輸出的(A,B,X)】為圖例設計滿足語句覆蓋的測試用例是:【(2,0,4),(2,0,3)】

覆蓋ace【L1】

1.3.3判定覆蓋

判定覆蓋:判定覆蓋又稱為分支覆蓋。就是設計若干個測試用例,運行被測程序,使得程序中每個判斷的取真分支和取假分支至少經歷一次。對于圖例,如果選擇路徑L1和L2,就可得滿足要求的測試用例:

【(2,0,4),(2,0,3)】覆蓋ace【L1】【(1,1,1),(1,1,1)】覆蓋abd【L2】

如果選擇路徑L3和L4,還可得另一組可用的測試用例:

【(2,1,1),(2,1,2)】覆蓋abe【L3】【(3,0,3),(3,0,1)】覆蓋acd【L4】

()()()()()

AX

BAX≤≤≠≠≤11021andorandand

1.3.4條件覆蓋

條件覆蓋:條件覆蓋就是設計若干個測試用例,運行被測程序,使得程序中每個判斷的每個條件的可能取值至少執行一次。

在圖例中,我們事先可對所有條件的取值加以標記。例如,對于第一個判斷:

條件A>1取真為,取假為;條件B=0取真為,取假為。對于第二個判斷:

條件A=2取真為,取假為;條件X>1取真為,取假為。

測試用例覆蓋分支條件取值

【(2,0,4),(2,0,3)】L1(c,e)【(1,0,1),(1,0,1)】L2(b,d)【(2,1,1),(2,1,2)】L3(b,e)或

測試用例

覆蓋分支

條件取值

【(1,0,3),(1,0,4)】L3(b,e)

【(2,1,1),(2,1,2)】L3(b,e)

1.3.5判定-條件覆蓋

判定-條件覆蓋:判定-條件覆蓋就是設計足夠的測試用例,使得判斷中每個條件的所有可能取值至少執行一次,同時每個判斷中的所有可能取值至少執行一次。

例如:

測試用例覆蓋分支條件取值

【(2,0,4),(2,0,3)】L1(c,e)【(1,1,1),(1,1,1)】L2(b,d)(A=2)and(B=0)or(A>1)and(B=0)and(X/A>1);(A≤1)and(X≤1)or(B≠0)and(A≠2)and(X≤1)

4321TTTT4321TTTT4321TTTT4321TTTT4321TTTT4321TTTT1T1T2T2T3T3T4T4T4321TTTT

1.3.6條件組合覆蓋

條件組合覆蓋:條件組合覆蓋就是設計足夠的測試用例,運行被測程序,使得每個判斷的所有可能的條件取值組合至少執行一次。

例:①A>1,B=0作②A>1,B≠0作③A≯1,B=0作

④A≯1,B≠0作⑤A=2,X>1作⑥A=2,X≯1作⑦A≠2,X>1作⑧A≠2,X≯1作

測試用例覆蓋條件

覆蓋組合【(2,0,4),(2,0,3)】(L1)①,⑤

【(2,1,1),(2,1,2)】(L3)4321TTTT②,⑥【(1,0,3),(1,0,4)】(L3)4321TTTT③,⑦【(1,1,1),(1,1,1)】(L2)4321TTTT④,⑧

1.3.7路徑覆蓋

路徑覆蓋:路徑測試就是設計足夠的測試用例,覆蓋程序中所有可能的路徑。

測試用例通過路徑覆蓋條件【(2,0,4),(2,0,3)】ace(L1)4321TTTT

【(1,1,1),(1,1,1)】abd(L2)4321TTTT【(1,1,2),(1,1,3)】abe(L3)4321TTTT【(3,0,3),(3,0,1)】acd(L4)4321TTTT

21TT21TT21TT21TT43TT43TT43TT43TT4

321TTTT

循環測試主要關注循環體結構的正確性,對循環變量運用類似于邊界值測試的方法以驗證循環體結構的正確性。

循環測試主要由四種不同類型的循環結構

簡單循環;

嵌套循環;

連接循環;

非結構循環

1.4.1簡單循環

如果n是循環次數,那么測試用例應包括

直接跳過循環體;

只執行一遍循環體;

連續執行兩遍循環體;

如果循環次數為n,執行m(mR)

Q=Q-R;

elseR=R-Q;

}

returnQ;

}

為了記錄改程序中語句的執行次數,我們使用插樁技術插入如下語句:

C(i)=C(i)+1,i=1,2,(6)

插樁之后的流程圖如下:

在程序入口處插入對

計數器C(i)的初始化

語句

在程序出口處加

入打印語句

圖中虛線框中的內容并不是源程序的內容,而是我們為了記錄語句的執行次數而插入的。虛線框中的程序就是為了完成計數。形式就是

C(n)=C(n)+1;n=1,2,3,……,n;

該程序從入口開始,到出口執行結束。凡經歷的計數語句都能記錄下該程序點的執行次數。

如果我們在程序的入口處還插入了對計數器C(i)初始化的語句,在出口處插入了打印這些計數器的語句,就構成了完整的插樁程序。它就能記錄并輸出在各程序點上語句的實際執行次數。

下圖為插樁之后的程序,箭頭所指為插入的語句。源程序的語句已略去。

設計插樁程序時需要考慮的問題包括:

(1)探測哪些信息。

這個問題需要具體問題具體分析。

(2)在程序的什么部位設置探測點。

針對這個問題,在手機測試中,通常在下列一些部位設置探測點:

程序塊的第1個可執行語句之前

for,do,do-while,dountil等循環語句處

溫馨提示

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

評論

0/150

提交評論