dramaling-vocab-learning/note/智能複習/智能複習系統-測試規格書.md

6.2 KiB
Raw Blame History

智能複習系統 - 測試規格書 (TSP)

目標讀者: QA工程師、測試人員 版本: 1.0 日期: 2025-09-25


🎯 測試範圍

測試目標

  • 驗證間隔計算算法正確性
  • 確保逾期處理邏輯合理
  • 驗證API輸入輸出正確性
  • 確保系統性能符合要求

不測試範圍

  • 前端UI/UX測試
  • 第三方服務整合測試

功能測試案例

TC-001: 基本間隔計算

測試案例 輸入 預期輸出 優先級
新詞答對 interval=1, isCorrect=true newInterval=2 P0
新詞答錯 interval=1, isCorrect=false newInterval=1 P0
短期答對 interval=5, isCorrect=true newInterval≈9 P0
長期答對 interval=100, isCorrect=true newInterval≈110 P1

TC-002: 信心等級測試

信心等級 預期係數 測試數據 狀態
1 (很不確定) 0.5 interval=10 → newInterval≈9
3 (一般) 0.9 interval=10 → newInterval≈16
5 (很確定) 1.4 interval=10 → newInterval≈25

TC-003: 逾期復習測試

Scenario: 輕度逾期復習 (時間基準驗證)
  Given 詞卡預定 2025-09-20 復習,原間隔7  When 用戶在 2025-09-23 復習 (逾期3天)
  And 用戶答對,信心等級4
  Then 逾期天數 = 3天,應該應用懲罰係數 0.9
  And 新間隔 = 7 × 1.8 × 1.1 × 0.9 = 12  And 下次復習日期 = 2025-09-23 + 12天 = 2025-10-05 (以復習當日為基準)

Scenario: 極度逾期復習
  Given 詞卡預定 2025-08-20 復習
  When 用戶在 2025-09-25 復習 (逾期36天)
  And 用戶答對
  Then 應該應用重度懲罰係數 0.3
  And 熟悉程度應該大幅衰減

TC-004: 時間基準專項測試

Scenario: 驗證時間基準計算正確性
  Given 詞卡預定 2025-09-20 復習,原間隔14  When 用戶在 2025-09-25 復習 (逾期5天)
  And 用戶答對,信心等級4
  Then 逾期天數計算 = 5  And 新間隔 = 14 × 1.4 × 1.1 × 0.75 = 16  And 下次復習日期 = 2025-09-25 + 16天 = 2025-10-11
  And 而非錯誤的 = 2025-09-20 + 16天 = 2025-10-06

Scenario: 準時復習基準測試
  Given 詞卡預定 2025-09-20 復習,原間隔14  When 用戶在 2025-09-20 準時復習
  And 用戶答對,信心等級4
  Then 逾期天數 = 0天,無懲罰係數
  And 新間隔 = 14 × 1.4 × 1.1 = 21  And 下次復習日期 = 2025-09-20 + 21天 = 2025-10-11

負向測試案例

輸入驗證測試

測試案例 輸入值 預期結果 錯誤代碼
信心等級過高 confidenceLevel=6 400錯誤 VALUE_OUT_OF_RANGE
信心等級過低 confidenceLevel=0 400錯誤 VALUE_OUT_OF_RANGE
缺少必填欄位 {} 400錯誤 MISSING_REQUIRED_FIELD
錯誤資料類型 isCorrect="yes" 400錯誤 INVALID_INPUT
不存在詞卡ID id=99999 404錯誤 FLASHCARD_NOT_FOUND

邊界條件測試

# 極值測試
- 間隔 = 0: 應設為最小值 1天
- 間隔 = 999: 應限制為最大值 365天
- timesCorrect > totalReviews: 應拋出異常
- totalReviews = 0: 熟悉程度應為 0%

併發測試

# 同一詞卡多客戶端同時更新
- 10個並發請求更新同一詞卡
- 驗證資料一致性,無競態條件
- 確保間隔計算結果正確

性能測試

響應時間測試

測試場景 目標 測試方法
單次復習記錄 < 100ms 100次請求平均值
複習列表查詢 < 500ms 查詢50個到期詞卡
批量數據更新 < 5s 1000個詞卡批量更新

併發測試

負載測試場景:
- 100 併發用戶持續5分鐘
- 1000 併發用戶持續1分鐘
- 驗證: 響應時間不超過目標2倍無錯誤

資源消耗測試

  • 記憶體: 監控記憶體洩漏,增長 < 10MB
  • CPU: 算法計算不應導致CPU過載
  • 資料庫連線: 連線池使用合理,無死鎖

🔧 測試環境設定

測試資料準備

-- 創建測試用詞卡數據
INSERT INTO Flashcards (Word, NextReviewDate, IntervalDays, TimesCorrect, TotalReviews)
VALUES
  ('test1', '2025-09-25', 1, 0, 0),      -- 新詞卡
  ('test2', '2025-09-20', 7, 3, 4),      -- 逾期詞卡
  ('test3', '2025-09-25', 30, 8, 10),    -- 正常詞卡
  ('test4', '2025-08-25', 90, 15, 15);   -- 極度逾期

測試工具

  • 單元測試: xUnit/NUnit
  • API測試: Postman/Newman
  • 負載測試: JMeter/k6
  • 資料庫測試: 直接SQL驗證

📋 測試檢查清單

功能測試 (必須100%通過)

  • 所有間隔計算測試案例
  • 信心等級映射正確
  • 逾期處理邏輯正確
  • 熟悉程度計算準確
  • API輸入驗證完整

非功能測試

  • 響應時間符合要求
  • 併發測試無錯誤
  • 記憶體使用穩定
  • 負向測試全部通過

整合測試

  • 與現有系統相容
  • 資料庫操作正確
  • 錯誤處理機制有效

🐛 缺陷分類

嚴重等級定義

  • P0 (Blocker): 算法計算錯誤、系統崩潰
  • P1 (Critical): 逾期處理錯誤、性能不達標
  • P2 (Major): 輸入驗證缺失、錯誤訊息不準確
  • P3 (Minor): 日誌格式、響應字段缺失

測試報告模板

缺陷標題: [模組] 簡短描述
重現步驟:
1. 準備測試數據
2. 發送API請求
3. 檢查響應結果
預期結果: XX
實際結果: XX
影響範圍: XX用戶功能

📊 測試完成標準

通過標準

  • 功能測試用例通過率 = 100%
  • 性能測試通過率 ≥ 95%
  • 負向測試覆蓋率 ≥ 90%
  • P0/P1缺陷數量 = 0

測試報告

  • 測試執行總結
  • 缺陷統計和分析
  • 性能測試結果
  • 風險評估和建議

測試負責人: [待指派] 測試週期: 1個工作日 發布建議: 所有P0/P1缺陷修復後可發布