"測試"
- 通過關卡不等於通過的是同一個程式
把驗證交給一組自動化關卡、並據此不再逐行讀產出時,用來判斷這組關卡實際固定住了什麼、放過了哪些維度
- 機械約束買到被量測的那個數字,代價落在沒被量測的維度
用函式長度、圈複雜度、覆蓋率門檻這類可自動檢查的品質約束時,用來判斷達成它換到了什麼、又付出了什麼
- flaky:時綠時紅的測試
flaky test 指同一份程式碼、同一個測試,不改任何東西卻時過時不過。它是測試的 false positive(該綠卻紅)裡特指「間歇、非確定性」的那種
- spurious failure:偽失敗
spurious failure 指測試或建置失敗了,但失敗的原因不是被測對象本身(環境、網路、暫態),屬測試的 false positive。與 flaky 的差別在強調「這次的因非真因」而非間歇
- 測試全過但有 Bug
從多廚房印表機功能開發經驗,歸納測試設計的三大陷阱與檢查清單,避免測試全過但線上有 Bug
- BDD 測試:測行為,不測實作細節
替換一個實作就要跟著改掉大批測試、而業務邏輯根本沒動時,用來判斷哪一層該用 Given-When-Then、Mock 的邊界畫在哪裡
- 混合測試策略:根據架構層級選擇測試方法
全面單元測試讓重構成本失控、而只測重點又說不出業務邏輯對不對時,用來按架構層決定每一層該用哪種測試