Firebase Test Labとは
Googleが保持、管理している端末でアプリのテストしてくれるサービスです
テストを実行しながら、単純なテスト結果だけでなく、ログ、動画、スクリーンショットなども収集してくれます
※ 現在はAndroid端末のみです
テストの種類
RoboTest と InstrumentationTest という2つができます
RoboTest
RoboTestはアプリのテストコードを書かなくても
Googleのロボットくんがアプリの内容にあわせて、ユーザー操作をシミュレートしてアプリを網羅的に動かしてくれます
クラッシュがあれば検知してくれるし、細かいログも収集してくれます
InstrumentationTest
いわゆるUIテストでうs
Espressoで記述したテストを実行します
設定
Firebaseではテストディメンションと呼びます
モデル、Android API レベル、ロケール、画面の向き、実端末、エミュレーター、各種APIレベルを選べます
実際にRoboTestをやってみた
今回はRoboTestを紹介します
RoboTestは一番単純なテストであればあれば設定はなにもいりません
(InstrumentationTestと共通なテストディメンションの設定は必要です)
この自作TODOアプリで実行したときの結果をまとめていきます
apkをアップロードして
実行するだけ
(Roboスクリプトも設定していますが、なくても大丈夫です)
これだけ!
なにをやってくれるのか
Warning,Error,Fatalのログ
シミュレートした際に吐かれたログを見るころができます
Warning,Errorは減らすべきですが、セーフといえばセーフです
自分たちのアプリ外が出すこともあるので、内容をよく確認して対応するかどうか判断しましょう
Fatalはいわゆるクラッシュなので対応すること
(この時は意図的にクラッシュするようなコードでテストにかけました)
シミュレート時のスクリーンショットと動画
スクショや動画も撮ってくれる!
動画がめちゃくちゃ便利です!
パフォーマンスモニタリング
CPU、メモリ、ネットワークを計測してくれます(APIレベル21以上の物理端末)
しかも動画が一緒に見れるので、どの処理が重いかなども調べやすいです
RoboTestは有効なのか?
基本の動作を保証するには十分なくらい網羅的に操作してくれている印象です
TODOアプリやリーダーアプリではであれば基本機能のテストはUnitテスト + RoboTestで済ませてもいいかもしれません
人力テストはPUSHやデータ引き継ぎなど複雑な機能のテストにフォーカスするべきです
もっと状態が多いようなアプリでうまく活用できれば、テスト工数をめちゃくちゃ削減できる気がします
どこまでRoboTestを信頼していいかというのは難しい問題ですが、十分に有効であることは間違いなさそうです
Q&A
Q.ログインとかできるの?
A.できるよ(ただしキャプチャ文字の入力などはできない)
入力場所を指示するか、Googleアカウントログイン
他の認証についての記述は見つからず、実際には試していないので、不明です
Q.広告のimpとか不正になりそうじゃない?
A.なるので連絡するようにとGoogleはいっている
Firebase TestLabでAndroidのテストを開始する | Firebase Test Lab
料金
Roboスクリプト
Roboテストの手順を書いたもの
AndroidStudioから操作のレコードベースで生成できる
やってみたが、重いわ思ったとおりのテストはしれくれないわで、全く使えなかった
Espressoのテストレコーダーのそうだが、レコード経由でなにかやるのは全くうまくいかない
だれかうまくいっている方がいましたら教えてください!
今回ふれていない内容
gcloudコマンドからの実行
CI
さいごに
Firebase Test Labを活用して安定稼働するアプリを実装しましょう!