軟體測試 - 圈複雜度



軟體測試包含白盒黑盒測試技術。在白盒測試中,程式碼的內部結構得到驗證。圈複雜度是白盒測試下的一個概念,由 Thomas McCabe 開發。它是一個軟體度量標準,透過獲取決策點的總數來衡量程式的複雜度。

什麼是圈複雜度?

圈複雜度是透過繪製程式碼的控制流圖獲得的,它計算透過整個程式執行的線性無關路徑的總數。圈複雜度數值越高,更新和維護程式碼的風險越大,發現問題的機率越高,程式碼也越難理解。圈複雜度衡量程式碼的可讀性,以及程式中不同的線性無關路徑的總數,從而瞭解實現邏輯的複雜程度。

計算圈複雜度的公式

有三種計算圈複雜度的公式,如下所示:

公式 1

對於程式程式碼控制流圖 (G),圈複雜度表示為 V(G),等於 E - N + 2 * P,其中 E 等於邊的總數,N 等於節點的總數,P 等於圖中連線元件的總數。

公式 2

對於程式程式碼控制流圖 (G),圈複雜度表示為 V(G),等於 P + 1,其中 P 等於決策或條件節點的總數。決策或條件節點會導致在控制流圖中產生兩個分支。

公式 3

對於程式程式碼控制流圖 (G),圈複雜度表示為 V(G),等於 R + 1,其中 R 是控制流圖中閉合區域的總數。

示例

讓我們以以下程式碼塊為例,我們將使用上面討論的公式計算圈複雜度。

IF X = 300
   THEN IF Y > Z
   THEN X = Y
ELSE X = Z
   END IF
END IF
PRINT X

以上程式碼行的控制流圖如下所示:

cyclomatic complexity graph

在上面的控制流圖中,有七個節點 (N) 由藍色圓圈表示。請注意,程式碼中的總行數等於節點的總數。控制流圖中有八條邊 (E) 用紅色表示,並且由於只有一個方法,圖中連線元件 (P) 的總數為 1。因此,根據公式,

V(G) = E - N + 2 * P
 = 8 - 7 + 2 * 1 = 3

在上面的程式碼及其控制流圖中,有兩個條件語句,IF X = 300,然後 IF Y > Z,因此有兩個條件節點 (P),即 1 和 2,在控制流圖中用綠色表示。因此,根據公式,

V(G) = P + 1
 = 2 + 1 = 3

在上面的控制流圖中,有兩個閉合區域 (R),由兩個透明圓圈表示,即 1 和 2,在控制流圖中用橙色表示。因此,根據公式,

V(G) = R + 1
 = 2 + 1 = 3

因此,使用這三個公式,我們得到了相同的圈複雜度值 3。

圈複雜度的用途

圈複雜度的用途如下所示:

  • 檢測所有獨立路徑對於開發人員和測試人員都非常有幫助。
  • 它確認程式碼中的每條路徑至少驗證一次。
  • 它有助於檢測程式程式碼中未覆蓋的路徑。
  • 它有助於提高程式碼覆蓋率。
  • 它有助於識別潛在風險並降低風險。

圈複雜度的優點

圈複雜度的優點如下所示:

  • 它用作軟體開發程式碼的質量度量標準。
  • 它比 Halstead 度量標準更快。
  • 它有助於確定測試的工作量和關鍵區域。
  • 它指導測試過程。
  • 它易於應用。

圈複雜度的缺點

圈複雜度的缺點如下所示:

  • 它只關注軟體程式碼的複雜度,而不關注它處理的資料。
  • 巢狀程式程式碼的圈複雜度值不容易確定。
  • 對於簡單的比較和決策結構,圈複雜度可能產生錯誤的值。

結論

本教程對軟體測試麥卡比迴圈複雜度進行了全面概述。我們從描述什麼是迴圈複雜度開始,講解了計算迴圈複雜度的公式,並透過一個例子來獲取迴圈複雜度,此外還介紹了迴圈複雜度的用途、優勢和劣勢。這將為您提供軟體測試 - 麥卡比迴圈複雜度的深入知識。建議您持續練習所學內容,並探索與軟體測試相關的其他內容,以加深理解並拓寬視野。

廣告