在軟體測試的世界裡,有兩種技巧常常被拿來比較,但很多人容易混淆:Equivalence Class Testing(等價類別測試)和 Use Case Testing(使用案例測試)。本文會透過案例,把兩者的差異、各自的強項,以及如何在 Specification by Example 裡結合運用,清楚地說明給你聽。
• Equivalence Class Testing:專注於「輸入值的邏輯分類」,用來涵蓋所有重要類型與邊界情況,避免重複、補足遺漏。
• Use Case Testing:專注於「使用者行為流程」,用來釐清情境分支與業務邏輯的行為結果。
A. Equivalence Class Testing
擅長找出:
範例:針對年齡折扣設計:
• 年齡 7 → 小學 → 4 折
• 年齡 15 → 高中 → 7 折
• 年齡 18 → 大專 → 7 折
• 年齡 5、23 → 不適用 → 原價
這些就是典型的「行為相同輸入值」歸為同一等價類的做法。
B. Use Case Testing
擅長找出:
範例:一個校外教學訂票流程
• 成功下單
• 人數不夠 → 被拒
• 混齡 → 折扣處理不一致
• 搭非指定車次 → 無折扣 → 使用者放棄訂票
這些是典型的「流程分支與行為反應不同」的範例。
• Use Case Testing 像是一面全景鏡子,幫你看清楚「使用者從進入到離開」的路線與分叉點。
• Equivalence Class Testing 像是一組濾光鏡,幫你判斷每一個欄位「這些輸入值算不算同一類」。
在設計好的驗收條件與範例時,如果你兩者都用上,才不會只寫「看起來有例子」,但實際上有一堆分支、條件沒被考慮進去。
針對 哪些範例容易設計、哪些不容易,用具體例子說明差異。
A. Equivalence Class Testing:
這種方法著重「相同行為的輸入類型」,因此適合用來:找出折扣邏輯的分類條件。
(a) 容易設計的範例(代表性的等價類):
這類輸入條件穩定、有明確邊界,非常適合用等價類方式劃分、測試代表值與邊界值。
(b) 不容易處理的範例(流程性問題或多角色互動):
B. Use Case Testing 擅長呈現的範例:
這種方法著重「使用者流程分支與行為差異」,因此適合針對:
(a) 容易設計的範例(流程邏輯與例外行為):
這些範例與條件不容易單靠「欄位值」推導,需要從使用者角度模擬整個互動流程與條件結果,非常適合用 Use Case Testing。
(b) 不容易處理的範例(單純資料分類問題):