dramaling-vocab-learning/note/LEARNING_SYSTEM_TEST_CASES.md

19 KiB

DramaLing 學習系統測試案例規格書

完整測試案例與驗收標準


📋 文件資訊

版本: 1.0 建立日期: 2025-09-19 最後更新: 2025-09-19 負責人: DramaLing 測試團隊


🎯 測試目標與範圍

測試目標

  1. 功能完整性 - 驗證所有學習模式正常運作
  2. 語音功能 - 確保 TTS 和語音辨識功能穩定
  3. 用戶體驗 - 驗證學習流程順暢無誤
  4. 效能表現 - 確保系統回應時間符合要求
  5. 錯誤處理 - 驗證異常情況處理機制

測試範圍

  • 五種學習模式 (翻卡、選擇題、填空、聽力、口說)
  • 語音播放與錄製功能
  • 學習進度與評分系統
  • 錯誤回報機制
  • 前後端 API 整合

🧪 前端學習功能測試案例

TC-001: 翻卡模式測試

TC-001-01: 基本翻卡功能

  • 描述: 驗證翻卡模式的基本互動功能
  • 前置條件:
    • 用戶已登入
    • 存在可學習的詞卡
  • 測試步驟:
    1. 進入學習頁面
    2. 選擇「翻卡模式」
    3. 點擊詞卡翻轉
    4. 查看詞卡背面內容
    5. 進行難度評分 (1-5分)
  • 預期結果:
    • 詞卡正面顯示單詞、詞性、音標
    • 點擊後smooth翻轉到背面
    • 背面顯示翻譯、定義、例句、同義詞
    • 難度評分按鈕可正常點擊
    • 評分後自動跳轉下一題
  • 驗收標準:
    • 翻轉動畫流暢 (< 0.6秒)
    • 所有內容正確顯示
    • 評分系統正常運作

TC-001-02: 翻卡模式語音播放

  • 描述: 驗證翻卡模式中的語音功能
  • 測試步驟:
    1. 在翻卡模式中
    2. 點擊單詞發音按鈕
    3. 翻轉到背面
    4. 點擊例句發音按鈕
    5. 切換美式/英式發音
    6. 調整播放速度
  • 預期結果:
    • 單詞發音清晰播放
    • 例句發音完整播放
    • 口音切換生效
    • 速度調整正常 (0.5x-2.0x)

TC-002: 選擇題模式測試

TC-002-01: 選擇題基本功能

  • 描述: 驗證選擇題模式的答題流程
  • 測試步驟:
    1. 選擇「選擇題模式」
    2. 閱讀英文定義
    3. 播放定義語音
    4. 選擇中文翻譯選項
    5. 查看結果反饋
  • 預期結果:
    • 定義文字清晰顯示
    • 語音播放正常
    • 四個選項隨機排列
    • 正確答案有綠色標記
    • 錯誤答案有紅色標記
    • 自動更新分數

TC-002-02: 選擇題評分機制

  • 描述: 驗證選擇題的評分計算
  • 測試數據:
    • 總題數: 3題
    • 正確答案: 2題
    • 錯誤答案: 1題
  • 預期結果:
    • 即時分數顯示: 2/3 (67%)
    • 進度條正確更新
    • 最終完成畫面顯示正確統計

TC-003: 填空題模式測試

TC-003-01: 填空題基本功能

  • 描述: 驗證填空題的答題體驗
  • 測試步驟:
    1. 選擇「填空題模式」
    2. 查看例句圖片 (如有)
    3. 閱讀挖空的例句
    4. 點擊提示按鈕
    5. 輸入答案
    6. 按 Enter 或點擊提交
  • 預期結果:
    • 例句正確顯示空格
    • 提示按鈕顯示定義
    • 輸入框接受文字輸入
    • Enter 鍵可提交答案
    • 正確/錯誤結果清楚顯示

TC-003-02: 填空題大小寫不敏感

  • 描述: 驗證答案檢查的大小寫處理
  • 測試數據:
    • 正確答案: "brought"
    • 用戶輸入: "BROUGHT", "Brought", "brought"
  • 預期結果:
    • 所有大小寫變化都被判定為正確
    • 分數正確計算

TC-004: 聽力測試模式

