分類測試

用測試執行時間可以很容易區分出哪些是 unit test 哪些是 integration test,速度快是 unit test。除此之外,也可以依照測試執行時是否 depend on external resource 來區分,例如 db、cache、third party library or API。

區分出 unit test 跟 integration test 後,把它們分開放。讓 unit test 形成一個綠色安全區域──如果這裡的 test failed,就是 code 有問題而非環境或者設定等等造成的 false alarm。

developer 應該要對綠色安全區域有信任感,建立信任感的方式是「fail 就是真的 code 有問題而非 false alarm」。一旦開發人員對 test 失去信任,可能變得不想執行或者 fail 時認為「fail 是正常的」而忽略它。

integration test 除了執行比較慢之外,還可能受到 external dependency 影響而結果不穩定,所以在面對 integration test 的時候,就要考慮有可能是 external dependency 造成 fail。

在自動化流程裡,unit test 應該要每次 check in code 都執行,integration test 則是至少在 daily build 要執行。