Test - Note

以下觀點不一定適用於各專案,請因地制宜。

在開始寫 code 之前

  • 測試文化: 底下的人願意寫,上面的人願意給時間。
  • 測試的順位: 從商業價值最高的功能開始。
  • 較低的測試價值
    • 需求尚未明朗又必須交付成果。
    • 取決於經營者對價值的認定,其實跟程式沒多大關係。
  • 不是所有的程式都可以測試,有時候為了測試,程式需要先重構成可以測試的樣子。

Unit Test

手動測試

  • 不穩定
  • 脆弱
  • 不方便

問題出在不可控

  • 希望是可控的
  • 可重現一樣結果

以整體專案的角度來看單元測試

專案內分為 不可控 與 可控 兩部分

  • 不可控: 檔案/資料庫/第三方套件
  • 可控: 除不可控以外自己所寫的部分

可控內分為 不可測 與 可測 兩部分

  • 不可測: 與不可控接觸的部分,因此會希望這部分越單純越好。
  • 可測: 為專案內價值較高,須小心維護的部分。

目標: 可測範圍盡量大,不可測盡量小。

UnitTest_Project_Controllability_Grading

單元測試相較於手動測試的優勢 ?

  • 可以輕鬆的跑完多個 Test Cases

Static 要不要測 ?

  • 直接使用真實行為
  • 透過測試框架強測
  • 重構/隔離/依賴注入

Ref