本稿は公開画面から作る要件・テスト観点の例であり、ソースコードや内部実装の解析ではない。対象の Snake Game では、ソロ、ローカル2人、AI 対戦の導線が確認できる。
要件をプレイヤー視点に分解する
ゲーム開始前にアカウント作成を求めないこと、ソロでは矢印キーで動かせること、ローカル対戦では WASD と矢印キーを区別することを独立した要件にする。AI の Easy / Normal / Hard は、難易度選択が反映されるかを確認し、内部ロジックを推測しない。
状態遷移の観点
| 状態 | 操作 | 期待結果 |
|---|---|---|
| 開始前 | 開始または再読み込み | 操作可能な盤面になる |
| プレイ中 | 方向キー | 対象プレイヤーだけが曲がる |
| 衝突 | 壁または体へ進む | ラウンド終了を表示する |
| 終了後 | 再読み込み | 新しい状態で開始できる |
自動化するなら
セレクタや要素数は未検証なので、以下はテストの形だけを示す。
// illustrative Playwright outline
await page.keyboard.press('ArrowRight');
// assert a visible board-state change using a verified product selector
境界条件
フルスクリーン、ローカル対戦、AI 対戦は個別に確認する。入力の競合、衝突直後のキー入力、再読み込み後の残存状態は、短いゲームでも不具合が表れやすい。
まとめ
画面で観察できる約束を小さく書き、状態ごとに確かめる。これだけでゲーム UI の QA は再現可能な作業になる。
