cover

先講結論

寫 Test Case 最常見的錯誤不是格式問題,是只寫快樂路徑

快樂路徑大多數人都會手動試,真正有價值的測試是例外情境:輸入非法值時、第三方服務掛掉時、同時多人操作時、邊界值上下時。這些情境如果不在 Test Case 裡,就只能靠上線後才發現。


為什麼需要 Test Case

Test Case 解決三個問題:

  1. 溝通:QA 和開發對「這個功能正確」的定義達成共識
  2. 覆蓋率:確保測試涵蓋了正常、異常、邊界三種情境
  3. 回歸:下次修改時,有依據可以快速確認有沒有壞掉其他東西

命名規則

TC-[模組代碼]-[三位數編號]

TC-AUTH-001  → 認證模組第一個測試案例
TC-ORD-015   → 訂單模組第十五個測試案例
TC-INV-003   → 庫存模組第三個測試案例

模組代碼和 FRD 的 FR 命名一致,方便對照。


測試類型

類型定義範例
正向測試(Positive)正常輸入,預期成功正確帳密登入成功
負向測試(Negative)錯誤輸入或例外情境,預期失敗或出現正確錯誤訊息密碼錯誤顯示錯誤訊息
邊界測試(Boundary)邊界值,最大/最小/剛好超過密碼剛好 8 碼(最小值)可以登入

優先級

優先級說明
P1核心功能,每次上線前必測
P2重要功能,每個 Sprint 測
P3邊緣案例,定期測或有時間才測

Test Case 表格格式

欄位說明
編號TC-[模組]-[編號]
測試名稱一句話說明這個 Case 測什麼
類型Positive / Negative / Boundary
優先級P1 / P2 / P3
前置條件執行測試前的系統狀態
測試步驟步驟說明(人工測試)或 API 請求
測試資料具體輸入值
預期結果系統應該有什麼反應
實際結果實際執行後的結果(填寫時留空)
狀態⬜ 待測 / ✅ 通過 / ❌ 失敗 / ⏭️ 略過

範例一:會員登入模組

編號測試名稱類型優先級前置條件測試步驟測試資料預期結果實際結果狀態
TC-AUTH-001正常登入PositiveP1帳號已存在且已驗證1. 輸入正確 Email
2. 輸入正確密碼
3. 點擊登入
email: test@example.com
password: Test1234
登入成功,導向首頁,顯示歡迎訊息
TC-AUTH-002密碼錯誤NegativeP1帳號已存在1. 輸入正確 Email
2. 輸入錯誤密碼
3. 點擊登入
email: test@example.com
password: WrongPass
顯示「帳號或密碼錯誤」,停留登入頁
TC-AUTH-003Email 不存在NegativeP11. 輸入不存在的 Email
2. 輸入任意密碼
3. 點擊登入
email: notexist@example.com顯示「帳號或密碼錯誤」(不透露帳號是否存在)
TC-AUTH-004Email 格式錯誤NegativeP21. 輸入格式錯誤的 Email
2. 點擊登入
email: notanemail顯示「Email 格式不正確」,不送出請求
TC-AUTH-005連續錯誤 5 次鎖定NegativeP1帳號已存在1. 輸入正確 Email
2. 輸入錯誤密碼
3. 重複 5 次
email: test@example.com
password: Wrong × 5
第 5 次後顯示「已鎖定,請 30 分鐘後再試」
TC-AUTH-006帳號未驗證NegativeP2帳號已建立但未點驗證信1. 輸入未驗證帳號的 Email
2. 輸入正確密碼
3. 點擊登入
email: unverified@example.com顯示「Email 尚未驗證,是否重新發送驗證信?」
TC-AUTH-007空白欄位送出BoundaryP21. 不填任何欄位
2. 點擊登入
空白Email 和密碼欄位都顯示必填錯誤
TC-AUTH-008密碼最短 8 碼BoundaryP21. 輸入正確 Email
2. 輸入 8 碼密碼(最短值)
3. 點擊登入
password: Ab1cd234(剛好 8 碼)登入成功(如帳號存在)
TC-AUTH-009密碼 7 碼(低於最短)BoundaryP21. 輸入任意 Email
2. 輸入 7 碼密碼
password: Ab1cd23(7 碼)顯示「密碼最少 8 個字元」,不送出請求

