「測試金字塔不是教你背誦 70/20/10 的黃金比例,而是提醒你:別把所有的品質賭注都壓在最脆弱的那一層。」
嗨,我是 Jane。在上大學或剛入行時,我們幾乎都看過 Mike Cohn 提出的經典「測試金字塔(Testing Pyramid)」:底層是大量的單元測試(Unit Test),中間是服務/API 測試(Service/API Test),頂層是少量的 UI/End-to-End(E2E)測試。
理論很完美,但到了真實職場,你會發現很多團隊的現狀卻是:
身為資深工程師,我們需要重新審視:在微服務、前端框架盛行且 CI/CD 要求極致速度的今天,測試金字塔到底還適不適用?
很多團隊推不動測試金字塔,是因為搞錯了每一層的目的與責任邊界:
/\
/ \ UI / E2E 測試 ──▶ 驗證「使用者真實流程與系統整合」
/----\
/ \ API / Service ──▶ 驗證「商業邏輯、邊界條件與資料交換」
/--------\
/ \ Unit 測試 ──▶ 驗證「最小元件/演算法的正確性」
--------------
現代軟體開發架構(如微服務、前端 Component 化、Serverless)讓經典金字塔產生了不同演化:
在現代 Web 開發中,前端元件(如 React/Vue)包含大量 UI 邏輯,而後端多為 API 服務。許多團隊發現:API 測試與整合測試(Integration Test)的投資報酬率最高。
微服務架構特別強調 Contract Test(契約測試) 與 Integration Test,降低單一服務過度 Mock 的問題,確保服務與服務之間的介面溝通無誤。
請對照以下三種常見的「病態模型」,看看你的專案中了哪一個:
不要盲目追求固定比例
不要跟團隊爭論「我們現在是 7:2:1 還是 6:3:1」。重點是問題發生的層級,應該在最底層且成本最低的地方被攔截。如果一個 Bug 可以用 API 測試發現,就絕不要寫成 UI 測試。
測試越往上走,維護成本呈指數級上升
UI 測試的維護成本(元素定位改變、非同步等待、環境不穩定)遠高於 API 測試。把 80% 的商業邏輯測試移到 API 層,你的 CI 時間會縮短一半以上,維護腳本的痛苦度也會大幅下降。
釐清與開發團隊(Dev)的防線分工
不要嘗試包攬所有層級的自動化。QA 的價值在於建立架構、規劃測試策略、把關 API/E2E 關鍵路徑,並促使 Dev 在開發階段就寫好單元測試與元件測試。
搞懂了測試金字塔與分層策略後,我們接下來要面對的是團隊對於自動化的認知誤區。很多 PM 或主管常問:「為什麼我們都有自動化了,上線還是有 Bug?」
明天 Day 4,我們將直面這些殘酷的現實:《 Day 4|自動化測試常見的錯誤期待:你是否也落入了這些陷阱?》。