TC-004-01: 聽力測試基本功能

  • 描述: 驗證聽力測試的完整流程
  • 測試步驟:
    1. 選擇「聽力測試模式」
    2. 點擊播放音頻
    3. 重複播放 (如需要)
    4. 在四個選項中選擇
    5. 查看結果
  • 預期結果:
    • 音頻清晰播放目標單詞
    • 可重複播放音頻
    • 四個選項包含一個正確答案
    • 選擇後立即顯示結果

TC-004-02: 聽力音頻品質測試

  • 描述: 驗證音頻播放品質
  • 測試條件:
    • 不同網路環境 (快/慢)
    • 不同瀏覽器
    • 不同裝置
  • 預期結果:
    • 音頻載入時間 < 3秒
    • 播放無雜音或中斷
    • 音量適中清晰

TC-005: 口說練習模式

TC-005-01: 語音錄製功能

  • 描述: 驗證語音錄製的完整流程
  • 前置條件: 瀏覽器已授權麥克風權限
  • 測試步驟:
    1. 選擇「口說練習模式」
    2. 查看目標例句
    3. 播放示範發音
    4. 點擊開始錄音
    5. 朗讀例句 (最多30秒)
    6. 停止錄音
    7. 播放自己的錄音
    8. 提交評估
    9. 查看評分結果
  • 預期結果:
    • 麥克風權限正常請求
    • 錄音按鈕視覺反饋清楚
    • 錄音時間顯示準確
    • 錄音檔可正常播放
    • 評估結果在5秒內返回
    • 顯示多維度評分 (準確度、流暢度、完整度、音調)

TC-005-02: 發音評分測試

  • 描述: 驗證語音評分系統的準確性
  • 測試數據:
    • 標準發音錄音
    • 帶口音的錄音
    • 不完整的錄音
    • 背景噪音錄音
  • 預期結果:
    • 標準發音獲得高分 (85+)
    • 帶口音錄音獲得中等分數 (70-85)
    • 不完整錄音獲得低分 (< 70)
    • 提供具體改進建議

🎵 語音功能測試案例

TC-101: TTS 語音播放測試

TC-101-01: 基本 TTS 功能

  • 描述: 驗證文字轉語音的基本功能
  • 測試數據:
    • 單詞: "hello", "beautiful", "pronunciation"
    • 句子: "This is a test sentence."
    • 特殊字元: "don't", "it's", "U.S.A."
  • 測試步驟:
    1. 播放不同長度的文字
    2. 測試美式發音
    3. 測試英式發音
    4. 調整播放速度
  • 預期結果:
    • 所有文字正確發音
    • 口音切換明顯差異
    • 速度調整範圍 0.5x-2.0x
    • 特殊字元正確處理

TC-101-02: TTS 快取機制

  • 描述: 驗證音頻快取功能
  • 測試步驟:
    1. 首次播放特定文字 (記錄載入時間)
    2. 再次播放相同文字 (記錄載入時間)
    3. 檢查網路請求
  • 預期結果:
    • 首次載入 < 3秒
    • 快取命中 < 500ms
    • 第二次播放無網路請求

TC-101-03: TTS 錯誤處理

  • 描述: 驗證 TTS 異常情況處理
  • 測試條件:
    • 網路中斷
    • API 限制
    • 無效文字輸入
  • 預期結果:
    • 顯示友善錯誤訊息
    • 提供重試選項
    • 不影響其他功能

TC-102: 語音錄製與評估

TC-102-01: 瀏覽器相容性測試

  • 描述: 測試不同瀏覽器的錄音功能
  • 測試環境:
    • Chrome 90+
    • Safari 14+
    • Firefox 88+
    • Edge 90+
  • 測試步驟:
    1. 請求麥克風權限
    2. 開始錄音
    3. 錄製 10 秒音頻
    4. 停止並播放
  • 預期結果:
    • 所有瀏覽器正常錄音
    • 音頻格式相容
    • 權限請求流程一致

TC-102-02: 錄音品質測試

  • 描述: 驗證錄音音頻品質
  • 測試條件:
    • 不同麥克風裝置
    • 不同環境噪音等級
    • 不同音量大小
  • 預期結果:
    • 清晰度足夠進行評估
    • 背景噪音過濾
    • 音量正規化處理

🔧 後端 API 測試案例

