what's the 白盒測試


what's the 白盒測試

  白盒測試又稱結構測試、透明盒測試、邏輯驅動測試或基於代碼的測試。盒子指的是被測試的軟件,白盒指的是盒子是可視的,你清楚盒子內部的東西以及里面是如何運作的。白盒要考慮測試用例對程序內部的覆蓋程度,最好的白盒測試是能覆蓋到每一條路徑,但是由於路徑數目極大,要執行每一條路徑是不可能。但我們能做到就是讓覆蓋率變高一點,下面要介紹的六種覆蓋測試方法,看看他們的覆蓋程度。

六種白盒測試:(覆蓋率從低到高排序)

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

 

一、語句覆蓋

  “語句覆蓋”是一個比較弱的測試標准,它的含義是:在測試時,首先設計若干個測試用例,然后運行被測程序, 使程序中的每個可執行語句至少執行一次。這時所謂“若干個”,自然是越少越好。

用例設計:

 


  從本例可看出,語句覆蓋實際上是很弱的,程序中每個語句都得到執行這一點來看,語句覆蓋的方法似乎能夠比較全面地 檢驗每一個語句。但它也絕不是完美無缺的。假如這一程序段中兩個判斷的邏輯運算 有問題,如果第一個條件語句中的AND錯誤地編寫成OR,上面的測試用例是不能發現這個錯誤的;又如第三個條件語句中X>1誤寫成X>0,這個測試用例也不能暴露它,此外,沿着路徑abd執行時,X的值應該保持不變,以為每個語句都經歷過,似乎可以放心了。其實這種測試不十分可靠。語句覆蓋在測試被測程序中,除去對檢查不可執行語句有一定作用外,並沒有排除被測程序包含錯誤的風險。

  總之,一般認為“語句覆蓋”是很不充分的一種標准。
優點:可以很直觀地從源代碼得到測試用例,無須細分每條判定表達式。
缺點:由於這種測試方法僅僅針對程序邏輯中顯式存在的語句(即可執行語句),但對於隱藏的條件和可能到達的隱式邏輯分支,是無法測試的。

 

二、判定覆蓋

  比“語句覆蓋”稍強的覆蓋標准是“判定覆蓋”(或稱branch coverage分支覆蓋)標准。判定覆蓋准則進行測試是指,設計若干測試用例,運行被側程序,使得程序中每個判斷的取真分支和取假分支至少經歷一次,即判斷的真假值均曾被滿足。判定覆蓋又稱為分支覆蓋

優點:
  判定覆蓋比語句覆蓋要多幾乎一倍的測試路徑,當然也就具有比語句覆蓋更強的測試能力。同樣判定覆蓋也具有和語句覆蓋一樣的簡單性,無須細分每個判定就可以得到測試用例。
缺點:
  往往大部分的判定語句是由多個邏輯條件組合而成(如,判定語句中包含AND、OR、CASE),若僅僅判斷其整個最終結果,而忽略每個條件的取值情況,必然會遺漏部分測試路徑。

三、條件覆蓋

  設計用例時針對判斷語句里面每個條件表達式true 和 false各取值一次,不考判斷語句的計算結果

測試用例條件:
       A=T     A=F
       B=T     B=F

 

四、判定條件覆蓋(分支條件覆蓋)

  設計測試用例時,使得判斷語句中每個條件表達式的所有可能結果至少出現一次,每個判斷語句本身所有可能結果也至少出現一次。

測試用例條件:
       A ^ B = T    A ^ B = F
       A=T     A=F
       B=T     B=F

 

五、條件組合覆蓋

  設計測試用例時,使得每個判斷語句中條件結果的所有可能組合至少出現一次

測試用例條件:
       A= T    B= T
       A= T    B= F
       A= F    B= T
       A= F    B= F

 

 

六、路徑覆蓋

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

優點:這種覆蓋方法可以對程序進行徹底的測試用例覆蓋,比前面講的五種方法覆蓋度都要高。

缺點:於路徑覆蓋需要對所有可能的路徑進行測試(包括循環、條件組合、分支選擇等),那么需要設計大量、復雜的測試用例,使得工作量呈指數級增長。路徑覆蓋雖然是一種比較強的覆蓋,但未必考慮判斷語句中條件表達式結果的組合,並不能代替條件覆蓋和條件組合覆蓋。

 

 


參考:https://blog.csdn.net/write6/article/details/78702977

參考:https://blog.csdn.net/tsj11514oo/article/details/49161073

 

 

         

 

 

        


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM