Files
TheTree_mock/docs/TEST_MATRIX.md
T

116 lines
10 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.
# 自動テスト対応表
この表は、仕様上の主要な不変条件をどのHeadless Testで検証しているかを示す。ゲームルールの正本ではなく、実装の回帰防止範囲を確認するための索引である。
## 実行
全件:
make test
段階別:
make test-s0
make test-s1
make test-s2
make test-s3
make test-s4
make test-s5
make test-s6
make test-mvp
make test-acceptance
make test-ui
make test-perf
make test-perf-full
構文、Autoload、Main Sceneの読み込み確認:
make check
## 対応表
| 段階 | Test | 主な検証対象 |
|---|---|---|
| S0 | `tests/run_tests.gd` | Clock、GameState、基本Snapshot、Atomic Save |
| S0 | `tests/s0/test_definition_registry.gd` | Definition Schema、重複ID、参照検証 |
| S0 | `tests/s0/test_command_transaction.gd` | Command順序、処理後も残る受理ID/冪等Key履歴、旧Snapshot移行、厳密復元、Transaction rollback |
| S0 | `tests/s0/test_determinism.gd` | 24時間再生、RNG Stream、Digest一致 |
| S0 | `tests/s0/test_stable_id_generator.gd` | 安定ID、Save/Load後の連番 |
| S0 | `tests/s0/test_domain_events.gd` | Domain Event順序、再配送境界、Batch全件先行Commit、無変更拒否、再入配信順、配信中Restore拒否 |
| S0 | `tests/s0/test_runtime_integration.gd` | Runtime Command、Snapshot、復元原子性 |
| S1 | `tests/s1/test_world_service.gd` | Zone/Layer、Occupancy、支持、Rank拡張 |
| S1 | `tests/s1/test_path_service.gd` | 決定的A*、権限Edge、Cache失効 |
| S1 | `tests/s1/test_path_congestion.gd` | 密度Cost、Soft Collision、Cache低下側失効、Connector権限別Cost、Elevator Request一意性、停止時迂回、退場Cleanup、30分停滞 |
| S1 | `tests/s1/test_construction_service.gd` | Placement、費用、取消、完成、撤去、完成通知の保留/確定/破棄、通知中の再入拒否 |
| S1 | `tests/s1/test_excavation_service.gd` | 硬度別費用・時間、入口接続、支保、中断再開、二層解放、厳密Snapshot |
| S1 | `tests/s1/test_spatial_subslot_service.gd` | ROUTE/DECORATION/UTILITY独立共存、複数Cell、crosslink、revision、Path query、外部検証境界、厳密Snapshot |
| S1 | `tests/s1/test_route_subslot_path_adapter.gd` | base+ROUTEのPath投影、追加・置換・撤去の原子更新、到達性、revision、隔離、厳密Snapshot |
| S1 | `tests/s1/test_facility_infrastructure_projector.gd` | 完成した客用/業務用通路と職員扉の実Path投影、利用権限、安定ID、撤去、replay、crosslink、exact rollback、隔離、厳密Snapshot、未対応昇降機の無変更拒否 |
| S1 | `tests/s1/test_runtime_infrastructure_integration.gd` | Runtime v6、掘削29/30分境界、建設通知順、通路・職員扉完成/撤去、失敗時signalゼロ、Rank拡張、v5代理施設移行、破損Saveの原子的拒否 |
| S1 | `tests/s1/test_runtime_world_construction.gd` | World/Path/Construction統合とReplay |
| S2 | `tests/s2/test_facility_service.gd` | 状態優先、Queue、Slot、中断、原子的完了 |
| S2 | `tests/s2/test_inventory_logistics.gd` | FEFO、Reservation、Cargo所有権、入力fingerprint冪等性、ID Tombstone、Carrier予約負荷、原子Batch |
| S2 | `tests/s2/test_mana_network_service.gd` | 優先供給、Brownout、蓄電、復旧保持 |
| S2 | `tests/s2/test_economy_service.gd` | 複式Ledger、冪等取引、逆仕訳、残高監査 |
| S2 | `tests/s2/test_ledger_backed_resources.gd` | GameState資源とLedgerの原子的Adapter |
| S2 | `tests/s2/test_runtime_operations_cycle.gd` | 入荷からService売上までの完全Cycle |
| S3 | `tests/s3/test_guest_service.gd` | SYS-GST-001〜007、6欲求、旧5欲求移行、成人境界、Utility、退出復旧 |
| S3 | `tests/s3/test_staff_service.gd` | SYS-STF-001〜006、複数Shift、Task原子性、雇用区分、日給、退職者未払台帳 |
| S3 | `tests/s3/test_staff_payroll_operations.gd` | 当日日給と繰越債務、部分清算、退職後債務、日次冪等性、厳密履歴Snapshot |
| S3 | `tests/s3/test_runtime_actor_cycle.gd` | Guest/Staff/Facility/Inventory/Ledgerの24時間統合 |
| S3 | `tests/s3/test_runtime_actor_hardening.gd` | 実移動、残高予約、勤務終了、破損Snapshot拒否 |
| S3 | `tests/s3/test_runtime_path_traffic.gd` | Guest/StaffのPath密度投影、固定小数点混雑速度、30分停滞復旧、旧Runtime移行、Dispatcher相互照合 |
| S4 | `tests/s4/test_relationship_event_service.gd` | SYS-REL-001〜004、SYS-EVT-001〜004、限定Lock修復、Content Filter enum厳密復元 |
| S4 | `tests/s4/test_placement_risk_preview_service.gd` | 同一施設・Shift接触時間、Shield/Event候補、Route Lock警告、Content Filter不変、決定的回避案、fail-closed入力 |
| S4 | `tests/s4/test_runtime_relationship_events.gd` | Choice pause、Cost escrow、Actor欠落、exact Replay |
| S5 | `tests/s5/test_authority_service.gd` | SYS-AUT-001〜004、Heat、Evidence、Inspection |
| S5 | `tests/s5/test_defense_service.gd` | Wave、参加者、扉、設備、目的物、Skill、撤退、Snapshot |
| S5 | `tests/s5/test_runtime_authority_cycle.gd` | Path/LOS/Ledger/Authority統合とexact Replay |
| S5 | `tests/s5/test_runtime_defense_cycle.gd` | 全10 Command、専用RNG、Skill費用、Staff/Facility損害、Raid排他Lock、途中Save、原子rollback |
| S6 | `tests/s6/test_save_operations.gd` | Autosave世代・縮小、Migration、Checksum Recovery、package内symlink拒否、rename中断復旧 |
| S6 | `tests/s6/test_performance_budget.gd` | x1/x4、Path、Save/Loadの性能予算判定 |
| S6 | `tests/s6/test_runtime_save_lifecycle.gd` | 06:00日次保存、3世代、Recovery、読込原子性、限定修復、Content Filter統合 |
| MVP | `tests/mvp/test_operations_coordinator.gd` | 06:00営業日締め・朝境界、需要・自動来客、7日平均、未払・破綻、14日exact replay |
| MVP | `tests/mvp/test_mvp_content_catalog.gd` | 客8クラス×種族4種、雇用候補20人、ユニーク2人、成人境界、厳密Schema、全体fail-closed |
| MVP | `tests/mvp/test_progression_service.gd` | Rank 1~7条件、累計値、逐次昇格、原子的World境界、冪等性、rollback隔離、Snapshot |
| MVP | `tests/mvp/test_runtime_content_progression.gd` | 32 Guest定義、候補雇用・契約費・日給・Shift・Path、未払時の無変更拒否、累計値、Rank拡張、旧Runtime移行、Runtime v6、24時間再生 |
| MVP | `tests/mvp/test_runtime_operations_integration.gd` | 本番運営の明示有効化、06:00営業日境界、実来客、給与・未払・破綻、Runtime v6、14日運営境界再生 |
| MVP | `tests/mvp/test_runtime_operations_acceptance.gd` | 実Tick 24時間、選択待ち停止再開、Save・Command再送、部分給与、破綻、破綻後no-op、14日運営境界の連続/Day 7復元一致 |
| UI | `tests/ui/test_main_dashboard.gd` | 2解像度Layout、本番運営表示、雇用候補20人の表示と即時/予約雇用・二重送信防止・保存済み操作連番復元、座標変換、建設、掘削モード/Preview/Command、施設選択、前景Event Choice、手動Save/Load |
| PERF | `tests/performance/test_perf_mvp_001.gd` | 独立Service合成の24時間負荷Smoke。`PERF_MVP_FULL=1`で仕様上限の完全Fixture。Runtime全Domain・UI・実描画Frameは別受入 |
## 横断的な合格条件
各System追加時は、少なくとも次を同じ段階のTestへ含める。
- 不正入力を副作用なしで拒否する。
- 外部境界の途中失敗を原子的に巻き戻す。
- 同じCommandまたは解決IDを再送しても二重適用しない。
- Snapshotを完全往復でき、破損Snapshotの拒否が既存状態を変えない。
- 同一Seed、同一Command列、同一開始Snapshotから同一Digestへ到達する。
- Actor、Task、Reservation、Queue、Ledger、Event Lockに孤児参照を残さない。
性能Scenarioは機能回帰とは分離して測定する。時間超過時にもTickやEntityを間引いて合格扱いにはしない。
## MVP受入として未完了のScenario
System単体の合格と、ゲームとしてのMVP合格を混同しないため、次は別の受入Scenarioとして追加する。
数値境界、共通Fixture、A/B分岐条件は `MVP_ACCEPTANCE_SCENARIOS.md` を正本とする。
- 全Actor AI、Event、監査、Path移動を含む20,160回の実Tickで14ゲーム日を完走する。現在の14日自動試験は運営境界を加速しており、実Tick受入の代替にはしていない。
- 夕方混雑を、施設追加前後と動線改善前後で同一Seed比較する。
- FRONTだけの動線と適切なBACK動線を、物流時間・従業員移動・客待ち時間で比較する。
- 健全営業と地下営業を、Heat対策費込みの14日利益で比較する。
- ヒロイン/ライバルの配置変更前に、接触・Shield・EventリスクPreviewが変化することを確認する。
- 100客、30従業員を表示した状態で基準PCの実Frame rateを測定する。
- 初見Playtestで地上/地下とFRONT/BACKの違いを30分以内に説明できるか観察する。
## P2 明示階段と車内混雑(Runtime v9/Path v5)
- `make test-stairs`: 全階間Path policy、transit密度、階段投影と下部足場、一回限りの旧通路移行、実移動端数と保存、占有中の撤去拒否、階段と待ち統計のUI。
- `make test-transport`: 上記に加え、既存の実かご・実通勤・工事勤務境界・自然4停止階の乗降、旧乗車中保存の密度移行を検証。
- `make test-transport-comparison`: 同Seed/同需要48人/480分で1台と2台を比較。Path+かご版と実GuestRuntime版を区別し、P95・全員の完了・実歩数・途中再生・設備費を記録。
- `make test-opening`/`make test-supply`: 上階動線を明示階段へ更新した通常初期予算の営業。Guideは実Path到達を使う。
- 条件・数値・限界は [P2階段と比較QA](qa/P2_STAIRS_AND_COMPARISON.md)。固定需要比較を自然来客の離脱改善やS14全条件の合格としない。