範例二:訂單建立模組

編號測試名稱類型優先級前置條件測試步驟測試資料預期結果實際結果狀態
TC-ORD-001正常下單PositiveP1已登入、商品庫存充足1. 選擇商品加入購物車
2. 前往結帳
3. 確認訂單
商品ID: 1, 數量: 2訂單建立成功,收到確認信,庫存減少 2
TC-ORD-002庫存不足NegativeP1商品庫存為 11. 選擇商品
2. 設定數量為 5
3. 嘗試結帳
商品ID: 1, 數量: 5, 庫存: 1顯示「庫存不足」,無法建立訂單
TC-ORD-003未登入下單NegativeP1未登入1. 直接呼叫 POST /ordersBearer Token 空回傳 401 Unauthorized
TC-ORD-004數量為 0BoundaryP2已登入1. 傳入數量為 0 的訂單quantity: 0回傳 422,顯示「數量必須大於 0」
TC-ORD-005數量為 1(最小值)BoundaryP2已登入、庫存充足1. 傳入數量 1quantity: 1訂單建立成功
TC-ORD-006數量超過上限BoundaryP3已登入、庫存充足1. 傳入數量超過最大限制quantity: 1000回傳 422,顯示「單次最多購買 999 件」
TC-ORD-007購物車為空NegativeP1已登入、購物車無商品1. 點擊結帳空購物車結帳按鈕不可點擊(Grey out)

缺陷記錄格式

當 Test Case 失敗時,在此記錄:

缺陷ID對應測試嚴重程度重現步驟預期實際截圖狀態
BUG-001TC-AUTH-005High連續錯誤 5 次後繼續嘗試第 5 次後鎖定第 6 次才鎖定[連結]待修

嚴重程度:

等級說明
Critical核心功能完全無法使用,需立即修復
High重要功能異常,影響大多數使用者
Medium功能部分異常,有替代方案
Low小問題或 UI 問題,不影響使用

測試環境記錄

項目內容
測試環境Staging
測試版本v1.2.3
測試日期___
瀏覽器Chrome 124
測試帳號test@example.com
資料庫狀態已重置測試資料

現代替代方案:BDD Gherkin

Agile 環境中,Acceptance Criteria 常用 Gherkin 格式(Given-When-Then),可以直接串接自動化測試框架(Cucumber / Behave / Playwright BDD)。

Feature: 會員登入
 
  Scenario: 正常登入
    Given 帳號 test@example.com 已存在且已驗證
    When 使用者輸入正確的 Email 和密碼並點擊登入
    Then 系統導向首頁
    And 顯示歡迎訊息
 
  Scenario: 密碼錯誤
    Given 帳號 test@example.com 已存在
    When 使用者輸入正確 Email 但錯誤密碼
    Then 顯示「帳號或密碼錯誤」
    And 停留在登入頁
 
  Scenario: 連續錯誤 5 次鎖定
    Given 帳號 test@example.com 已存在
    When 使用者輸入錯誤密碼 5 次
    Then 顯示「已鎖定,請 30 分鐘後再試」
    And 後續嘗試無法登入直到 30 分鐘過後

Gherkin 的好處是格式本身就是文件,QA 寫的 Gherkin 可以直接變成自動化測試的 spec。


手動測試 vs 自動化測試決策

情境建議
核心業務流程(P1)手動 + 自動化
UI 細節、排版手動(視覺測試)
API 契約測試自動化(Postman / Pact)
大量邊界值輸入自動化(參數化測試)
第三方整合(金流、簡訊)手動(Sandbox 環境)
回歸測試自動化

相關文章