dramaling-vocab-learning/note/LEARNING_SYSTEM_TEST_CASES.md

778 lines
19 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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
- **測試案例**:
```json
// 測試案例 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`
- **描述**: 測試語音評估功能
- **測試案例**:
```http
// 測試案例 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 權限驗證正確
- 敏感資料不外洩
---
## 📝 **測試報告模板**
### **測試執行報告**
```markdown
## 測試執行報告
**測試日期**: YYYY-MM-DD
**測試環境**: [環境名稱]
**測試負責人**: [姓名]
### 測試摘要
- 總測試案例: XXX
- 通過案例: XXX
- 失敗案例: XXX
- 通過率: XX%
### 關鍵問題
1. [問題描述]
- 嚴重度: High/Medium/Low
- 影響範圍: [描述]
- 建議解決方案: [描述]
### 效能指標
- TTS 平均回應時間: X.X秒
- 語音評估平均時間: X.X秒
- 頁面載入時間: X.X秒
### 建議
- [改進建議1]
- [改進建議2]
```
### **Bug 報告模板**
```markdown
## Bug 報告
**Bug ID**: BUG-XXX
**發現日期**: YYYY-MM-DD
**報告人**: [姓名]
**嚴重度**: Critical/High/Medium/Low
### 問題描述
[詳細描述問題]
### 重現步驟
1. [步驟1]
2. [步驟2]
3. [步驟3]
### 預期結果
[應該發生什麼]
### 實際結果
[實際發生什麼]
### 環境資訊
- 瀏覽器: [版本]
- 操作系統: [版本]
- 裝置: [型號]
### 附件
- 截圖: [連結]
- 錄影: [連結]
- 日誌: [連結]
```
---
## 📚 **測試資源與工具**
### **測試資料**
- **音頻檔案**: WAV, MP3, WebM 格式
- **測試文字**: 不同長度和複雜度
- **用戶帳號**: 不同權限等級
- **詞卡資料**: 完整和不完整資料
### **自動化測試腳本**
```javascript
// 範例: 翻卡模式自動化測試
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 測試腳本**
```javascript
// 範例: 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 學習系統提供全面的測試指導。如有疑問或建議,請聯繫測試團隊。