遊戲測試
以 QA 工程師的方式測試遊戲,使用 Claude Code 或包含專案檔案的聊天工作階段。
工作流程
- 讀取規則:如果存在
RULES.md(來自 game-rules-core 技能),則開啟它。如果沒有,則從程式碼推斷規則並先寫下。無法測試的規則是規格中的錯誤。 - 對應程式碼:找到遊戲迴圈、狀態機、輸入處理、碰撞、生成與計分程式碼。
- 靜態審查:掃描
references/checklist.md中的常見錯誤。 - 撰寫測試:對純邏輯(碰撞數學、計分、狀態轉換)進行單元測試,並盡可能添加確定性模擬測試(固定種子、固定 dt、腳本化輸入)。
- 執行與觀察:執行測試,如果瀏覽器工具可用,則遊玩遊戲並擷取主控台錯誤。
- 報告:使用以下格式撰寫
BUG_REPORT.md。
測試類別(需涵蓋所有)
- 核心迴圈:開始、暫停、恢復、重新開始、遊戲結束、勝利。每個狀態轉換都能正常運作並重置正確的項目。
- 輸入:同時按下按鍵、暫停時按住按鍵、快速點擊、焦點遺失(blur)、觸控與遊戲手把(若有支援)。
- 碰撞/物理:高速穿隧、角落卡住、站在邊緣、移動平台、掉出世界。
- 規則:
RULES.md中的每一行至少有一個測試:觸發條件、條件、效果、邊界情況。 - 計分/進度:正確遞增、無重複計數、重新開始時重置、持久化(localStorage)在重新載入後仍存在並能處理損毀資料。
- 生成:限制被遵守、總是可通過、重新開始後無殘留實體、隨時間無記憶體增長。
- 幀率獨立性:在模擬的 30、60 與 144 FPS 下執行;遊戲結果必須一致。
- 效能:幀時間、實體數量增長、記憶體洩漏、繪製呼叫(3D)。
- 強固性:調整視窗大小、切換分頁、快速重新開始、行動裝置視口。
- 確定性:相同種子加上相同輸入會產生相同結果。
錯誤報告格式
對於每個錯誤:
- ID / 標題
- 嚴重性:重大(當機、軟鎖、進度遺失)/主要(規則被破壞)/次要(視覺、手感)/潤飾
- 重現步驟(編號,精確)
- 預期 vs 實際
- 證據:檔案與行號、主控台錯誤,或失敗的測試名稱
- 建議修正(一或兩行)
報告結尾需包含摘要表格(各嚴重性計數)以及未測試項目的清單。
嚴格規則
- 沒有證據(失敗的測試、日誌或可指出的程式碼路徑)就絕不能聲稱有錯誤。
- 如果未執行測試,絕不能聲稱某功能正常運作;應說「已審查,未執行」。
- 偏好確定性測試而非「我玩過,感覺沒問題」。
- 除非被要求,否則不要修改遊戲程式碼;先報告,然後依要求修正。