778 lines
19 KiB
Markdown
778 lines
19 KiB
Markdown
# 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 學習系統提供全面的測試指導。如有疑問或建議,請聯繫測試團隊。 |