測試用例設計方法-- 白盒測試

白盒測試概述

簡介

白盒測試又稱結構測試、透明盒測試、邏輯驅動測試或基於代碼的測試。白盒測試是一種測試用例設計方法,盒子指的是被測試的軟件,白盒指的是盒子是可視的,即清楚盒子內部的東西以及裏面是如何運作的。

特點

 

 

 

白盒測試方法分爲靜態測試和動態測試。

靜態測試是在測試過程中沒有執行程序,主要方法如下:

  1. 桌面檢查:找資深的同事檢查代碼
  2. 代碼審查:以會議的形式,召集相關人員=參與,由會議召集人講解代碼邏輯實現
  3. 代碼走查:以會議的形式,與會人都需要事先了解代碼實現,通過會議的形式,一起討論代碼邏輯實現
  4. 代碼掃描工具:根據代碼規範設計工具,檢查代碼中不符合規範的語句。

動態測試是在在代碼執行過程中完成測試。

主要測試方法如下:

邏輯覆蓋 

通過對程序的邏輯結構的遍歷,實現代碼覆蓋的方法。

覆蓋率:

1. 邏輯覆蓋包含:

 

 

  • 語句覆蓋
  • 判定覆蓋
  • 條件覆蓋
  • 判定條件覆蓋
  • 條件組合覆蓋
  • 路徑覆蓋

基本路徑覆蓋

  • 語句覆蓋

設計測試用例,使得程序中每條語句被覆蓋。

語句覆蓋率:

語句覆蓋率=至少執行一次的語句的數量/可執行的語句總數

ITEM 指的是語句,條件,判定,判定條件,條件組合,路徑等。

語句覆蓋測試用例設計:看下面代碼塊和對應流程圖如下:

測試用例設計如下:

輸入

覆蓋語句塊

a=1 and b = 1 and c=-1

1,3,4

a=1 and b = -1 and c= 1

2,4

上面兩個用例就可以覆蓋所有代碼塊。

語句覆蓋的侷限性

當判定條件誤寫成 a>0 || b >0, 上述用例無法測試到該錯誤。

  • 判定覆蓋

使得程序中的每一個判斷至少獲得一次和一次,使得程序流程圖中的每一個真假分支至少被執行一次。

判定覆蓋率:

【優點】:分支(判定)覆蓋具有比語句覆蓋更強的測試能力。同樣分支(判定)覆蓋也具有和語句覆蓋一樣的簡單性,無須細分每個判定就可以得到測試用例。

【缺點】:往往大部分的分支(判定)語句是由多個邏輯條件組合而成,若僅僅判斷其整個最終結果,而忽略每個條件的取值情況,必然會遺漏部分測試路徑。判定覆蓋仍是弱的邏輯覆蓋。

  • 條件覆蓋

條件覆蓋的含義是:不僅程序中的每個語句至少被執行一次,而且使每個判定表達式中的每個條件都取到各種可能的結果。

條件覆蓋率

例如,

  • 案例代碼中,有判定2個,條件3個條件結果6
  • 設計測試用例執行了5個條件結果,條件覆蓋率是5/6.

判定條件定義如下:

  1. If(a>0 && b>0) 判定,記爲P1,
  2. If(c>0)判定,記爲P2
  3. a>0 記爲 C1
  4. b>0 記爲 C2
  5. c>0記爲 C3

測試數據

C1

C2

C3

路徑

a=1, b=1, c=1

T

T

T

 

a=-1, b=-1, c=0

F

F

F

 

  • 判定條件覆蓋

判定條件覆蓋是設計測試用例,使得判斷中每個條件的所有可能取值(真假)至少執行一次,同時每個判斷本身所有可能結果(真假)也至少執行一次。即同時滿足100%的判定覆蓋率和100%的條件覆蓋率。

缺點是忽略了條件的組合情況。

判定條件覆蓋率

例如:

  • 案例代碼中有判定2個,條件3個,判定結果4個,條件結果6個
  • 設計測試用例執行了3個判定結果,5個條件結果,判定條件覆蓋率是(3+5)/(4+6)

 

  • 條件組合覆蓋

條件組合覆蓋:設計測試用例使得被測程序中每個判定中條件結果的所有可能組合至少被執行一次。

條件組合覆蓋率:

例如:

  • 案例代碼中有判定2個,條件3個(判定1有2個條件,判定2有1個條件),判定1的條件組合爲4個,判定2的條件組合爲2個
  • 設計測試用例執行了5個條件組合,條件組合覆蓋率爲5/(4+2)

 

  • 路徑覆蓋

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

路徑覆蓋率:

例如:

  • 案例中共有4條路徑
  • 測試用例執行了3條路徑,路徑覆蓋率爲3/4.

路徑覆蓋的特點:

  1. 路徑覆蓋可以對程序進行徹底的測試,比前面五種覆蓋面廣
  2. 滿足路徑覆蓋,不一定能滿足條件覆蓋,也不能滿足條件組合覆蓋。
  3. 當程序複雜度增加,(判定條件多且可能存在循環)測試開銷太大,很難完實施全路徑覆蓋。

 

  • 基本路徑覆蓋

  • 基本路徑測試法

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

  • 步驟

  1. 根據代碼畫出程序控制流圖

2. 計算程序環路的複雜度

方法有三種:

  1. 控制流圖中區域的數量對應於環形的複雜度
  2. 定義控制流圖中的複雜度爲V(G), V(G), = E- N + 2, E是流圖中邊的數量,N是流圖中節點的數量,
  3. 定義控制流圖中的複雜度爲V(G), V(G), = P + 1,P是控制流圖中判定節點的數量。

住:程序環路的複雜度就是基本路徑的數量,

3. 導出可執行路徑

4. 設計測試用例

 

最後,實際應用中,對於白盒測試中,測試用例設計,主要是採用基本路徑覆蓋發,條件組合覆蓋法和判定條件覆蓋法來進行測試用例的設計。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章