軟體測試 - 控制流路徑



軟體測試可以分為兩種主要技術:白盒黑盒測試。在白盒測試中,程式碼內部會被驗證。控制流路徑是白盒測試下的一個概念。它以圖形方式表示軟體程式碼的流程,並顯示執行程式碼時可以遍歷的每條路徑。

什麼是控制流路徑?

控制流路徑測試是一種軟體程式碼的結構測試。測試人員需要了解程式碼結構、設計、實現邏輯、演算法才能進行控制流路徑測試。然而,它大多由開發人員自己完成,他們實際上已經實現了程式碼。這種方法測試了整個實現邏輯,以及軟體的各個模組是如何相互連線的。

控制流路徑測試的過程

控制流路徑測試的過程如下所示:

  • 建立控制流圖 - 從可用的程式碼片段中,手動或使用工具建立控制流圖。
  • 覆蓋目標 - 在控制流圖中,藉助節點、邊、路徑、分支等描述覆蓋目標。
  • 建立測試用例 - 建立涵蓋所有覆蓋目標的測試用例。
  • 執行測試用例 - 執行測試用例。
  • 分析測試結果 - 將測試用例執行的結果與預期結果進行比較,以確認軟體中是否存在錯誤。

什麼是控制流圖?

控制流圖被稱為程式程式碼完整流程的圖形表示。由於它描繪了程式碼的整個過程,因此主要用於靜態分析和編譯器軟體。

控制流圖的特徵

控制流圖的特徵如下所示:

  • 它由程式程式碼中遵循的完整過程驅動。
  • 它發現執行程式碼時可以覆蓋的每條路徑。
  • 它是一個完整的有向圖。
  • 它的邊描述了可以遍歷的路徑,而節點描述了基本塊。
  • 它有兩個部分,即入口塊,它指向控制流圖的入口點,以及出口塊,它指向控制流圖的出口點。

控制流圖的不同組成部分

控制流圖的不同組成部分如下所示:

If-then-else 塊

If-then-else Block

While 塊

While Block

Do While 塊

Do While Block

For 塊

For Block

示例

讓我們以以下程式碼塊為例,從中我們將繪製控制流圖。

IF I = 250
   THEN IF J > K
   THEN I = J
ELSE I = K
   END IF
END IF
PRINT I

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

control flow graph

控制流測試的目標

控制流測試的目標如下所示:

  • 它確保程式碼的所有路徑至少被遍歷一次。
  • 它確保程式碼的所有條件點至少被判斷為假和真一次。
  • 它確保透過至少執行程式碼中每個條件點一次來觸及條件的所有可能結果。
  • 它分析程式碼在各種用例中的執行方式,即零次、一次和多次迭代。
  • 它檢查程式碼中是如何進行異常處理的。
  • 它評估決策語句中的簡單和複雜條件。
  • 它降低了程式碼的圈複雜度。
  • 它驗證了軟體的不同元件在整合後如何相互通訊。
  • 它驗證了當將極端邊界值輸入到軟體中時,程式碼的反應。

控制流測試的優點

控制流測試的優點如下所示:

  • 它檢測在單元測試階段將被識別出的最大數量的錯誤。
  • 它也能夠檢測在整個測試周期中將被識別出的某些部分的錯誤。

  • 它支援手動和自動化兩種方法,因為控制流圖既可以透過手動建立,也可以藉助工具建立。

控制流測試的缺點

開發程式碼的開發人員在進行控制流測試時,並不總是能夠檢測到自己是否覆蓋了程式碼中的所有路徑。

結論

本教程全面介紹了軟體控制流路徑,到此結束。我們從描述什麼是控制流路徑、控制流路徑測試的過程是什麼、什麼是控制流圖、控制流圖的特徵是什麼、控制流圖的不同組成部分是什麼、控制流圖的示例是什麼、控制流測試的目標是什麼、控制流測試的優點是什麼以及控制流測試的缺點是什麼開始。這使您能夠深入瞭解軟體控制流路徑。明智的做法是不斷實踐您所學到的知識,並探索與軟體測試相關的其他內容,以加深您的理解並拓寬您的視野。

廣告