Anjinを利用したチュートリアル自動テストTips
はじめに
株式会社QualiArtsでUnityエンジニアをしている田中です。開発推進室にて自動テストを主な業務としています。 以前Airtestを使ったチュートリアル自動テストの実装を紹介しましたが、今回はAnjinを使ったチュートリアル自動テストを実装しました。 その際にいくつか引っかかったところがあったので紹介します。
チュートリアル自動テスト実装の目的
最初にチュートリアルを自動テストにて実装する目的について話します。 チュートリアルとは、初めてプレイするユーザーに向けてゲームの一連の流れを説明しながら体験してもらう機能です。 ゲームに必要な要素をユーザーに案内する重要な要素ですが、同時に複数の機能に関わるがゆえに壊れやすい要素でもあります。 チュートリアルが壊れているかどうかを検出するにはある程度の回帰テストが有効ですが、これを毎回手動でテストするのにもコストがかかります。 そのため自動でテストを実行することによって、チュートリアルが壊れているかを定期的に確認することができています。
Anjin導入の経緯
元々弊社ではAirtestを用 いて自動テストを進めていました。 Airtestは、NetEase社が提供しているUI自動テストソリューションです。 UI自動テストソリューションとは、手動で行うユーザーインターフェース(UI)操作をスクリプトに変えて、自動で実行するためのツールやフレームワークを指します。 またAirtestでは実行環境として実機が必要になりますが、そちらはSGE Test Farm(以下STF)に用意されたAndroid実機に接続してテストを行っています。
現在でもIDORY PRIDEでは毎朝Airtestでチュートリアルを実行していますが、Airtestは内部でSocket通信をしているために通信の切断が多く発生します。 弊社ではJenkinsにてAirtestを動作させ、STFのAndroid実機へ接続していますが、その間のネットワークの状態などでSocket切断が発生します。 通信切断時に再接続などの処理は行っていますが、通常の就業時間などの通信切断される可能性のある時間を避けてテストを走らせるような状態でした。
そのころAnjinというUnityEditor上で動作するオートパイロットツールを知りそちらを導入してみることにしました。 Anjinは、株式会社ディー・エヌ・エーが開発・OSSとして公開しているUnity向けオートパイロットフレームワークです。詳しくはこちらのリンクをご参照ください:
オートパイロットフレームワークとは、UI操作をスクリプト上で自動的に実行するものです。