跳至主要内容

開始學習

What Is Testing?

比較手動測試與自動測試

Manual Testing

  • 繁瑣費力
  • 容易疏失
  • 不易確保測試覆蓋率
  • 初期不需投入編碼成本,後期浪費心力。

Automated Testing

  • 初期投入編碼成本,後期節省心力。
  • 結果可預期、可持續利用
  • 可確保測試覆蓋率

Unit Testing: What & Why?

Unit 通常指代碼中的函式或類別,有時也可能指前端元件,幾乎是代碼中最小的組成單位。 App 由多個 Unit 組成,因此理想情況下,若所有單元都通過測試,App 也就不會有 Bug。

提示

單元測試的下個階段是整合測試(integration tests)

每當專案增加或變更功能,就該執行所有測試檔,以利確認新版代碼是否導致既有功能失常。
測試檔也可引導開發者重視代碼品質,促進 clean code。

Unit vs Integration vs E2E Tests

以下三種測試各有其專注點,行有餘力時應該全面導入專案。

  • Unit Testing
    每個單元獨立測試,不在乎單元之間是否有衝突。
    聚焦於最小單位,見樹不見林。
  • Integration Testing
    組合各單元並加以測試,可檢查單元之間是否有衝突,
    但測試也因此更複雜,發生錯誤時不若單元測試時容易鎖定癥結點。
  • End-to-End (E2E) Testing 聚焦於使用者行為、整體流程、應用程式功能 此階段的測試複雜度最高,發生錯誤時更難鎖定癥結點。 另外,使用者行為可能千變萬化,即使精心規劃測試也很難保證完美。

A Quick Note About Test-Driven Development (TDD)

測試驅動開發的編碼循環

  1. 編寫測試檔
  2. 根據測試檔的約束開發功能
  3. 重構(然後回到步驟一)