分支劇情怎麼測試:路徑覆蓋、狀態矩陣與迴歸測試
分支劇情測試不能靠「把每個結局玩一遍」。一個結局可能由多種狀態到達,同一節點也會因關係、證據和資源不同產生錯誤。可執行方案是分層覆蓋:先自動檢查圖結構,再測試關鍵狀態組合,最後用代表路徑驗證完整視聽體驗。

開篇導讀
分支劇情測試不能靠「把每個結局玩一遍」。一個結局可能由多種狀態到達,同一節點也會因關係、證據和資源不同產生錯誤。可執行方案是分層覆蓋:先自動檢查圖結構,再測試關鍵狀態組合,最後用代表路徑驗證完整視聽體驗。
第一層:靜態檢查結構
在不執行遊戲時檢查節點 ID 唯一、所有出口存在、非結局節點有出口、非開場節點有入口、變數型別正確、在地化鍵和媒體參照齊全。回報孤島、死路、無法滿足的明顯條件和沒有讀取的狀態。
靜態檢查快,適合每次提交執行。它不能證明故事好看,卻能在測試人員觀看影片前攔住大量拼字和參照錯誤。
第二層:狀態轉換單元測試
對每個選項驗證前置條件、寫入結果和目標節點。給定已知初始狀態,提交選擇後斷言關係、證據、資源和世界狀態準確變化;重複提交不會重複發放;逾時與無輸入走規定路線。
複雜的具名規則拆開測試。例如 can_publish_truth 分別驗證缺證據、低信任、資源不足與全部滿足。邊界值尤其重要:關係閾值上下各一級,資源 0 和 1,集合剛好缺一項。
第三層:用成對覆蓋縮小組合
所有變數的全部組合通常不可行。先識別會共同影響同一節點的變數,再用成對或風險導向組合,保證每對重要取值至少共同出現一次。對結局、付費、存檔遷移和不可逆狀態等高風險區域,增加三元組合或窮舉。
狀態矩陣每列一個案例,列出初始值、路徑、預期可見選項、媒體變體、最終狀態和結局。不要只寫「測試低信任」,必須給出可重現值與版本。
第四層:代表路徑端對端驗證
至少覆蓋最快主線、最高證據、最低關係、資源耗盡、全程逾時、輔助模式、章節跳轉與舊存檔遷移。完整觀看檢查敘事因果、表演、字幕、音訊和無縫切換,這是單元測試無法發現的。
每條路徑產生造訪紀錄,與預期節點序列比較。發生偏差時能定位第一個分岔,而不是到結局才發現結果不對。
缺陷報告必須包含狀態
報告寫建置版本、平台、語言、存檔版本、起始節點、關鍵變數、操作步驟、實際與預期、媒體 ID、紀錄和螢幕截圖或錄影。只說「第三章進了錯誤結局」幾乎無法重現。
提供除錯面板匯出匿名狀態快照,但正式玩家資料要遵守隱私限制。測試工具可以跳到節點,仍需定期從真實前置路徑進入,因為跳轉可能漏掉寫入。
迴歸範圍按影響圖決定
修改節點出口時,測試所有進入該節點的代表狀態和下游關鍵路線;修改共用影片時,檢查所有參照路徑;修改基礎變數時,擴大到所有讀取它的節點。維護「節點—變數—資產—測試」追蹤關係,可自動建議迴歸集合。
不能只重測缺陷發生的那條路線。修復常把錯誤移到另一個入口,尤其是匯流和存檔還原。
建立發布門檻
阻斷問題包括無法到達主線、狀態損壞、存檔遺失、黑畫面當機和關鍵字幕缺失;嚴重程度、優先順序和允許延期標準在測試前定義。每個發布候選版本保留測試報告、未決問題及風險簽核。
覆蓋率可以統計節點、選項、狀態對、媒體和結局,但數字不是品質本身。100% 節點造訪不代表所有邏輯組合正確,報告中應同時寫未覆蓋的風險。
讓自動化負責重複,人負責體驗
無頭執行器可快速走訪節點、注入狀態、驗證斷言和產生路徑;裝置自動化可測試啟動、下載和存檔;人類測試集中在選項理解、表演連貫、視聽節奏和情緒因果。不要讓測試人員反覆看相同十分鐘只為確認一個布林值。
管理測試資料和存檔樣本
為每個重要版本保存一組最小存檔:章節入口、關鍵閾值上下、資源耗盡、各主要結局前和舊模式。樣本註明內容版本與預期,不由測試者手動隨意修改。建置完成後批次載入,既驗證遷移,也驗證隱藏條件沒有漂移。
測試帳號、分析環境和正式環境分開,避免走訪腳本污染玩家資料。用於重現的紀錄和存檔若含裝置或帳戶資訊,按專案隱私規則去識別化、授權與刪除。
下一步:為一章建立狀態矩陣,先自動檢查全部節點和選項,再挑六條代表路徑做端對端觀看;每個缺陷都關聯受影響變數與迴歸集合。