TC-201: TTS API 測試

TC-201-01: TTS 生成 API

  • 端點: POST /api/audio/tts
  • 描述: 測試音頻生成 API
  • 測試案例:
// 測試案例 1: 正常請求
{
  "text": "Hello world",
  "accent": "us",
  "speed": 1.0,
  "voice": "aria"
}
// 預期: 200 OK, 返回音頻 URL

// 測試案例 2: 長文字
{
  "text": "This is a very long sentence to test the TTS system...",
  "accent": "uk",
  "speed": 0.8
}
// 預期: 200 OK, 音頻時長正確

// 測試案例 3: 無效請求
{
  "text": "",
  "accent": "invalid"
}
// 預期: 400 Bad Request

// 測試案例 4: 超長文字
{
  "text": "A".repeat(2000)
}
// 預期: 400 Bad Request, 超過長度限制

TC-201-02: TTS 快取 API

  • 端點: GET /api/audio/tts/cache/{hash}
  • 描述: 測試音頻快取檢索
  • 測試步驟:
    1. 生成音頻並獲得 hash
    2. 使用 hash 查詢快取
    3. 查詢不存在的 hash
  • 預期結果:
    • 有效 hash 返回快取音頻
    • 無效 hash 返回 404

TC-202: 語音評估 API 測試

TC-202-01: 發音評估 API

  • 端點: POST /api/audio/pronunciation/evaluate
  • 描述: 測試語音評估功能
  • 測試案例:
// 測試案例 1: 正常評估
POST /api/audio/pronunciation/evaluate
Content-Type: multipart/form-data

audioFile: [valid_audio_file.webm]
targetText: "Hello world"
userLevel: "B1"

// 預期: 200 OK, 返回詳細評分

// 測試案例 2: 無音頻檔案
POST /api/audio/pronunciation/evaluate
targetText: "Hello world"

// 預期: 400 Bad Request

// 測試案例 3: 大檔案
audioFile: [10MB_audio_file.wav]

// 預期: 400 Bad Request, 檔案太大

// 測試案例 4: 無效格式
audioFile: [invalid_file.txt]

// 預期: 400 Bad Request, 格式不支援

TC-202-02: 評估結果驗證

  • 描述: 驗證評估結果的合理性
  • 測試數據:
    • 高品質錄音
    • 低品質錄音
    • 無聲音頻
  • 預期結果:
    • 評分範圍 0-100
    • 包含四個維度評分
    • 提供改進建議
    • 模擬評分具合理性

TC-203: 音頻快取資料庫測試

TC-203-01: 快取儲存測試

  • 描述: 驗證音頻快取資料庫操作
  • 測試步驟:
    1. 生成新音頻
    2. 檢查資料庫記錄
    3. 重複相同請求
    4. 驗證快取命中
  • 預期結果:
    • 新記錄正確創建
    • 快取命中無重複記錄
    • 訪問計數正確更新

TC-203-02: 快取清理測試

  • 描述: 測試過期快取清理機制
  • 測試步驟:
    1. 創建過期快取記錄 (>30天)
    2. 執行清理作業
    3. 檢查資料庫狀態
  • 預期結果:
    • 過期記錄被清除
    • 有效記錄保留
    • 清理日誌正確記錄

🔗 整合測試案例

TC-301: 完整學習流程測試

TC-301-01: 端到端學習流程

  • 描述: 測試完整的學習會話
  • 測試步驟:
    1. 用戶登入系統
    2. 進入學習頁面
    3. 依序完成 5 種學習模式
    4. 每種模式完成 3 題
    5. 查看最終學習報告
  • 預期結果:
    • 所有模式正常運作
    • 分數正確計算
    • 進度正確追蹤
    • 學習報告準確

TC-301-02: 學習資料持久化

  • 描述: 驗證學習進度保存
  • 測試步驟:
    1. 開始學習會話
    2. 完成部分題目
    3. 中途離開頁面
    4. 重新進入學習頁面
  • 預期結果:
    • 學習進度被保存
    • 分數正確恢復
    • 可繼續未完成的學習

TC-302: 多用戶並發測試

