Gauntlet は物事を実行して結果を検証するためのフレームワークです。このフレームワークは、Unreal Engine の セッション を様々なプラットフォームで実行することを目的としていますが、それに限らず使用できます。Unreal の セッション だけで、Unreal のエンジンでゲームの実行が可能です。例えば、マルチプレイヤーゲームでは、4 つのクライアントと 1 つのサーバーが必要になる場合があります。
Gauntlet は特定のゲームサイド オートメーション コードやテスト フレームワークを必要としません。つまり、ゲームのテストの実行方法はユーザーが決められます。一方、TestController
クラスを提供する Gauntlet プラグインもあり、これを使用することで、ゲームのインスタンスの操作や監視がしやすくなります。このプラグインは、実行にいくつかのステップを必要とするスモークテストに適しており、完全に任意で使用できます。
Gauntlet の行うこと
構成と結合を行うために必要な関数操作が可能な低レベルのユニットとして、ビルド、デバイス、テストのプラットフォームに依存しない実装。
ゲーム用に複雑な設定 (5v5 クライアントとサーバーなど) を起動できる高度なクラスの提供。
ログファイルの解析、クラッシュ、デバイスからのデータへのアクセス/保存を行うためのユーティリティ関数の提供。
Gauntlet の行わないこと
Unreal サイドの特定コードの要求。つまり、Unreal 内での実行は、最も理にかなっているものなら何でも使用すると言うことです。使用されるものは、Unreal Automation Framework や、単にゲームが解釈するいくつかのコマンドライン パラメータといったように広範囲に渡ります。
ビルドの作成。Gauntlet にネットワークかローカルで作られたビルドを提供する必要があります。
建築
Gauntlet には 3 つのティアの機能があります。初期のティアはスクリプト デバイスのやりとり、非 Unreal のユニット テストなどのために単独で使用される可能性がありますが、一方、後者のティアは、単純なユーザーが設定できるオプションの背後にあるかなり複雑な設定を抽象化します。
レベル 1
デバイス、ビルド、インストール、プロセスの概念を抽象化するインターフェース (デバイス、ビルド、アプリケーション)。
ITargetDevice
IBuildSource
IBuild
IAppInstall
IAppInstance
ユーザーが作成したテストの順次実行、並列実行、依存実行をサポートするフレームワーク。
TestExecutor
ITestNode
レベル 2
Unreal がサポートするすべてのプラットフォーム (PC、Mac、PS4、Xbox One、Switch、iOS、Android) 用のデバイスおよび AppInstance の実装。
TargetDeviceWindows
TargetDeviceMac
TargetDevicePS4
TargetDeviceXboxOne
TargetDeviceSwitch
TargetDeviceIOS
TargetDeviceAndroid
Unreal セッションに存在する 1 つ以上の「役割」の設定と起動をサポートするクラス (4 クライアント、1 サーバーなど)
UnrealAppConfig
UnrealSessionRole
UnrealSession
UnrealSessionInstance
レベル 3
Unreal のセッション下で ITestNode と IBuildSource を実装するクラス
UnrealBuildSource
UnrealTestConfiguration
UnrealTestContext
UnrealTestNode
RunUnreal - UAT の BuildCommand を継承し、テストのリストを作成して実行する前にいくつかのパラメータを設定するクラスです。
Gauntlet のコア インターフェース
コア クラス
TestExecutor
TestExecutor クラスは、一連のテストの作成、キューイング、監視を処理します。TestNode が複数のテストの並行実行をサポートしている場合、それも行えます。注意する必要があるのは、Unreal サーバー用にポートを使用する場合です。最初のテストではデフォルトのポートで問題ありませんが、テストを並行実行している場合は、サーバーとクライアントの両方で固有のポートを使用する必要があります。
ITestNode
ITestNode は、すべてのテスト ノードが実装する必要のある API を記述するインターフェース クラスです。
Unreal Test ノード
Unreal Test ノードは、主に UnrealSession オブジェクトを設定し、その関連する関数を呼び出すことによって、ITestNode を実装します。