この記事は Akatsuki Advent Calendar 2021 4日目の記事になります
前日の記事は C言語で自作shell作ってみた(コマンド実行とリダイレクト)です
はじめに
ゲーム業界でもテストについての話題が多くなっていますね
そんな中、今年の4月ごろに Unity が Automated QA という機能をリリースしました(まだ Preview です)
今回はその Automated QA を使ってスモークテストをローカルの実機で確認するまでを試してみました
Automated QA とは
Automated QA は Unity エディタで UI へのタップやスワイプ、ドラッグなどを記録し、エディタや iOS、 Android で再生を行うことでテストができる機能です
毎回検証が必要な箇所を記録することで以降は自動で検証ができるようになったりします
また、複数の記録を組み合わせてテストを作成するコンポジット機能などがあり、テストを柔軟に作り上げることも可能です
より具体的な機能は公式のブログや公式のドキュメントをご覧ください
環境
今回の環境は以下になります
MacOS BigSur
Unity 2020.3.1f1
Automated QA 0.8.0-preview.1
iPhone Xs Max
Automated QA の導入
Automated QA の導入は簡単です
Unity の PackageManager を起動して「+」を押下し「Add package from git URL...」を選択
入力欄が表示されるので、そこに「com.unity.automated-testing」と入力し「Add」を押下
これで導入は完了です
Automated QA で記録を行う
Automated QA の Window はメニューの「Automated QA」から表示できます
「Recorded Playback」から「Record」を選択するとゲームが再生されます
記録したい操作を行い、完了したら「Stop」を押下すると Json ファイルが作成され Recordings フォルダに保存されます
この Json ファイルは以下のような内容になります
GameObject の名前や付けられているタグの名前、ヒエラルキーなど様々な情報が書かれていますね
Automated QA を使ってテストを行う
作成した Json を使って C# のテストコードを作成することができます
「Automated QA Hub」Window から「Test Generation」を押下し Recordings から C# コード化したい記録を選択し 「Full Tests」を実行します
生成された C# コードは「GeneratedTests」フォルダの中に保存されます
これは「Test Runner」から実行できる C# コードです
C# コードを生成した後は「Test Runner」の「PlayMode」をエディタで実行して、実行できるか確認してください
次はプラットフォームへビルドしてテストを行うため、事前にビルドの設定をします
Unity のターゲットとなるプラットフォームの指定で iOS を設定した場合は、ビルド後に Xcode のビルドを行うため、事前に Xcode プロジェクトの設定を行う必要があります(PostProcessBuildからの設定でも問題ないと思います)
この設定が終わったら iPhone を接続して「Test Runner」にある「Run All Tests」or「Run Selected Tests」を実行します
ここまで実行ができれば前準備は完了です!!
Command Line から テストを実行する
ここからは Command Line でテストを実行していきます
# プロジェクトへのパスやオプションは適宜変更してください
/Applications/Unity/Hub/Editor/2020.3.1f1/Unity.app/Contents/MacOS/Unity -runTests -batchmode -projectPath TestAutomatedQA/ -testPlatform iOS -testResults ./result.xml -logFile
今までテストが問題なく動作していたらこれで Command Line から実行ができます
出力した result.xml
は以下のような内容で出力されます
まとめ
Command Line から Automated QA を利用した実機でのスモークテストを行ってみました
起動はできるのか・エラーが起きることなく全ての画面へ遷移が行えるのかなどの簡易なチェックを行いたい場合に Unity の機能で完結できるのは便利ですね
C# コード化することで Test Runner から実行できるようになり、UI の操作もスクリプトで操作できるようにもなりました
また、ElementQuery という機能を利用することでより柔軟な GameObject の検索ができるようになるので追って記事を書きたいと思っています
Automated QA の今後の展望として将来的には ML-Agents を用いて AI による自動操作も可能にする予定とのことなのでさらに便利になっていることを楽しみにしていましょう