當前位置:學問谷 >

職場範例 >職場健康 >

白盒測試的方法有哪些

白盒測試的方法有哪些

導語:白盒測試 又稱結構測試、透明盒測試、邏輯驅動測試或基於代碼的測試。白盒測試是一種測試用例設計方法,盒子指的是被測試的軟件,白盒指的是盒子是可視的,你清楚盒子內部的東西以及裏面是如何運作的。以下是小編精心整理的白盒測試的方法有哪些,歡迎大家借鑑與參考,希望對大家有所幫助。

白盒測試的方法有哪些

"白盒"法全面瞭解程序內部邏輯結構、對所有邏輯路徑進行測試。"白盒"法是窮舉路徑測試。在使用這一方案時,測試者必須檢查程序的內部結構,從檢查程序的邏輯着手,得出測試數據。

貫穿程序的獨立路徑數是天文數字。採用什麼方法對軟件進行測試呢?

  常用的軟件測試方法有兩大類:

靜態測試方法和動態測試方法。其中軟件的靜態測試不要求在計算機上實際執行所測程序,主要以一些人工的模擬技術對軟件進行分析和測試;

而軟件的動態測試是通過輸入一組預先按照一定的測試準則構造的實例數據來動態運行程序,而達到發現程序錯誤的過程。在動態分析技術中,最重要的技術是路徑和分支測試。

下面要介紹的六種覆蓋測試方法屬於動態分析方法。

白盒測試的測試方法有代碼檢查法、靜態結構分析法、靜態質量度量法、邏輯覆蓋法、基本路徑測試法、域測試、符號測試、Z路徑覆蓋、程序變異、

  其中運用最為廣泛的是基本路徑測試法、

基本路徑測試法是在程序控制流圖的基礎上,通過分析控制構造的環路複雜性,導出基本可執行路徑集合,從而設計測試用例的方法、

設計出的測試用例要保證在測試中程序的每個可執行語句至少執行一次、

在程序控制流圖的基礎上,通過分析控制構造的環路複雜性,導出基本可執行路徑集合,從而設計測試用例、包括以下4個步驟和一個工具方法:

1、程序的控制流圖:描述程序控制流的一種圖示方法

2、程序圈複雜度:McCabe複雜性度量、從程序的環路複雜性可導出程序基本路徑集合中的獨立路徑條數,這是確定程序中每個可執行語句至少執行一次所必須的測試用例數目的上界、

3、導出測試用例:根據圈複雜度和程序結構設計用例數據輸入和預期結果、

4、準備測試用例:確保基本路徑集中的每一條路徑的執行、

  工具方法:

圖形矩陣:是在基本路徑測試中起輔助作用的軟件工具,利用它可以實現自動地確定一個基本路徑集、

程序的控制流圖:描述程序控制流的一種圖示方法、

圓圈稱為控制流圖的一個結點,表示一個或多個無分支的語句或源程序語句

流圖只有二種圖形符號:圖中的每一個圓稱為流圖的結點,代表一條或多條語句、流圖中的箭頭稱為邊或連接,代表控制流 任何過程設計都要被翻譯成控制流圖、

  如何根據程序流程圖畫出控制流程圖?

在將程序流程圖簡化成控制流圖時,應注意:

在選擇或多分支結構中,分支的匯聚處應有一個匯聚結點、

邊和結點圈定的區域叫做區域,當對區域計數時,圖形外的區域也應記為一個區域、

如果判斷中的條件表達式是由一個或多個邏輯運算符 (OR,AND,NAND,NOR) 連接的複合條件表達式,則需要改為一系列只有單條件的嵌套的判斷、例如:1 if a or b 2 x 3 else 4 y

對應的邏輯為:

獨立路徑:至少沿一條新的邊移動的路徑

基本路徑測試法的步驟:

第一步:畫出控制流圖

流程圖用來描述程序控制結構、可將流程圖映射到一個相應的流圖(假設流程圖的菱形決定框中不包含複合條件)、在流圖中,每一個圓,稱為流圖的結點,代表一 個或多個語句、一個處理方框序列和一個菱形決測框可被映射為一個結點,流圖中的箭頭,稱為邊或連接,代表控制流,類似於流程圖中的箭頭、一條邊必須終止於 一個結點,即使該結點並不代表任何語句(例如:if—else—then結構)、由邊和結點限定的範圍稱為區域、計算區域時應包括圖外部的範圍、

第二步:計算圈複雜度

圈複雜度是一種為程序邏輯複雜性提供定量測度的軟件度量,將該度量用於計算程序的基本的獨立路徑數目,為確保所有語句至少執行一次的測試數量的上界、獨立路徑必須包含一條在定義之前不曾用到的邊、

