軟體測試 - 圈複雜度
軟體測試包含白盒和黑盒測試技術。在白盒測試中,程式碼的內部結構得到驗證。圈複雜度是白盒測試下的一個概念,由 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
以上程式碼行的控制流圖如下所示:

在上面的控制流圖中,有七個節點 (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 度量標準更快。
- 它有助於確定測試的工作量和關鍵區域。
- 它指導測試過程。
- 它易於應用。
圈複雜度的缺點
圈複雜度的缺點如下所示:
- 它只關注軟體程式碼的複雜度,而不關注它處理的資料。
- 巢狀程式程式碼的圈複雜度值不容易確定。
- 對於簡單的比較和決策結構,圈複雜度可能產生錯誤的值。
結論
本教程對軟體測試麥卡比迴圈複雜度進行了全面概述。我們從描述什麼是迴圈複雜度開始,講解了計算迴圈複雜度的公式,並透過一個例子來獲取迴圈複雜度,此外還介紹了迴圈複雜度的用途、優勢和劣勢。這將為您提供軟體測試 - 麥卡比迴圈複雜度的深入知識。建議您持續練習所學內容,並探索與軟體測試相關的其他內容,以加深理解並拓寬視野。