# Flaky Test 不穩定測試
# Flaky Test
不穩定測試是在相同 Test case 在不同執行中可能產生不同結果,時而 Pass 時而 Fail,這樣會降低測試的可靠性,所以我們應該針對不同問題方面進行強化
Flaky Test 不是測試方法,而是說明你的測試並不可靠,因此我們應該去了解是甚麼原由造成不可靠的測試,主要以三點來進行
- 思考原由
- 如何避免
- 哪些工具可以協助模擬適當環境
# 常見不穩定測試因素
- 環境變化 - 測試環境的配置與周遭設備是最容易去影響結果的要素之一
- Race Condition - 資源在測試過程中被搶奪造成的占用造成結果不同
- 測試順序依賴 - 有些測試是因為執行順序導致結果不同
- 外部資源 - 外部資源也有可能變化
- 隨機性 - 有些測試內容包含隨機元素,造成結果也很隨機
# 解決 Flaky Test 常用方法
- 放一些等待策略 - 等待 Async/Sync 操作
- 隔絕 Test Env - 可用 Test Container
- 避免 Race Condition - 應用不同 test data
- 隔絕外部依賴 - 用 mock 工具模擬
- 避免時間相關問題 - 建議用 mock 來模擬時間
- TestData 管理 - 使用固定 TestData 可控的資料
- 建立 Rerun 機制 - 讓失敗的 Test 自動 Rerun 確保自身是否存在問題
- 修復問題根本 - 可能是原始程式的問題
# 參考資料
- IThome - Day 29: 談談 Flaky Test