有以下三種方法計算圈複雜度:流圖中區域的數量對應於環型的複雜性; 給定流圖G的圈複雜度V(G),定義為V(G)=E—N+2,E是流圖中邊的數量,N是流圖中結點的`數量; 給定流圖G的圈複雜度V(G),定義為V(G)=P+1,P是流圖G中判定結點的數量、

第三步:導出測試用例 根據上面的計算方法,可得出四個獨立的路徑、(一條獨立路徑是指,和其他的獨立路徑相比,至少引入一個新處理語句或一個新判斷的程序通路、V(G)值正好等於該程序的獨立路徑的條數、)

路徑1:4—14

路徑2:4—6—7—14

路徑3:4—6—8—10—13—4—14

路徑4:4—6—8—11—13—4—14

根據上面的獨立路徑,去設計輸入數據,使程序分別執行到上面四條路徑、

第四步:準備測試用例

為了確保基本路徑集中的每一條路徑的執行,根據判斷結點給出的條件,選擇適當的數據以保證某一條路徑可以被測試到,滿足上面例子基本路徑集的測試用例是:

舉例説明:流程圖描述了最多輸入50個值(以?1作為輸入結束標誌),計算其中有效的學生分數的個數、總分數和平均值、

步驟1:導出過程的流圖、

步驟2:確定環形複雜性度量V(G):1)V(G)= 6 (個區域) 2)V(G)=E?N+2=16?12+2=6 其中E為流圖中的邊數,N為結點數; 3)V(G)=P+1=5+1=6 其中P為謂詞結點的個數、在流圖中,結點2、3、5、6、9是謂詞結點、

步驟3:確定基本路徑集合(即獨立路徑集合)、於是可確定6條獨立的路徑:路徑1:1—2—9—10—12 路徑2:1—2—9—11—12 路徑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—2…

步驟4:為每一條獨立路徑各設計一組測試用例,以便強迫程序沿着該路徑至少執行一次、

1)路徑1(1—2—9—10—12)的測試用例:score[k]=有效分數值,當k < i ; score=?1,2≤i≤50; 期望結果:根據輸入的有效分數算出正確的分數個數n1、總分sum和平均分average、

2)路徑2(1—2—9—11—12)的測試用例:score[ 1 ]= ? 1 ; 期望的結果:average = ? 1 ,其他量保持初值、

3)路徑3(1—2—3—9—10—12)的測試用例:輸入多於50個有效分數,即試圖處理51個分數,要求前51個為有效分數; 期望結果:n1=50、且算出正確的總分和平均分、

4)路徑4(1—2—3—4—5—8—2…)的測試用例:score=有效分數,當i

  測試方法

白盒測試的測試方法有代碼檢查法、靜態結構分析法、靜態質量度量法、邏輯覆蓋法、基本路徑測試法、域測試、符號測試、路徑覆蓋和程序變異。

白盒測試法的覆蓋標準有邏輯覆蓋、循環覆蓋和基本路徑測試。其中邏輯覆蓋包括語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋和路徑覆蓋。六種覆蓋標準發現錯誤的能力呈由弱到強的變化:

1、語句覆蓋每條語句至少執行一次。

2、判定覆蓋每個判定的每個分支至少執行一次。

3、條件覆蓋每個判定的每個條件應取到各種可能的值。

4、判定/條件覆蓋同時滿足判定覆蓋條件覆蓋。

5、條件組合覆蓋每個判定中各條件的每一種組合至少出現一次。

6、路徑覆蓋使程序中每一條可能的路徑至少執行一次。

  要求

1、保證一個模塊中的所有獨立路徑至少被使用一次。

2、對所有邏輯值均需測試 true 和 false。

3、在上下邊界及可操作範圍內運行所有循環。

4、檢查內部數據結構以確保其有效性。

  目的

通過檢查軟件內部的邏輯結構,對軟件中的邏輯路徑進行覆蓋測試;在程序不同地方設立檢查點,檢查程序的狀態,以確定實際運行狀態與預期狀態是否一致。

  特點

依據軟件設計説明書進行測試、對程序內部細節的嚴密檢驗、針對特定條件設計測試用例、對軟件的邏輯路徑進行覆蓋測試。

  實施步驟

1、測試計劃階段:根據需求説明書,制定測試進度。

2、測試設計階段:依據程序設計説明書,按照一定規範化的方法進行軟件結構劃分和設計測試用例。

3、測試執行階段:輸入測試用例,得到測試結果。

4、測試總結階段:對比測試的結果和代碼的預期結果,分析錯誤原因,找到並解決錯誤。

優缺點

  優點

1、迫使測試人員去仔細思考軟件的實現

2、可以檢測代碼中的每條分支和路徑

3、揭示隱藏在代碼中的錯誤

4、對代碼的測試比較徹底

5、最優化

  缺點

1、昂貴

2、無法檢測代碼中遺漏的路徑和數據敏感性錯誤

3、不驗證規格的正確性

  侷限

但即使每條路徑都測試了仍然可能有錯誤。可能出現的情況如下:

窮舉路徑測試決不能查出程序違反了設計規範,即程序本身是個錯誤的程序。

窮舉路徑測試不可能查出程序中因遺漏路徑而出錯。

窮舉路徑測試可能發現不了一些與數據相關的錯誤。

標籤: 白盒 測試
  • 文章版權屬於文章作者所有,轉載請註明 https://xuewengu.com/flzc/jiankang/opwm.html