Generation(以後、アドジェネ)のQA(品質管理)チームにてSDKのテストを担当しています。先日、アドジェネの動画リワード広告が、Unityで開発されたアプリでもご利用いただけるようになりました。pluginをリリースするにあたり、QAチームではご利用いただく媒体社様にご迷惑をおかけすることがないよう、十分な手動・自動テストを実施いたしましたが、これには既存のテスト環境をそのまま使うことができず、イチからUnity用のテスト環境をAndroid/iOSともに構築する必要がありました。そこで、本記事ではQAチームで実施しているUnityでビルドしたAndroid/iOSアプリの自動テストについてご紹介します。Unity製アプリにて動画リワード広告の実装を検討しているアプリ開発者様の参考になればと思い、ご紹介します。1.サンプルアプリの自動テストについてアドジェネではSDKの配布にあたり、サンプルアプリにて手動ならびに自動テストを実施し、お客様にご迷惑をおかけしないよう、最善を尽くしております。詳細については、以下の記事を参照してください。Assurance(QA)チームによる品質管理の取り組み(アドテクセンター通信)第2回:QA(品質保証)チームによる実機端末をつかった自動/手動テストの裏側(アドテクセンター通信)2.Unity版サンプルアプリを自動テストする際の問題点これまでQAチームではサンプルアプリの自動テストをAppiumを使って自動テストを実施する体制を構築し、運用していましたが、Unity版の自動テストを実施するにあたり、以下の問題点があることがわかりました。・レポートのサーバーへのアップロードなどなど...これらの問題をひとつひとつ潰しながらテスト環境構築を進めていくことなりました。3.Appiumを使わないでどこまでやれるか?という試みまず、Android端末にて標準で提供されているADBコマンドをつかって、どこまでできるかを確認しながら構築することになりました。最終的には、Appiumを全く使うことなくADBコマンドのみで、Unity版サンプルアプリの自動操作とログの取得に成功しました。・表示画面の判定方式を、Appiumで取得した要素名やID等から判定していた方法を、Activityを取得して判定するように変更Activityを取得して判定する方法はテストスクリプトの構造がシンプルになる(ボタン名による分岐がなくなる)ため、弊社のケースでは広く応用できそうです。次に、iOSですが、ipaファイルのインストールから起動のところまではAppiumを使うことなく構築できたのですが、AndroidのようにADBコマンドに相当するものが公式にないため、アプリに干渉するための手段がAppium以外にありませんでした。そもそもAndroid版と違い、iOS版のビルド時にはXcodeからビルドを行うため、アプリに干渉する部分はAppiumで操作が可能だったので、ボタン操作に関しては、Appiumを使用して実施しています。※Xcodeからipaファイル(アプリの本体データ)を出力という部分は既存の自動テストと同じです。▼実機テストの様子4.残った課題についてUnity版のサンプルアプリの自動テストも無事可能になり、多くの端末で動作確認を実施することが可能になりました。いくつかの問題点も残っており、それら問題点と見通しに関しては以下の通りです。・iOS9.2以下の端末が自動化できないiOS版のテスト環境からどうしてもAppiumを排除できなかったため、Appium環境の制限であるiOS9.3以上という制限を回避できず、iOS9.2以下では手動でテストするしかありませんでした。ソフト的に操作するのが不可能なら、最終的にはハード的に自動テストをするしかないのだろうか?と考えていたのですが、GithubのAppiumのページ(https://github.com/appium/appium)を読んでいたら、ページの下の方にそのようなプロジェクトへのリンクが載っていました。https://goo.gl/BszpPpこの方式だと、1台で1端末になってしまうので、CNCプロッタような形にすれば複数台を一度にテストできると思います。なにより、appiumからハードを連動して動作させることができるというのが分かっただけでもいろいろな可能性が膨らみます。Oの発表があり、ベータ版を入手して動作確認しています。どちらもそのままでは動かすことはできず、各ツールのアップデートの様子を見ながら対応していくことになります。正式なリリースのタイミングに合わせ、なるべく早く対応できるよう体制を整えています。・Unityのビルドに非常に時間がかかることUnityのビルド、とくにXcodeでのビルド〜ipaファイル作成に非常に時間がかかることがわかっています。BuildやJenkinsなどでの自動ビルドを検討しています。現状は自動テストが連続して行えるというメインの目標があるため、Unity版と既存の自動テストのプロジェクトが分離してしまった状態なのですが、Unity版で導入した仕組みや、コードなどを既存のテスト環境へフィードバックして環境を一つにまとめておく必要があります。5.まとめUnity版の自動テスト実施にあたり、一旦はAppiumを使わない方向で進み、Androidに関しては問題なく構築できたのですが、iOSに関してはAppiumを使うしかなく、各環境に応じてさまざまな対応が必要で、Appiumはシンプルでいいなと思ったり、iOSは堅牢なんだなと思ったりしましたが、なんとかデータを取れる環境をつくることができました。Unity版の実機端末のテスト結果につきましては、端末リストを以下で公表していますのでご参考ください。Generation(アドジェネ)」は、スマホサイト・アプリの広告収益を自動最大化する【制約のない】無料アドサーバーです。Inc.PAGETOP。