■ 大規模ゲーム開発におけるテスト環境
Higeneko Tech@HigenekoTech
うちのテスト開発者さんはVSTSを使ってて、そこからコマンド発行してゲームのコントロールをするようになっています。例えば「ゲーム起動」「指定したステージへ移動」、そしてもっとも汎用的なのが「このコントローラー入力ログを再生」コマンドですね
Higeneko Tech@HigenekoTech
加えて、ゲーム状態を取得するコマンドがあります。「メモリ使用状況の取得」「平均FPSの取得」「現ステージの名前」といった感じです
Higeneko Tech@HigenekoTech
そして、このコマンドはネットワークを介して発行できるので複数のマシンで同時に複数のテストを走らせることができるようになっています
Higeneko Tech@HigenekoTech
テスト開発者はこれらのコマンドを駆使してVSTSを使ってC# でテストコードを書けるようになっています。で、エンジン開発者はこれらのコマンド機能を提供するって感じですね
Higeneko Tech@HigenekoTech
で、開発者はdevtestというチェックイン前に実行しないといけない複数のテストを実行させ、これをパスしないとチェックインできないようになっています
Higeneko Tech@HigenekoTech
忘れてはいけないのは、これらのテストの目的はあくまで「ゲームが起動しない」「クラッシュする」といった数十人単位で開発している時に起こしてはいけない(複数人数の作業が止まってしまう)状況を避けるということです
Higeneko Tech@HigenekoTech
これらのテストを実行しても、テストでカバーされていない「このステージのこのアイテムが取れなくなった」という不具合を見つけることはできませんが、この不具合によって作業が止まる、つまりブロッキングされる人数はチーム全体数に比べれば無視できる範囲で収まるのでカバーする事は少ないですね