SDK なしの自動ゲームテスト: Unity、Unreal、Godot
ビルドに SDK を入れない自動ゲームテスト: Unity、Unreal、Godot のゲームのメニュー、HUD、レベルを、実際のキーボード、マウス、ゲームパッドの入力でテストします。
読了 11 分更新日: 2026年11月6日執筆: Ait Nohaila (事業開発担当)
ゲームテストの自動化では、ゲームの繰り返せる部分 (メニュー、HUD、終了画面、シードを固定したレベル) をソフトウェアにプレイさせ、ビルドのたびに描かれたものを検証します。ブラックボックステストでは、ビルドに SDK は必要ありません。
ゲームテストの自動化とは何か?
Definition
ゲームテストの自動化とは、ソフトウェアにゲームの一部をプレイさせて何が起こるかをチェックさせ、人が同じ手順を手で繰り返すことなく新しいビルドを毎回検証することです。ゲーム QA の繰り返し可能な部分をカバーします: ビルドの起動、メニューの操作、レベルの読み込み、ポーズ、レベルのクリア、スコアの確認です。
- ゲームテストの自動化は、Web サイトや業務アプリのテストより難しいものです。ゲームはすべてを自分で描きます。プレイヤーの入力が次に起こることを変えます。2 回の実行がフレーム単位で同一になることはまれです。
このガイドでは、通常のテストツールがゲームの中を見られない理由、ゲームチームが代わりに使っているもの、そして視覚的なブラックボックスアプローチが Unity、Unreal、Godot、または独自エンジンのゲームを、ビルドに何も追加せずにテストする方法を説明します。
テストツールがゲームの中を見られない理由
デスクトップや Web のテストツールは、アプリケーションが自分自身について与える説明を通して要素を見つけます。Web ページにはドキュメント、要素、その ID があります。Windows のプログラムはボタン、フィールド、一覧をシステムに説明します: それがスクリーンリーダーの使うアクセシビリティツリーです。Selenium と Playwright は Web ページの構造の中で要素を見つけます。WinAppDriver と Appium は、オートメーション ID のような、アプリがコントロールについてシステムに伝える情報の中で要素を見つけます。
Windows に伝えられること
Windows に伝えられること
他のアプリケーション向けにエンドツーエンドツールを選んでいるなら、比較調査を参照してください。
ゲームチームは今どのようにテストを自動化しているか
ほとんどのスタジオはまず人に頼ります。テスターとプレイテスターが各ビルドを通してプレイし、テスト計画に従い、バグレポートを書きます。プレイテストは欠かせないままです: ジャンプの手応えが正しいか、ボス戦が公平かを判断できるのは人だけです。それでも、テスターの 1 日のかなりの部分は、昨日動いていたものが今日も動くことをもう一度確かめることに費やされます。
その部分を自動化するために、ビデオゲームの QA 自動化では通常ゲームに仕掛けを組み込みます: チームがビルドにコードやプラグインを追加し、テストが内側からエンジンのオブジェクトに届くようにします。
| エンジン | テストの書き方と実行の仕方 |
|---|---|
| Unity のテスト自動化 | Unity Test Framework を使うと、チームは NUnit で、Edit Mode と Play Mode のテストを C# で書けます。テストはエディター内か、Standalone、Android、iOS などの対象プラットフォーム上で実行されます。 |
| Unreal Engine の自動テスト | Unreal Engine には C++ で作られた自動テストフレームワークがあり、ユニット、機能、スモーク、コンテンツ負荷、スクリーンショット比較のテストを備えています。Unreal の自動化フレームワークである Gauntlet は、テストを行って結果を検証するプロジェクトのセッションを実行します。 |
| Godot のテスト | Godot のチームはテスト用のアドオンを追加することがよくあります。GUT は Godot Engine 向けのユニットテストフレームワークです。GdUnit4 は Godot エディター内で GDScript、C#、シーンをテストし、そのシーンランナーは入力をシミュレートできます。 |
ゲームに組み込むツール
| ツール | ゲームへの届き方 |
|---|---|
| AltTester | AltTester は Unity と Unreal Engine 向けのテスト自動化を提供します。その SDK は、ゲームに組み込んで階層内のオブジェクトを公開するプラグインです。テストは C#、Python、Java、または Robot Framework で書きます。 |
| GameDriver | GameDriver は Unity、Unreal Engine、Godot で作られたゲームに対応します。そのエージェントをプロジェクトに入れると、テストは XPath に近いクエリ言語の HierarchyPath でオブジェクトを見つけます。 |
| Airtest + Poco | Airtest はゲームとアプリ向けのオープンソースのフレームワークで、Python スクリプトから画像認識で要素を特定します。その相棒の Poco は、Poco SDK をゲームにインストールすると、ゲームのオブジェクト階層を読み取ります。 |
これらのツールは、テストがゲームの内部状態を必要とするときに強力です: プロパティ、位置、誰にも見えない値などです。一方で、見積もりを誤りやすいコストも伴います。
| 必要なもの | チームにとっての意味 |
|---|---|
| ビルド内のコードやプラグイン | 出荷版と足並みを揃えて作り続けるべきテスト用ビルド。 |
| コードで書くテスト | すべてのテストを開発者が書いて保守します。 |
| オブジェクトの名前とパス | オブジェクトの名前の変更やシーンの再編成で、それを名指しするテストが壊れます。 |
| エンジン向けの統合 | 独自エンジンやツールが対応していないエンジンには、組み込む先がありません。 |
| 内側からの視点 | オブジェクトの状態のチェックはコードが持つ値を語りますが、それがプレイヤーの見るものとは限りません。 |
視覚的なブラックボックスアプローチが加えるもの
ブラックボックステストは、プレイヤーと同じように、ゲームを外側からだけ見ます: 画面上の絵と手の中のコントローラーです。コードにアクセスする必要がないので、どのエンジンでも同じように機能します。
記録
経路を一度プレイする
アサーション
HUD、メニュー、終了画面
再生
キーボード、マウス、ゲームパッド
レポート
期待したもの、描かれたもの
| 得られるもの | ゲームにとって重要な理由 |
|---|---|
| ビルドには何も入れない | プレイヤーがダウンロードする出荷版のビルドそのものをテストします。 |
| どのエンジンでも | Unity、Unreal Engine、Godot、GameMaker、Construct、Defold、Phaser、MonoGame、RPG Maker、または独自のエンジン。 |
| 実際の入力 | プレイヤーが行うとおりに与えられる、キーボード、マウス、ゲームパッドの入力。 |
| 描かれたもののアサーション | 間違ったアイコン、欠けたハート、途中で切れたラベルは、ゲームの状態が正しくてもテストを不合格にします。 |
| コードなしのテスト | QA テスターがプレイしながらテストを記録し、書くスクリプトはありません。 |
| すべてのビルド | 同じテストが、手動でも CI パイプラインでも、新しいビルドごとに実行されます。 |
ゲームで自動化するものと、人に任せるもの
| ゲームの部分 | 自動化に向いているか? |
|---|---|
| 起動、タイトル画面、メインメニュー | はい。実行のたびに同じです。 |
| オプション: グラフィックス、オーディオ、操作、言語 | はい。それぞれの変更は画面上の値やラベルとして現れます。 |
| ポーズ、インベントリ、ショップ、ダイアログ、チュートリアルの画面 | はい。 |
| HUD: スコア、残機、コイン、タイマー | はい、ゲームが繰り返し可能にしている瞬間であれば。 |
| セーブとロード、レベル選択、レベルクリア | はい。 |
| シードを固定したレベルや経路が決まったレベル | はい、ゲームが毎回同じように進むなら。 |
| 反射神経を使うゲームプレイ、物理パズル、プレイヤーに反応する敵 | まれです。結果は実行のたびに変わります。 |
| 楽しさ、手触り、難易度、バランス | いいえ。それには人の判断が必要です。 |
ゲームの HUD、メニュー、終了画面はどうテストするか?
アサーションは画面の一部分を見て、それが正しいかどうかを伝えます。この記事のために描いた例の 2D ゲームで、アサーションを置く場所を示します。
- ビジュアルカウントアサーションで残機を数えます: ちょうど 3 つのハートです。固定のラベルや、レベルが必ず到達する値は、テキストアサーションで読み取ります。変化する値は動的テキストアサーションでチェックします: タイマーは、どの時刻を示していようと時刻の形をしていなければなりません。
- メニューでは、テキストアサーションがタイトルを読み取ります。ビジュアルアサーションは選択中の項目をその画像と比較するので、間違った色で描かれたハイライトは不合格になります。下部のボタンのヒントも画像であり、ゲームパッドに対する間違ったアイコンは本当のバグです。
- レベルの終わりでは、テキストアサーションが「LEVEL COMPLETE」の文字を待ちます。ビジュアルカウントアサーションが星を数えます。動的テキストアサーションが最終スコアが数値であることをチェックし、ビジュアルアサーションが「次のレベル」ボタンを見つけます。
各アサーションは探しているものをタイムアウトまで待つので、フェードインするメニューは失敗になりません。ビジュアル不在アサーションは読み込み画面が消えるまで待つので、テストはレベルの準備ができた瞬間に先へ進みます。
すべての種類のアサーションはビジュアルアサーションとテキストアサーションで説明しています。ゲームにはアクセシビリティ情報がないので、見た目で見つけられます: GUI Test Studio が要素を見つける仕組みで、それがテストを堅牢にする理由を説明しています。
キーボード、マウス、ゲームパッドの入力
ゲームテストの良し悪しは入力で決まります。GUI Test Studio は、キーボード、マウス、そして Windows が XInput コントローラーとして認識する Xbox 形式のゲームパッドを、同時に最大 4 台まで記録して再生します。
すべてのボタン押下とスティックの動きが、タイミングとともに記録されます。タイムラインでは、押下とその解放が 1 つのパッドボタン押しブロックに、連続したスティックの動きが 1 つのスティック移動ブロックになります。編集中、プレビューはゲームパッドと各時点でのその状態を描きます。
テストの実行時には、GUI Test Runner-Recorder が仮想ゲームパッドを操作するので、ゲームはゲームパッドからの押下を受け取ります。そのためには、テストを実行するコンピューターにドライバーを 1 回インストールする必要があります。アプリは実行前にそのことを伝え、ドライバーのダウンロードページを開きます。
| イベント | ゲームでは |
|---|---|
| キー長押し | 右方向キーを 2 秒間押し続けて、次の足場まで走る。 |
| 連打 | ジャンプキーを 2 回叩いて二段ジャンプする。 |
| ショートカットキー | マップを開く、クイックセーブ、スクリーンショットを撮る。 |
| テキスト入力 | プレイヤー名や、デバッグビルドでチートコードを入力する。 |
| マウスの軌跡 | 狙いを定める、経路を描く、ユニットをマップ上でドラッグする。 |
| パッドボタン押しとスティック移動 | メニューで決定する、ジャンプする、歩く、カメラを回す。 |
マウスで狙いを定めたり見回したりするゲームでは、GUI Test Runner-Recorder の環境設定の「記録の既定値」、「詳細設定」にあるマウスの連続的な移動を記録するをオンにしてください。そうすれば、ボタンを押していてもいなくても、すべての動きが記録され再生されます。すべてのイベントはイベントで説明しています。
GUI Test Studio によるゲームテストの自動化、手順を追って
GUI Test Studio は Windows 上のエンドツーエンドテストを自動化します: デスクトップアプリケーション、Web アプリケーション、スマートフォン、ゲームです。最初のゲームテストはこのように作ります。
- 1
インストールしてプロファイルを選ぶ
ゲームを実行する Windows コンピューターに GUI Test Studio をインストールします。初回の起動時に何を作っているかを尋ねられます: ゲーム開発者を選んでください。そうすればゲームパッドは最初から記録と再生の対象になり、推奨設定は動きのある画面に合ったものになります。
- 2
ゲームを記録する
GUI Test Runner-Recorder で記録をクリックし、アプリを選びます。参照...をクリックしてゲームのプログラムを選び、テストの最初にアプリを起動して最後に閉じるチェックボックスにチェックを入れます。そうすれば、どの実行も新しく起動したゲームから始まります。
エディター内のゲームビューのように画面の一部だけを対象にするには、代わりに画面の一部を選んでください。
- 3
チェックしたい経路をプレイする
メニューを操作し、レベルを開始し、テストの対象となる操作を行ってから、停止キーを押します。記録は各クリックの前にアサーションを追加し、画面に表示されるものに対するアサーションも追加します。
- 4
重要なアサーションを追加する
GUI Test Studio でテストを開きます。「アサーション」パレットからビジュアルカウントアサーション、テキストアサーション、または動的テキストアサーションを目的の時点にドラッグし、見る場所を描きます。
- 5
実行してレポートを読む
「テストを実行」をクリックします。信頼度レポートはすべてのアサーションを期待画像と実際の画像とともに示し、何が失敗したかをわかりやすい言葉で伝えます。
ゲームは、Web、デスクトップ、モバイルアプリと並んで、ユースケースページで紹介しているケースの 1 つです。
ゲームテストを繰り返し可能にする
ゲームが毎回同じように始まり、アサーションが正しいものを探していれば、ゲームテストは毎回合格します。次の習慣が役立ちます。
| 習慣 | 理由 |
|---|---|
| 既知の状態でビルドを起動する | 「アプリを実行」ステップは、ゲームにあれば、レベルを読み込んだり乱数シードを固定したりするデバッグオプションのような引数をゲームに渡せます。 |
| 毎回同じ解像度とウィンドウモード | アサーションは記録されたときのサイズで画像を比較します。「アプリを実行」ステップは、ゲームを最大化または全画面で開けます。 |
| ゲームが待つものを待つ | 読み込み画面に対するビジュアル不在アサーションは、固定の待機より優れています。 |
| 動くものは画面全体を検索する | 「画面全体を検索」は、要素がどこに描かれていても見つけます。 |
| 動きの多いシーンには緩和の厳密さ | 2 回の実行の間の小さな描画の違いを許容しつつ、要素の欠落のような本当の変化では不合格になります。 |
| グラフィックス設定ごとのベースラインプロファイル | 低品質と最高品質では同じメニューの描かれ方が違い、各プロファイルがそれぞれの期待画像を保持します。 |
詳細はWeb、スマートフォン、仮想マシン、ゲームにあります。
すべてのビルドでのゲームのリグレッションテスト
ゲームのリグレッションテストとは、新しいビルドのたびに同じチェックを実行し、壊れたメニューや欠けた HUD 要素を現れたその日に見つけることです。コマンドラインランナーの gtr-cli は、「テストを実行」ボタンとまったく同じようにテストを実行します。CI ツールが理解する終了コードを返し、JUnit の結果を書き、すべての失敗の画像を 1 つのフォルダーに集めます。
gtr-cli run tests --countdown 0 --junit results\junit.xml --artifacts results\artifactsTeamCity を使った完全なパイプラインの例: すべてのビルドでエンドツーエンドテストを実行する。
要点
- 1ゲームはすべてを自分で描くので、通常のテストツールには名前のないペインが 1 つ見えるだけです。
- 2組み込み型のテストはゲームの内部状態を読み、ブラックボックステストはプレイヤーに届くものを検証します。多くのチームは両方を使います。
- 3繰り返されるものを自動化する: メニュー、オプション、既知の瞬間の HUD、終了画面、シードを固定したレベルです。
- 4実行を再現可能にする: 既知の開始状態、1 つの解像度、動きの多いシーンには緩和の厳密さ、グラフィックス設定ごとのベースラインプロファイルです。
- 5GUI Test Studio はビルドに何も必要としません: 実際の入力でプレイを記録し、gtr-cli ですべてのビルドで実行します。
よくある質問
ビデオゲームのテストは自動化できますか?
はい、繰り返せる部分は自動化できます。ソフトウェアは、新しいビルドのたびにビルドを起動し、メニューを操作し、レベルを読み込み、ポーズし、レベルをクリアして、スコア、HUD、終了画面を検証できます。反射神経を使うゲームプレイ、物理、乱数、ゲームの手触りはプレイテスターに任されます。
ゲームに SDK を追加せずにゲームテストを自動化できますか?
はい。ブラックボックステストは、プレイヤーと同じようにゲームを見ます: 画面上の絵とコントローラーです。GUI Test Studio は出荷版のビルドを実際のキーボード、マウス、ゲームパッドの入力でプレイして描かれたものをチェックするので、ゲームには何も追加されません。
Unity や Unreal のゲームのテストはどう自動化しますか?
方法は 2 つあります。Unity Test Framework と Unreal Engine の自動テストフレームワークは、組み込み型のビルドの中でコードで書いたテストを実行し、AltTester や GameDriver のようなプラグインはエンジンのオブジェクトをテストに公開します。視覚的なブラックボックステストにはそのどれも必要ありません: GUI Test Studio は出荷版のビルドを実際のキーボード、マウス、ゲームパッドの入力でプレイして描かれたものを検証し、同じテストが Godot、GameMaker、独自エンジンでも動きます。
ゲーム QA とゲームのテスト自動化の違いは何ですか?
ゲーム QA は、チームが欠陥を見つけるために行うすべてのことです: テスト計画、プレイテスト、バグレポート、そして面白さ、難易度、バランスについての判断です。ゲームのテスト自動化は、そのうちソフトウェアが繰り返せる部分です: メニュー、HUD、終了画面がまだ動くことをビルドのたびに検証することです。自動化はテスターから繰り返しを取り除くものであり、テスターに取って代わるものではありません。
自動テストでゲームパッドのボタンを押せますか?
はい。GUI Test Studio は Xbox 形式のゲームパッドを同時に最大 4 台まで記録し、すべての押下とスティックの動きを仮想ゲームパッドを通して再生します。再生には、テストを実行するコンピューターにドライバーを 1 回インストールする必要があります。
ゲームのどの部分を自動化するべきですか?
実行のたびに同じものを自動化します: メニュー、オプション、既知の瞬間の HUD、ポーズとインベントリの画面、セーブとロード、レベルクリア画面、シードを固定したレベルです。反射神経を使うゲームプレイ、物理、乱数、ゲームの手触りはプレイテスターに任せます。
ゲームの HUD を自動でテストするには?
HUD の各部分に合ったチェックを付けます。ビジュアルカウントアサーションはハートや星を数え、テキストアサーションは固定のラベルを読み取り、動的テキストアサーションはタイマーやスコアが値にかかわらず正しい形式であることをチェックします。
AltTester や GameDriver のような組み込み型のツールの方がよいのはどんなときですか?
テストがゲームの内部状態を読んだり設定したりしなければならないときです: オブジェクトのプロパティ、位置、画面上では誰にも見えない値などです。視覚的なテストはプレイヤーに届くものをチェックするので、多くのチームは両方を使います。
Unity、Unreal Engine、Godot、GameMaker、Construct、Defold、Phaser、MonoGame、RPG Maker、AltTester、GameDriver、Airtest、Selenium、Playwright、Appium、WinAppDriver、Xbox、Windows、TeamCity は、それぞれの所有者の商標です。
テスト対象のアプリでご覧になりますか? チームとの 30 分の無料相談を予約してください。