GoogleのFirebaseというとプッシュ通知などのmBaaS系サービスであると思われがちですが、実際はモバイル向けの様々なサービスが多数集まった一つのブランドであり、クラッシュレポートやアナリティクスなどのサービスも含まれています。
今回はその中の一つ、アプリのテストサービスを提供するFirebase Test Labを紹介します。
テストは3パターン
Firebase Test Labで提供されているテストは3種類です。
Robo テスト、インストゥルメンテーションテスト、そしてゲームループです。
現在Monacaアプリで使えるとしたらRoboテストになりますが、インストゥルメンテーションテストも場合によっては使える可能性があります。
Robo テスト
アプリを多彩なデバイスで調べてくれます。自動的にテストを行ってくれるのが特徴で、apkファイルさえアップロードすればテストが開始されます。
より細かく制御したい場合(ID、パスワードを入力するなど)はRobo スクリプトというスクリプトで制御できます。ただし、Robo スクリプトは本来Android Studio上で作るものなので、Monacaアプリの場合は手作業で作ることになるでしょう。
インストゥルメンテーションテスト
AndroidのテストフレームワークであるEspresso、RobotiumそしてUIAutomator 2.0でテストを記述し、その内容に沿ってテストを行ってくれます。
Monacaアプリはハイブリッドアプリであるという特性上、UI部品へのアクセスに若干の癖があります。あらかじめローカルでテストスクリプトを作成した上で、Firebase Test Labでは多彩なデバイスで並列テストを行うという目的に合わせて使うのが良さそうです。
ゲームループ
主にゲーム向きのテストフレームワークです。
シナリオを作成し、ループを使って繰り返し処理ができるようになっています。テストをローカルでも実行できるTest Loop Managerというソフトウェアが用意されていますので、それを使ってシナリオを試すことができます。
Robo テストを試す
Robo テストを試すのは簡単です。Firebaseへ行き、Test Labを開きます。後はMonacaクラウドでコンパイルしたapkファイルをアップロードするだけです。無料でも5端末まで選択してテストを行えます。
アプリ規模によりますがテスト自体はすぐに終わります。ただしクラウド側で実機を立ち上げたり、そもそも起動までのキューがあるので10〜15分くらいかかるかも知れません。
実機の条件として、デバイスの種類やOSのバージョン、言語、画面の向きなどが選択できます。そしてテスト結果としてログの他、スクリーンショットや画面遷移を確認できるアクティビティマップ、動画、パフォーマンスが得られます。
スクリーンショット
スクリーンショットはアプリの画面が大きく異なった場合に自動的に保存されるようです。
アクティビティマップ
分岐処理などがあった場合には複雑なアクティビティマップが描かれるでしょう。どのように画面遷移が行われたのかを簡単に確認できます。
動画
動画はテスト全体がMPEG4で保存されます。スクリーンショットだけでは分からない、ネットワークデータの取得速度やアニメーションについて確認できるでしょう。
パフォーマンス
CPU、メモリ、ネットワークのパフォーマンスがグラフで確認できます。動画も合わせて再生することで、テスト時のどのタイミングでCPUやメモリなどの消費が激しくなったかと言った変化を追えるようになっています。
Firebase Test Labを完全に使いこなすためにはスクリプトを書けるようになる必要がありますが、ハイブリッドアプリ特有の壁がありそうです。ハイブリッドアプリのUIテストではAppiumが有名ですが、Firebase Test Labではまだ対応していません。また、現状ではAndroid専用であり、iOSには対応していません。将来的にAppiumに対応したらMonacaアプリのテストがしやすくなったり、iOSにも対応するのではないでしょうか。とは言え、Roboテストを試すだけでも興味深い結果が得られるはずです。ぜひ一度試してみてください。