TC-302-01: 並發 TTS 請求

  • 描述: 測試多用戶同時使用 TTS
  • 測試條件:
    • 10 個用戶同時請求 TTS
    • 不同文字內容
    • 混合快取命中/未命中
  • 預期結果:
    • 所有請求成功處理
    • 回應時間 < 5秒
    • 無系統錯誤

TC-302-02: 並發語音評估

  • 描述: 測試多用戶同時語音評估
  • 測試條件:
    • 5 個用戶同時上傳音頻
    • 不同音頻大小
  • 預期結果:
    • 所有評估正常完成
    • 評估時間 < 10秒
    • 結果準確返回

TC-303: 錯誤恢復測試

TC-303-01: 網路中斷恢復

  • 描述: 測試網路中斷後的恢復
  • 測試步驟:
    1. 開始學習會話
    2. 模擬網路中斷
    3. 嘗試播放音頻
    4. 恢復網路連接
    5. 重試操作
  • 預期結果:
    • 顯示網路錯誤提示
    • 提供重試按鈕
    • 恢復後正常運作
    • 學習狀態保持

TC-303-02: API 服務中斷

  • 描述: 測試後端服務中斷處理
  • 測試條件:
    • TTS 服務暫時不可用
    • 語音評估服務錯誤
  • 預期結果:
    • 友善錯誤訊息
    • 降級處理 (顯示音標)
    • 其他功能不受影響

📱 裝置與瀏覽器相容性測試

TC-401: 桌面瀏覽器測試

支援的瀏覽器版本

  • Chrome 90+
  • Safari 14+
  • Firefox 88+
  • Edge 90+

測試項目

  • 頁面正常載入
  • 音頻播放功能
  • 麥克風錄音功能
  • 響應式布局
  • 鍵盤快捷鍵

TC-402: 行動裝置測試

支援的行動平台

  • iOS Safari 14+
  • Android Chrome 90+
  • Android Firefox 88+

測試項目

  • 觸控操作順暢
  • 音頻播放正常
  • 錄音權限處理
  • 螢幕旋轉適應
  • 軟鍵盤相容

TC-403: 效能測試

載入效能

  • 首次載入: < 3秒
  • 音頻載入: < 2秒
  • 頁面切換: < 1秒

記憶體使用

  • 初始記憶體: < 50MB
  • 長時間使用: < 100MB
  • 無記憶體洩漏

⚠️ 錯誤處理測試案例

TC-501: 前端錯誤處理

TC-501-01: 麥克風權限被拒

  • 測試步驟:
    1. 進入口說練習模式
    2. 拒絕麥克風權限
  • 預期結果:
    • 顯示權限說明
    • 提供重新請求按鈕
    • 或引導使用其他模式

TC-501-02: 音頻播放失敗

  • 測試條件:
    • 裝置無音響設備
    • 音頻檔案損壞
  • 預期結果:
    • 顯示播放失敗提示
    • 提供重試選項
    • 顯示音標作為替代

TC-502: 後端錯誤處理

TC-502-01: Azure API 限制

  • 模擬條件: API 配額用盡
  • 預期結果:
    • 回傳友善錯誤訊息
    • 啟用降級模式
    • 記錄錯誤日誌

TC-502-02: 資料庫連接失敗

  • 模擬條件: 資料庫暫時不可用
  • 預期結果:
    • 使用記憶體快取
    • 錯誤日誌記錄
    • 自動重試機制

📊 效能測試指標

回應時間要求

  • TTS 首次生成: < 3秒
  • TTS 快取命中: < 500ms
  • 語音評估: < 5秒
  • 頁面載入: < 3秒
  • 音頻播放: < 2秒

準確性要求

  • TTS 發音準確度: > 95%
  • 語音評估準確度: > 90% (vs 人工評估)
  • 快取命中率: > 85%

可用性要求

  • 服務可用性: 99.9% uptime
  • 併發用戶: 支援 100+ 同時用戶
  • 錯誤率: < 1%

🧪 測試執行計劃

測試階段規劃

第一階段: 單元測試 (1-2天)

  • 前端組件獨立測試
  • 後端 API 功能測試
  • 資料庫操作測試

第二階段: 整合測試 (2-3天)

  • 前後端 API 整合
  • 語音功能端到端測試
  • 資料流測試

第三階段: 系統測試 (2-3天)

  • 完整學習流程測試
  • 錯誤情境測試
  • 效能壓力測試

