"Flaky"
- Flaky test 根因分類
計時依賴 / 環境差異 / 資源競爭 / 非確定性輸出 — 四類 flaky test 根因的辨識和處理策略
- Flaky test 團隊治理
flaky test 累積到讓團隊開始 skip 或 ignore 時,從個案修復升級到團隊層的治理策略:quarantine 政策、retry 預算、信任修復的可視化與行動閾值
- Fire-and-Forget Orchestration(射後不理編排)
呼叫後不等待完成的編排形態;產生「方法返回不等於流程完成」的時序落差,是 flaky test 的常見根因之一
- T.C8 fire-and-forget 編排讓測試單跑綠、合跑紅
結帳成功後的收尾動作(列印、狀態清理、資料同步)沒有被 await — 測試斷言與收尾動作賽跑,單獨執行時碰巧贏、整批執行時排程不同就輸;競態本身也揭露了產品的時序特性
- Quarantine(隔離)
把已知 flaky 的測試從主要執行路徑移開、保留修復壓力的治理機制;與 skip 的語意差異在於 quarantine 有負責人和回收期限
- Flaky Test
說明非決定性測試如何降低 CI gate 信任度與治理方式
- 紅燈在量什麼 — 測試訊號的三層失真:斷言、量測、環境
「全套件降至 0」有意義的前置條件是紅燈只反映程式缺陷。三層各自會失真:絕對計時斷言量的是機器負載、compact reporter 高並行下行覆寫產生假陰性、fresh checkout 缺 gitignored 生成產物讓整包結果不可信。含 flaky 判定的取樣門檻與對照實驗定歸因的做法。
- flaky:時綠時紅的測試
flaky test 指同一份程式碼、同一個測試,不改任何東西卻時過時不過。它是測試的 false positive(該綠卻紅)裡特指「間歇、非確定性」的那種
- Dart test 的跨檔案 GetX 狀態污染:flaky 真因不是 fail 訊息上的那個 test
`flutter test` 整套跑隨機 fail、單獨跑該 file 卻 100% 過。根因是 dart test runner 同 process 內 GetX state 跨 file 污染,fail 位置看 `+N -1` 累計而非訊息標示的 test。