測試案例範本(Test Case Template)#
參照標準:ISO/IEC/IEEE 29119-3:2021(取代 IEEE 829-2008)/ ISO/IEC/IEEE 29119-4:2021(Test Techniques)
文件用途:定義測試案例的標準格式,確保測試設計完整、可追溯、可重複執行
適用階段:測試設計與執行階段
📋 章節目錄#
- 文件資訊
- 測試案例識別規範
- 測試案例格式定義
- 測試案例撰寫規範
- 測試案例分類
- 測試案例清單範本
- 測試案例詳細格式
- 測試資料規劃
- 測試執行紀錄
- 缺陷報告格式
- 附錄
1. 文件資訊#
📝 範本#
| 項目 | 內容 |
|---|
| 文件編號 | TC-{專案代碼}-{模組}-{序號} |
| 文件名稱 | {系統名稱} {模組名稱} 測試案例 |
| 版本 | v{主版本}.{次版本} |
| 對應測試計畫 | {TP 文件編號} |
| 對應需求 | {FRD 文件編號} |
| 撰寫者 | {姓名} |
| 審核者 | {姓名} |
| 建立日期 | {YYYY-MM-DD} |
📖 使用說明#
- 測試案例文件承接測試計畫(Test Plan),為各測試項目設計具體的驗證步驟
- 每個功能模組可獨立一份測試案例文件,或匯整於單一文件中
- 文件需經 QA Lead 或測試經理審核後方可執行
💡 範例#
| 項目 | 內容 |
|---|
| 文件編號 | TC-HRM-LV-001 |
| 文件名稱 | HRMS 假勤管理模組 測試案例 |
| 對應測試計畫 | TP-HRM-001 |
| 對應需求 | FRD-HRM-001 v2.1 |
2. 測試案例識別規範#
📝 範本#
2.1 編號規則#
| 欄位 | 說明 | 範例 |
|---|
| TC | 固定前綴(Test Case) | TC |
| {專案} | 專案代碼(2-5 字元) | HRM |
| {模組} | 模組縮寫(2-5 字元) | LV(Leave) |
| {序號} | 三位數流水號 | 001 |
2.2 命名規範#
測試案例名稱格式:[測試類型] {功能描述} - {情境描述}
📖 使用說明#
- 編號需全域唯一,不可重複使用(即使案例被刪除)
- 命名需清楚表達測試目的,讓任何人看到名稱就能理解測什麼
- 測試類型標記:
[正向]、[負向]、[邊界]、[異常]
💡 範例#
| 測試案例 ID | 名稱 |
|---|
| TC-HRM-LV-001 | [正向] 員工提交特休假申請 - 假額充足 |
| TC-HRM-LV-002 | [負向] 員工提交特休假申請 - 假額不足 |
| TC-HRM-LV-003 | [邊界] 員工提交請假 - 跨月申請 |
| TC-HRM-LV-004 | [異常] 員工提交請假 - 起始日 > 結束日 |
3. 測試案例格式定義#
📝 範本#
每個測試案例包含以下欄位:
| 欄位 | 說明 | 必填 |
|---|
| 測試案例 ID | 唯一識別碼 | 是 |
| 測試案例名稱 | 描述性名稱 | 是 |
| 對應需求 ID | 追溯至 FRD 需求 | 是 |
| 測試類型 | 正向/負向/邊界/異常 | 是 |
| 優先級 | 高/中/低 | 是 |
| 前置條件 | 執行前必須滿足的條件 | 是 |
| 測試步驟 | 逐步操作指引 | 是 |
| 測試資料 | 執行所需的測試資料 | 視情況 |
| 預期結果 | 每步驟對應的預期系統行為 | 是 |
| 後置條件 | 執行後系統預期狀態 | 否 |
| 自動化狀態 | 手動/已自動化/待自動化 | 否 |
| 備註 | 特殊注意事項 | 否 |
📖 使用說明#
- 依據 ISO/IEC/IEEE 29119-3 Annex B「Test Case Specification」
- 前置條件必須具體可驗證(如「使用者已登入」而非「系統正常」)
- 測試步驟需足夠詳細,讓任何人都能依步驟重現
- 預期結果需與步驟一一對應,且可客觀判定通過/失敗
💡 範例#
見第 7 節「測試案例詳細格式」
4. 測試案例撰寫規範#
📝 範本#
4.1 撰寫原則#
| 原則 | 說明 |
|---|
| 獨立性 | 每個測試案例應可獨立執行,不依賴其他案例的執行結果 |
| 可重複性 | 同一案例在相同條件下重複執行,結果應一致 |
| 可追溯性 | 每個案例必須追溯至少一個功能需求 |
| 原子性 | 一個案例驗證一個功能點,避免過於複雜 |
| 明確性 | 步驟與預期結果不含模糊描述(如「正確顯示」應改為具體內容) |
4.2 撰寫步驟格式#
| 步驟格式 | 範例 |
|---|
| 操作動作 | 點擊、輸入、選擇、上傳 |
| 操作對象 | 按鈕名稱、欄位名稱、頁面名稱 |
| 操作內容 | 具體輸入值或選擇項 |
步驟描述格式:{動作} {對象} {內容}
4.3 預期結果格式#
| 格式 | 說明 |
|---|
| 畫面驗證 | 「頁面顯示 {具體內容/訊息}」 |
| 資料驗證 | 「資料庫 {表格} 新增一筆記錄,{欄位} = {值}」 |
| 狀態驗證 | 「{物件} 狀態變更為 {狀態}」 |
| 通知驗證 | 「{對象} 收到 {類型} 通知,內容包含 {關鍵字}」 |
📖 使用說明#
- 避免「驗證結果正確」此類模糊預期,應具體描述何謂「正確」
- 每個步驟只做一個動作,避免「輸入 A 並點擊 B 然後確認 C」
- 使用 Given-When-Then 思維:Given(前置條件)→ When(步驟)→ Then(預期結果)
💡 範例#
模糊寫法(不佳): 「填寫請假資料後送出,確認結果正確」
明確寫法(良好):
| 步驟 | 操作 | 預期結果 |
|---|
| 1 | 於「假別」下拉選單選擇「特休假」 | 下拉選單顯示「特休假」 |
| 2 | 於「起始日」欄位輸入 2026-06-01 | 日期欄位顯示 2026-06-01 |
| 3 | 於「結束日」欄位輸入 2026-06-03 | 頁面自動計算顯示「3 天」 |
| 4 | 於「事由」欄位輸入「家庭旅遊」 | — |
| 5 | 點擊「送出申請」按鈕 | 頁面顯示「申請已送出」成功訊息,狀態為「待審核」 |
5. 測試案例分類#
📝 範本#
5.1 依測試類型分類#
| 類型 | 代碼 | 說明 | 範例 |
|---|
| 正向測試 | POS | 驗證正常輸入與操作流程 | 正確格式的請假申請 |
| 負向測試 | NEG | 驗證錯誤輸入與異常處理 | 假額不足的請假申請 |
| 邊界值測試 | BND | 驗證邊界條件 | 請假天數 = 0、= 上限 |
| 異常測試 | EXC | 驗證異常情境處理 | 網路斷線、系統逾時 |
| 安全測試 | SEC | 驗證安全性 | 未授權存取、SQL Injection |
5.2 依測試優先級分類#
| 優先級 | 定義 | 執行時機 |
|---|
| P1(高) | 核心功能、Must have 需求 | 每輪必測 |
| P2(中) | 重要功能、Should have 需求 | 第一輪 + 迴歸 |
| P3(低) | 次要功能、Could have 需求 | 時間允許時測試 |
📖 使用說明#
- 正向:負向建議比例約 4:6(負向情境通常更多)
- 優先級由需求優先級與風險程度共同決定
- P1 案例應優先自動化,確保迴歸效率
💡 範例#
假勤模組測試案例分類統計:
| 類型 | P1 | P2 | P3 | 合計 |
|---|
| 正向 | 8 | 5 | 2 | 15 |
| 負向 | 6 | 8 | 2 | 16 |
| 邊界值 | 2 | 3 | 1 | 6 |
| 異常 | 2 | 2 | 0 | 4 |
| 安全 | 2 | 2 | 0 | 4 |
| 合計 | 20 | 20 | 5 | 45 |
6. 測試案例清單範本#
📝 範本#
模組:{模組名稱}#
| TC ID | 測試案例名稱 | 對應需求 | 類型 | 優先級 | 自動化 | 狀態 |
|---|
| TC-{xxx}-001 | [{類型}] {描述} | FR-{xxx} | POS/NEG/BND/EXC | P1/P2/P3 | 手動/自動 | 待執行/通過/失敗 |
| TC-{xxx}-002 | [{類型}] {描述} | FR-{xxx} | POS/NEG/BND/EXC | P1/P2/P3 | 手動/自動 | 待執行/通過/失敗 |
📖 使用說明#
- 測試案例清單提供全覽視角,方便進度追蹤
- 狀態欄位在測試執行期間更新
- 此表可作為測試進度 Dashboard 的資料來源
💡 範例#
模組:假勤管理(Leave Management)#
| TC ID | 測試案例名稱 | 對應需求 | 類型 | 優先級 | 自動化 | 狀態 |
|---|
| TC-HRM-LV-001 | [正向] 員工提交特休假申請 - 假額充足 | FR-LV-001 | POS | P1 | 自動 | 通過 |
| TC-HRM-LV-002 | [負向] 員工提交特休假申請 - 假額不足 | FR-LV-002 | NEG | P1 | 自動 | 通過 |
| TC-HRM-LV-003 | [正向] 主管審核假單 - 核准 | FR-LV-003 | POS | P1 | 自動 | 通過 |
| TC-HRM-LV-004 | [正向] 主管審核假單 - 駁回 | FR-LV-003 | POS | P1 | 手動 | 通過 |
| TC-HRM-LV-005 | [邊界] 請假天數 = 剩餘假額 | FR-LV-002 | BND | P2 | 手動 | 待執行 |
| TC-HRM-LV-006 | [異常] 提交申請時網路中斷 | FR-LV-001 | EXC | P2 | 手動 | 待執行 |
| TC-HRM-LV-007 | [負向] 請假起始日 > 結束日 | FR-LV-001 | NEG | P1 | 自動 | 通過 |
| TC-HRM-LV-008 | [正向] 請假後通知主管 | FR-LV-003 | POS | P1 | 自動 | 失敗 |
7. 測試案例詳細格式#
📝 範本#
測試案例:TC-{xxx}-{nnn}#
| 項目 | 內容 |
|---|
| 測試案例 ID | TC-{xxx}-{nnn} |
| 測試案例名稱 | [{類型}] {功能描述} - {情境描述} |
| 對應需求 | FR-{xxx}-{nnn} |
| 測試類型 | 正向 / 負向 / 邊界 / 異常 |
| 優先級 | P1 / P2 / P3 |
| 自動化狀態 | 手動 / 已自動化 / 待自動化 |
前置條件(Preconditions):
- {條件 1}
- {條件 2}
測試資料(Test Data):
測試步驟與預期結果:
| 步驟 | 操作描述 | 預期結果 | 實際結果 | Pass/Fail |
|---|
| 1 | {具體操作} | {預期系統回應} | {執行時填寫} | |
| 2 | {具體操作} | {預期系統回應} | {執行時填寫} | |
| 3 | {具體操作} | {預期系統回應} | {執行時填寫} | |
後置條件(Postconditions):
備註:
📖 使用說明#
- 前置條件:列出所有必須先完成的準備(登入、建立資料等)
- 測試資料:明確列出每個輸入欄位的測試值
- 「實際結果」與「Pass/Fail」:在測試執行時由執行者填寫
- 一個測試案例建議不超過 10 個步驟,過複雜應拆分
💡 範例#
測試案例:TC-HRM-LV-001#
| 項目 | 內容 |
|---|
| 測試案例 ID | TC-HRM-LV-001 |
| 測試案例名稱 | [正向] 員工提交特休假申請 - 假額充足 |
| 對應需求 | FR-LV-001, FR-LV-002 |
| 測試類型 | 正向 |
| 優先級 | P1 |
| 自動化狀態 | 已自動化 |
前置條件:
- 測試帳號
E20260001(王小明)已登入系統 - 該帳號特休假剩餘 10 天
- 測試日期為工作日
測試資料:
| 資料項 | 值 | 說明 |
|---|
| 假別 | 特休假 | 有充足假額 |
| 起始日 | 2026-06-01 | 週一 |
| 結束日 | 2026-06-03 | 週三 |
| 事由 | 家庭旅遊 | 20 字以內 |
| 代理人 | E20260015(李小華) | 同部門同事 |
測試步驟與預期結果:
| 步驟 | 操作描述 | 預期結果 | 實際結果 | Pass/Fail |
|---|
| 1 | 點擊左側選單「假勤管理」→「請假申請」 | 顯示請假申請表單頁面 | 同預期 | Pass |
| 2 | 於「假別」下拉選單選擇「特休假」 | 下方顯示「剩餘特休:10 天」 | 同預期 | Pass |
| 3 | 於「起始日」選擇 2026-06-01 | 日期欄顯示 2026/06/01 | 同預期 | Pass |
| 4 | 於「結束日」選擇 2026-06-03 | 自動計算顯示「共 3 天」 | 同預期 | Pass |
| 5 | 於「事由」輸入「家庭旅遊」 | 文字正常顯示 | 同預期 | Pass |
| 6 | 於「代理人」搜尋並選擇「E20260015 李小華」 | 顯示代理人資訊 | 同預期 | Pass |
| 7 | 點擊「送出申請」按鈕 | 顯示「請假申請已送出」成功訊息 | 同預期 | Pass |
| 8 | 至「我的申請」查看該筆申請 | 顯示假單,狀態為「待審核」 | 同預期 | Pass |
後置條件:
- 假勤紀錄中新增一筆申請,狀態 = 待審核
- 主管(E20260002)收到待審核通知
- 剩餘特休假額仍為 10 天(審核通過後才扣除)
測試案例:TC-HRM-LV-002#
| 項目 | 內容 |
|---|
| 測試案例 ID | TC-HRM-LV-002 |
| 測試案例名稱 | [負向] 員工提交特休假申請 - 假額不足 |
| 對應需求 | FR-LV-002 |
| 測試類型 | 負向 |
| 優先級 | P1 |
| 自動化狀態 | 已自動化 |
前置條件:
- 測試帳號
E20260003(張小剛)已登入系統 - 該帳號特休假剩餘 2 天
測試資料:
| 資料項 | 值 | 說明 |
|---|
| 假別 | 特休假 | 假額不足 |
| 起始日 | 2026-06-01 | — |
| 結束日 | 2026-06-05 | 共 5 天,超過剩餘 2 天 |
測試步驟與預期結果:
| 步驟 | 操作描述 | 預期結果 | 實際結果 | Pass/Fail |
|---|
| 1 | 點擊「假勤管理」→「請假申請」 | 顯示請假申請表單 | | |
| 2 | 選擇「特休假」,起始日 06-01,結束日 06-05 | 顯示「共 5 天」,剩餘特休:2 天 | | |
| 3 | 填寫事由後點擊「送出申請」 | 顯示錯誤訊息「特休假額不足,剩餘 2 天,申請 5 天」 | | |
| 4 | 確認申請未建立 | 「我的申請」中無該筆記錄 | | |
8. 測試資料規劃#
📝 範本#
8.1 測試帳號#
| 帳號 | 姓名 | 角色 | 部門 | 特殊設定 |
|---|
| {帳號} | {姓名} | {角色} | {部門} | {說明} |
8.2 基礎測試資料#
| 資料類型 | 描述 | 筆數 | 準備方式 |
|---|
| {類型} | {描述} | {數量} | Script / 手動 / 匯入 |
8.3 資料清理策略#
| 時機 | 策略 | 方式 |
|---|
| 每輪測試前 | {策略} | {SQL / Script / API} |
| 每日測試前 | {策略} | {SQL / Script / API} |
📖 使用說明#
- 測試帳號需涵蓋所有角色(Admin / Manager / Employee 等)
- 測試資料不可使用真實個資,需脫敏或虛構
- 資料清理確保每輪測試起始狀態一致,避免髒資料影響結果
💡 範例#
8.1 測試帳號#
| 帳號 | 姓名 | 角色 | 部門 | 特殊設定 |
|---|
| E20260001 | 王小明 | 一般員工 | 資訊部 | 特休 10 天 |
| E20260002 | 陳主管 | 部門主管 | 資訊部 | 王小明的直屬主管 |
| E20260003 | 張小剛 | 一般員工 | 人資部 | 特休 2 天(測試不足情境) |
| ADMIN001 | 系統管理員 | Admin | IT | 全功能權限 |
9. 測試執行紀錄#
📝 範本#
9.1 每日測試進度#
| 日期 | 計畫執行 | 實際執行 | 通過 | 失敗 | 阻塞 | 新增缺陷 |
|---|
| {日期} | {N} 案例 | {N} 案例 | {N} | {N} | {N} | {N} 件 |
9.2 測試進度彙整#
| 指標 | 數值 |
|---|
| 總測試案例 | {N} |
| 已執行 | {N}({%}) |
| 通過 | {N}({%}) |
| 失敗 | {N}({%}) |
| 阻塞 | {N}({%}) |
| 待執行 | {N}({%}) |
📖 使用說明#
- 每日更新測試進度,提供專案透明度
- 「阻塞」表示因環境或依賴問題無法執行
- 進度報告建議搭配圖表(如 Burndown Chart)呈現
💡 範例#
9.2 測試進度彙整#
| 指標 | 數值 |
|---|
| 總測試案例 | 135 |
| 已執行 | 98(72.6%) |
| 通過 | 89(90.8%) |
| 失敗 | 6(6.1%) |
| 阻塞 | 3(3.1%) |
| 待執行 | 37(27.4%) |
10. 缺陷報告格式#
📝 範本#
| 欄位 | 內容 |
|---|
| 缺陷 ID | BUG-{專案}-{序號} |
| 標題 | [{模組}] {缺陷簡述} |
| 嚴重度 | Critical / High / Medium / Low |
| 狀態 | New / Assigned / In Progress / Fixed / Verified / Closed / Reopened |
| 發現者 | {姓名} |
| 指派給 | {姓名} |
| 發現日期 | {YYYY-MM-DD} |
| 對應測試案例 | TC-{xxx}-{nnn} |
| 環境 | {測試環境版本} |
重現步驟:
- {步驟 1}
- {步驟 2}
- {步驟 3}
預期結果:{預期行為}
實際結果:{實際行為}
附件:{截圖 / 影片 / Log 檔案}
📖 使用說明#
- 缺陷報告需提供足夠資訊讓開發者重現問題
- 「重現步驟」需具體到開發者可依步驟 100% 重現
- 附件(截圖、Log)能大幅加速問題定位
- 嚴重度定義參考測試計畫附錄的缺陷嚴重度標準
💡 範例#
| 欄位 | 內容 |
|---|
| 缺陷 ID | BUG-HRM-042 |
| 標題 | [假勤管理] 請假申請送出後主管未收到通知 |
| 嚴重度 | High |
| 狀態 | Fixed |
| 發現者 | 王測試 |
| 指派給 | 吳開發 |
| 對應測試案例 | TC-HRM-LV-008 |
重現步驟:
- 以帳號 E20260001 登入
- 進入「請假申請」,填寫特休假 2026-06-10 ~ 2026-06-11
- 點擊「送出申請」
- 以主管帳號 E20260002 登入查看通知
預期結果:主管 E20260002 收到待審核通知(系統通知 + Email)
實際結果:系統通知未出現,Email 未收到。資料庫確認請假紀錄已建立。
附件:notification_error_log_20260918.txt
11. 附錄#
📝 範本#
11.1 測試覆蓋率矩陣#
| 需求 ID | 需求描述 | 正向 TC | 負向 TC | 邊界 TC | 合計 | 覆蓋狀態 |
|---|
| FR-{xxx}-001 | {描述} | {N} | {N} | {N} | {N} | 已覆蓋/部分/未覆蓋 |
11.2 測試環境版本記錄#
📖 使用說明#
- 測試覆蓋率矩陣確保每個需求都有對應的測試案例
- 「未覆蓋」的需求需評估是否因範圍排除或遺漏
💡 範例#
11.1 測試覆蓋率矩陣#
| 需求 ID | 需求描述 | 正向 TC | 負向 TC | 邊界 TC | 合計 | 覆蓋狀態 |
|---|
| FR-LV-001 | 線上請假申請 | 3 | 4 | 2 | 9 | 已覆蓋 |
| FR-LV-002 | 假額驗證 | 2 | 3 | 2 | 7 | 已覆蓋 |
| FR-LV-003 | 通知發送 | 2 | 1 | 0 | 3 | 已覆蓋 |
| FR-LV-004 | 代理人設定 | 1 | 1 | 0 | 2 | 部分覆蓋 |
📌 範本使用注意事項
- 本範本依據 ISO/IEC/IEEE 29119-3:2021 及 29119-4:2021 標準編製
- 可搭配測試管理工具(如 TestRail、Azure Test Plans、Xray)使用
- 測試案例設計完成後需經 QA Lead 審核(Peer Review)
- 自動化測試案例的腳本應與案例 ID 對應,便於追溯
- 搭配「測試計畫範本」使用,構成完整的測試文件體系