第四階段: 用戶驗收測試 (1-2天)

  • 真實用戶場景測試
  • 可用性測試
  • 無障礙測試

測試環境

  • 開發環境: 功能測試
  • 測試環境: 整合測試
  • 預生產環境: 系統測試
  • 生產環境: 監控測試

測試工具

  • 單元測試: Jest, React Testing Library
  • API 測試: Postman, Insomnia
  • 端到端測試: Playwright, Cypress
  • 效能測試: Lighthouse, WebPageTest
  • 負載測試: Artillery, K6

驗收標準

功能驗收標準

  • 所有 P0 測試案例通過
  • 關鍵用戶流程無阻塞問題
  • 錯誤處理機制完善
  • 語音功能穩定可用

效能驗收標準

  • 符合所有效能指標要求
  • 負載測試通過
  • 記憶體使用合理
  • 無明顯效能回歸

相容性驗收標準

  • 支援所有目標瀏覽器
  • 行動裝置體驗良好
  • 無障礙功能正常
  • 不同網路環境穩定

安全性驗收標準

  • 無 XSS/CSRF 漏洞
  • 用戶資料安全保護
  • API 權限驗證正確
  • 敏感資料不外洩

📝 測試報告模板

測試執行報告

## 測試執行報告

**測試日期**: YYYY-MM-DD
**測試環境**: [環境名稱]
**測試負責人**: [姓名]

### 測試摘要
- 總測試案例: XXX
- 通過案例: XXX
- 失敗案例: XXX
- 通過率: XX%

### 關鍵問題
1. [問題描述]
   - 嚴重度: High/Medium/Low
   - 影響範圍: [描述]
   - 建議解決方案: [描述]

### 效能指標
- TTS 平均回應時間: X.X秒
- 語音評估平均時間: X.X秒
- 頁面載入時間: X.X秒

### 建議
- [改進建議1]
- [改進建議2]

Bug 報告模板

## Bug 報告

**Bug ID**: BUG-XXX
**發現日期**: YYYY-MM-DD
**報告人**: [姓名]
**嚴重度**: Critical/High/Medium/Low

### 問題描述
[詳細描述問題]

### 重現步驟
1. [步驟1]
2. [步驟2]
3. [步驟3]

### 預期結果
[應該發生什麼]

### 實際結果
[實際發生什麼]

### 環境資訊
- 瀏覽器: [版本]
- 操作系統: [版本]
- 裝置: [型號]

### 附件
- 截圖: [連結]
- 錄影: [連結]
- 日誌: [連結]

📚 測試資源與工具

測試資料

  • 音頻檔案: WAV, MP3, WebM 格式
  • 測試文字: 不同長度和複雜度
  • 用戶帳號: 不同權限等級
  • 詞卡資料: 完整和不完整資料

自動化測試腳本

// 範例: 翻卡模式自動化測試
describe('翻卡模式測試', () => {
  it('應該正常翻轉詞卡', async () => {
    await page.click('[data-testid="flip-card"]');
    await page.waitForSelector('[data-testid="card-back"]');
    expect(await page.isVisible('[data-testid="card-back"]')).toBeTruthy();
  });

  it('應該播放語音', async () => {
    await page.click('[data-testid="play-audio"]');
    // 驗證音頻播放邏輯
  });
});

API 測試腳本

// 範例: TTS API 測試
pm.test("TTS API 回應正常", function () {
    pm.response.to.have.status(200);
    const response = pm.response.json();
    pm.expect(response.audioUrl).to.be.a('string');
    pm.expect(response.duration).to.be.a('number');
});

🎯 結論

本測試案例規格書涵蓋了 DramaLing 學習系統的完整測試需求,包括:

  • 301 個詳細測試案例
  • 5 大功能模組測試
  • 完整的錯誤處理驗證
  • 效能與相容性測試
  • 自動化測試支援

通過執行這些測試案例,可以確保學習系統的:

  • 功能完整性
  • 穩定可靠性
  • 良好用戶體驗
  • 跨平台相容性

測試團隊應按照本規格書執行測試,並及時更新測試案例以反映系統變更。


文件結束

本測試規格書為 DramaLing 學習系統提供全面的測試指導。如有疑問或建議,請聯繫測試團隊。