1. 程式人生 > >Linda的自動化測試之旅

Linda的自動化測試之旅

1 白盒測試概述

  • 白盒測試又稱透明盒測試、邏輯驅動測試;
  • 是測試被測單元內部如何工作的一種測試方法;
  • 根據程式內部邏輯結構及有關資訊來設計和選擇測試用例,對程式的邏輯結構進行測試;
  • 可覆蓋全部程式碼、分支、條件和路徑等;

2 白盒測試的目的

  • 保證程式中所有關鍵路徑的測試,防止由於沒有執行的路徑在實際投入執行後執行到發生意外的情況;
  • 衡量測試完整性;
  • 程式內部所有的邏輯值真、假兩個分支的覆蓋;
  • 檢查記憶體洩漏;
  • 異常處理的分支語句的執行;
  • 解決實驗條件下很難搭建真實測試環境的問題;
  • 檢查程式碼符合一定的編碼規範,減少由於編碼不規範而引入錯誤。

3 白盒測試用例設計方法

3.1邏輯覆蓋方法

3.1.1 語句覆蓋

基本思想是:設計若干測試用例,執行被測程式,使程式中每個可執行語句至少執行一次。
例:
這裡寫圖片描述 這裡寫圖片描述
在上述例子中:a=2,b=1,c=6;即達到了語句覆蓋。
優點:可以很直觀地從原始碼得到測試用例,無須細分每條判定表示式。
缺點:由於這種測試方法僅僅針對程式邏輯中顯式存在的語句,但對於隱藏的條件是無法測試的。例如在第一個判定((a>0)and(b>0))中把“and”錯誤的寫成了“or”,這時仍可使用該測試用例,語句覆蓋是最弱的邏輯覆蓋。

3.1.2 判定覆蓋

基本思想是:設計若干測試用例,執行被測程式,使得程式中每個判斷的取真分支和取假分支至少經歷一次,即判斷真假值均曾被滿足。
這裡寫圖片描述


那麼,根據判定覆蓋的思想,設計測試用例,如下所示:
a=2,b=1 ,c=6可覆蓋判斷M的Y分支和判斷Q的Y分支;
a= -2,b= -1 ,c= -3可覆蓋判斷M的N分支和判斷Q的N分支 。
這兩組測試用例可覆蓋所有判定的真假分支。
測試用例並不是唯一的,如下所示的兩組測試用例也可覆蓋所有判定的真假分支:
a=1,b=1 ,c= -3 可覆蓋判斷M的Y分支和判斷Q的N分支 ;
a=1,b= -2 ,c=3可覆蓋判斷M的N分支和判斷Q的Y分支 。
優點:判定覆蓋具有比語句覆蓋強的測試能力。同樣判定覆蓋也具有和語句覆蓋一樣的簡單性,無須細分每個判定就可以得到測試用例。
缺點
:往往大部分的判定語句是由多個邏輯條件組合而成,若僅僅判斷其整個最終結果,而忽略每個條件的取值情況,必然會遺漏部分測試路徑。判定覆蓋仍是弱的邏輯覆蓋。

3.1.3 條件覆蓋

在實際程式程式碼中,一個判定中通常都包含若干條件。 條件覆蓋的目的是設計若干測試用例,在執行被測程式後,要使每個判定中每個條件的可能值至少滿足一次。
這裡寫圖片描述
判斷M表示式:
設條件 a>0 取真 記為 T1
假 F1
條件 b>0 取真 記為 T2
假 F2
判斷Q表示式:
設條件 a>1 取真 記為 T3
假 F3
條件 c>1 取真 記為 T4
假 F4
測試用例:
這裡寫圖片描述
注意:我們用條件覆蓋設計的思想就是讓測試用例能覆蓋T1、T2、T3、T4、F1、F2、F3、F4。
優點:增加了對條件判定情況的測試,增加了測試路徑。
缺點:條件覆蓋不一定包含判定覆蓋。例如,我們剛才設計的用例就沒有覆蓋判斷M的Y分支和判斷Q的N分支。條件覆蓋只能保證每個條件可能取值至少執行一次,而不考慮所有的判定結果。

3.1.4判定-條件覆蓋

判定/條件覆蓋實際上是將判定覆蓋和條件覆蓋結合起來的一種方法。基本思想是:設計足夠的測試用例,使得判斷條件中的所有條件可能至少執行一次取值。同時,所有判斷的可能結果至少執行一次。
按照判定-條件覆蓋的要求,我們設計的測試用例要滿足如下條件:

  • 所有條件可能至少執行一次取值;
  • 所有判斷的可能結果至少執行一次;

這裡寫圖片描述
這裡寫圖片描述

判定-條件覆蓋總結:
優點 :能同時滿足判定、條件兩種覆蓋標準。
缺點:判定/條件覆蓋準則的缺點是未考慮條件的組合情況。

3.1.5 條件組合覆蓋

基本思想是:設計足夠的測試用例,使得所有可能的條件取值組合至少執行一次。
這裡寫圖片描述 這裡寫圖片描述 這裡寫圖片描述
條件組合覆蓋總結:
優點:條件組合覆蓋準則滿足判定覆蓋、條件覆蓋和判定/條件覆蓋準則。
缺點:線性地增加了測試用例的數量。

3.1.6 路徑覆蓋

基本思想是:設計所有的測試用例,來覆蓋程式中的所有可能的執行路徑 。
這裡寫圖片描述 這裡寫圖片描述
路徑覆蓋總結:
優點:這種測試方法可以對程式進行徹底的路徑測試,比前面五種的覆蓋面都廣。
缺點:需要設計大量、複雜的測試用例,使得工作量呈指數級增長,而且不見得把所有的條件組合都覆蓋。

3.2 基本路徑測試

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

3.2.1 基本路徑測試法的基本步驟

  1. 程式的控制流圖:描述程式控制流的一種圖示方法。
  2. 程式圈複雜度:McCabe,複雜性度量。從程式的環路複雜性可匯出程式基本路徑集合中的獨立路徑條數,這是確定程式中每個可執行語句至少執行一次所必須的測試用例數目的上界。
  3. 匯出測試用例:根據圈複雜度和程式結構設計用例資料輸入和預期結果。
  4. 準備測試用例:確保基本路徑集中的每一條路徑的執行。

3.2.2 基本路徑測試法的工具方法

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

4 白盒測試總結

以上就是基本的白盒測試基礎概念知識,總結整理,方便日後複習。