開始學習
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)
測試驅動開發的編碼循環
- 編寫測試檔
- 根據測試檔的約束開發功能
- 重構(然後回到步驟一)