iT邦幫忙

2026 iThome 鐵人賽

DAY 3
1
Software Development

從脆弱腳本到可信任測試平台:自動化測試架構30天系列 第 3

Day 3|測試金字塔還適用嗎?從 Unit 到 E2E 的現代化測試分配策略

  • 分享至 

  • xImage
  •  

「測試金字塔不是教你背誦 70/20/10 的黃金比例,而是提醒你:別把所有的品質賭注都壓在最脆弱的那一層。」

嗨,我是 Jane。在上大學或剛入行時,我們幾乎都看過 Mike Cohn 提出的經典「測試金字塔(Testing Pyramid)」:底層是大量的單元測試(Unit Test),中間是服務/API 測試(Service/API Test),頂層是少量的 UI/End-to-End(E2E)測試。

理論很完美,但到了真實職場,你會發現很多團隊的現狀卻是:

  • 倒金字塔 / 冰淇淋甜筒(Ice Cream Cone):沒有單元測試,全是昂貴又慢的 UI E2E 腳本。
  • 沙漏型(Hourglass):有一堆單元測試和一堆 UI 測試,中間的 API 測試完全空白。
  • 反金字塔神話:有人鼓吹「現在硬體這麼快、Playwright/Cypress 這麼厲害,我們只要寫 E2E 就夠了!」

身為資深工程師,我們需要重新審視:在微服務、前端框架盛行且 CI/CD 要求極致速度的今天,測試金字塔到底還適不適用?


一、 拆解金字塔:每一層究竟要解決什麼問題?

很多團隊推不動測試金字塔,是因為搞錯了每一層的目的與責任邊界

         /\
        /  \       UI / E2E 測試  ──▶ 驗證「使用者真實流程與系統整合」
       /----\
      /      \     API / Service  ──▶ 驗證「商業邏輯、邊界條件與資料交換」
     /--------\
    /          \   Unit 測試       ──▶ 驗證「最小元件/演算法的正確性」
   --------------

1. 單元測試 (Unit Test)

  • 核心目的:驗證最小程式單元(函數、類別、元件)的邏輯與邊界算式。
  • 解決的問題:開發階段的快速回饋(回饋時間以毫秒計)。
  • 誰該負責開發工程師(Dev)。QA 應該協助定義邊界測試情境,而不是幫 Dev 寫 Unit Test。

2. API / 服務測試 (Service / Integration Test)

  • 核心目的:驗證模組間的資料流轉、商業邏輯、權限控管與資料庫互動。
  • 解決的問題:不透過脆弱的前端畫面,直接驗證系統最核心的商業價值。
  • 優勢:比 UI 測試快 10~50 倍,且幾乎不受前端 DOM 改版影響。

3. UI / End-to-End 測試 (E2E Test)

  • 核心目的:模擬真實使用者操作,確保核心商業關鍵路徑(Critical Path)通暢。
  • 解決的問題:驗證前後端整合、第三方套件串接以及真實瀏覽器環境。
  • 定位品質的最後一道防線,而不是唯一的防線。

4. 探索式測試 (Exploratory Testing)

  • 核心目的:利用人類的直覺、經驗與好奇心,尋找自動化腳本無法涵蓋的未知問題(Unknown Unknowns)。
  • 定位:自動化釋放出來的人力時間,就是為了投入到這裡。

二、 現代架構下的測試策略演進:金字塔變體

現代軟體開發架構(如微服務、前端 Component 化、Serverless)讓經典金字塔產生了不同演化:

1. 測試橄欖球 / 測試菱形 (Testing Diamond)

在現代 Web 開發中,前端元件(如 React/Vue)包含大量 UI 邏輯,而後端多為 API 服務。許多團隊發現:API 測試與整合測試(Integration Test)的投資報酬率最高

  • 底層 Unit:專注於複雜演算法、工具函式(Utils)。
  • 中層 Integration/API(腰部最粗):涵蓋大部分商業邏輯與 API 互動。
  • 頂層 E2E:僅保留 3 ~ 5 個最核心的主流程(如:註冊 > 搜尋 > 購物車 > 付款)。

2. 蜂巢模型 (Honeycomb)

微服務架構特別強調 Contract Test(契約測試)Integration Test,降低單一服務過度 Mock 的問題,確保服務與服務之間的介面溝通無誤。


三、 實戰檢視:你的團隊正處於哪種健康狀態?

請對照以下三種常見的「病態模型」,看看你的專案中了哪一個:
https://ithelp.ithome.com.tw/upload/images/20260813/20183500Kb4eWFPce2.png


四、 資深 QA 的心法總結:重意不重形

  1. 不要盲目追求固定比例

    不要跟團隊爭論「我們現在是 7:2:1 還是 6:3:1」。重點是問題發生的層級,應該在最底層且成本最低的地方被攔截。如果一個 Bug 可以用 API 測試發現,就絕不要寫成 UI 測試。

  2. 測試越往上走,維護成本呈指數級上升

    UI 測試的維護成本(元素定位改變、非同步等待、環境不穩定)遠高於 API 測試。把 80% 的商業邏輯測試移到 API 層,你的 CI 時間會縮短一半以上,維護腳本的痛苦度也會大幅下降。

  3. 釐清與開發團隊(Dev)的防線分工

    不要嘗試包攬所有層級的自動化。QA 的價值在於建立架構、規劃測試策略、把關 API/E2E 關鍵路徑,並促使 Dev 在開發階段就寫好單元測試與元件測試。


結語與明日預告

搞懂了測試金字塔與分層策略後,我們接下來要面對的是團隊對於自動化的認知誤區。很多 PM 或主管常問:「為什麼我們都有自動化了,上線還是有 Bug?」

明天 Day 4,我們將直面這些殘酷的現實:《 Day 4|自動化測試常見的錯誤期待:你是否也落入了這些陷阱?》


上一篇
Day 2|哪些測試值得自動化,哪些不值得?建立自動化候選項目的評分框架
下一篇
Day 4|自動化測試常見的錯誤期待:你是否也落入了這些陷阱?
系列文
從脆弱腳本到可信任測試平台:自動化測試架構30天7
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言