語句覆蓋、判定覆蓋、條件覆蓋 - 白盒筆試題解析


1. 定義

黑盒測試 - 不關注內部結構的測試/基於輸入輸出的測試

白盒測試 - 基於內部結構的測試

白盒測試的關鍵覆蓋度

 

2. 白盒相關概念

  • 語句覆蓋 - 設計一套測試 讓被測對象中所有語句得到測試覆蓋

  • 判定覆蓋 - 設計一套測試 讓被測對象中所有判定得到測試覆蓋

  • 條件覆蓋 - 設計一套測試 讓被測對象中所有條件得到測試覆蓋

  • 路徑覆蓋 - 設計一套測試 讓被測對象中所有路徑得到測試覆蓋

 

 

上圖中:

 

 

3. 例題解析

例題1:

 

解:

語句覆蓋:

  • 語句:以上代碼中的每一行都是語句。
  • 注意THEN后面所接語句,是有可能不執行的。
  • 語句覆蓋即要設計出測試數據,使得所有語句都被執行。
  • 要滿足以上條件,只要讓兩個IF判定判定為”真“即可。

答:

 

分支覆蓋:

  • 分支覆蓋是判定覆蓋的別名。因為判定可以在程序中創造分支,就像一條分叉路口,讓程序的執行走向不同方向
  • 他的取值為布爾類型,只有兩個可能取值:”True“ 和 ”False“(真和假)。
  • 判定覆蓋,即讓所有的判定都取到所有可能取值,即每個判定都取到”真“、”假“各一次
  • 本題中有兩個判定,即”IF“語句,則要取測試數據,讓兩個IF都取到真假最少各一次。

答:

 

 

例題2:

 

  解:

  • 題中while循環語句構成了本題代碼的路徑分支
  • 判定解讀:當變量i不大於25時,做一件事;當i大於25時,做另一件事。這個判定就是”i是否大於25“.
  • 效力最高的滿足判定覆蓋,即在最小的循環執行次數條件下,使判定取到”真“、”假“各一次
  • 取 i = 25的話,第一次循環,while判定為,循環內部邏輯執行1次。執行1次之后i ++, i的值變為26,while判定為,循環跳出。

 

答:

 

例題3:

 

 

 

解:

  • 題中的三個if和一個else組成了所有判定
  • 要滿足判定覆蓋,需要讓所有判定取到”真“、”假“各一次
  • 直觀的想法,取四個值: n = 0 , n = 1, n =2 , n = -1就可以讓所有判定都被覆蓋到真假所有可能。
  • 但是注意第三個判定后的return語句,返回調用了函數本身。
  • 此即所謂的“遞歸” ,代入n = 2這樣的數據進入這個函數進行運算,return語句演變成以下形式:return fib(1) + fib(0) + fib(-1),相當於取n=1,0,-1各一次

答:

 

 

4. 練習題

最后留幾個練習題可以自己嘗試解答,歡迎留言寫下答案:

1:

 

 

2:

 

 

 

 

 


免責聲明!

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



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