【軟件測試】圈復雜度


圈復雜度:在軟件測試的概念里,它用來衡量一個模塊判定結構的復雜程度,數量上表現為線性無關的路徑條數,即 合理的預防錯誤所需測試的最少路徑條數。

圈復雜度說明程序代碼可能質量低且難於測試和維護,根據經驗,程序的可能錯誤和高的圈復雜度有着很大關系。

圈復雜度的原理:(其實就是分支的個數

圈復雜度為1,意味着代碼只有一條路徑
對於有一條分支的代碼,它的圈復雜度為2。

  • 從1開始,一直往下經過程序。
  • 一旦遇到以下關鍵字,或者其它同類的詞,就 +1
    if、while、repeat、for、and、or
  • case語句中的每一種情況都 +1
圈復雜度 代碼狀況 可測性 維護成本
1-10 清晰、結構化
11-20 復雜
21-30 非常復雜
>30 不可讀 不可測 非常高

計算方法

程序的控制流圖

計算公式1:
\[V(G)=e-n+2p\]

式中:e表示控制流圖中邊的數量,n表示控制流圖中節點的數量,p表示圖的連接組件數目(圖的組件數是相連節點的最大集合)。
因為控制流圖都是連通的,所以p為1.

模塊的控制流圖

計算公式2:
\[V(G)=區域數=判定節點數+1\]

其實,圈復雜度的計算還有更直觀的方法,因為圈復雜度所反映的是“判定條件”(如 if、while等)的數量,所以圈復雜度實際上就是等於判定節點的數量再加上1,也即控制流圖的區域數。

注意:對於多分支的CASE結構或IF-ELSEIF-ELSE結構,統計判定節點的個數時需要特別注意一點,要求必須統計全部實際的判定節點數,也即每個ELSEIF語句,以及每個CASE語句,都應該算為一個判定節點。

復雜的控制流圖

計算公式3:
\[V(G)=R\]

式中:R代表平面被控制流圖划分成的區域數。


總結:

  • 針對程序的控制流圖時,最好還是采用第一個公式,即 V(G)=e-n+2
  • 針對模塊的控制流圖時,可以直接統計判定節點數,這樣更為簡單;
  • 針對復雜的控制流圖時,使用區域計算公式V(G)=R更為簡單。


免責聲明!

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



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