自動Android UIテストのためのGoogleストラテジー
Googleテスト部門のソフトウェアエンジニアであるMona El Mahdy氏はブログ投稿 で“ユニットテストとは何でもユニットテストが可能であるべき”と述べ、Androidアプリケーションのユーザインタフェース(UI)におけるユニットテスト方法をいくつか提案している。Mahdy氏は一般的なユニットテスト用にRobolectric とAndroid StudioGradle plug-in を、UIテストの作成、実行用にEspresso や UI Automator を薦めている。
End-to-End (E2E) テスト UIテストへの最初のアプローチはE2EだとMahdy氏は言う。このテストはAndroidアプリケーションと全ての関連するバックエンドシステムを起動することで実際のシナリオにおけるUIテストを可能にする。これらのテストを繰り返し実行することは難しい。なぜなら“ネットワーク設定や実サーバ認証、システムサイズ、その他もろもろ沢山の値” が原因で“安定したE2Eテストのデバッグ” が困難だからだ。これらの課題を単純にするために、Mahdy氏は新たなテスト・ストラテジを提案している。
hermeticサーバを使ったテスト hermeticサーバ は外部から隔離されたサーバで、単一のマシン上でローカルにネットワーク接続なしに動作している。他のサーバへの接続はディペンデンシー・インジェクションを経たランタイム上で提供される。必要な静的ファイルは当該サーバに同梱されており、必要があればデータストアへの応答リクエストは、あたかもローカルファイルもしくはメモリ内データであるように疑似化される。その他、バックエンドサーバからのレスポンス・シーケンス記録をhermeticサーバへ提供するオプションがある。
テスト目的のためにhermeticサーバはテスト対象のシステム(SUT: System Under Test) と同じAndroidエミュレータが動作しているマシン上でローカルに動作する。テスト実行をスピードアップし、時折発生するネットワーク接続関連の断片化を排除するには、クライアントアプリがバックエンドと同期しているかどうかを確認するための個々の結合テストが必要だ。このため、Google+チームはクライアントアプリとバックエンドサーバ間の正しい送信シーケンスを含むことを意味する一対の“ゴールデン” リクエスト/レスポンスファイルを使う。後でゴールデン・レスポンスファイルと比較するため、ゴールデン・リクエストファイルは再生され当該サーバから受信する全てのレスポンスから生成される。
E2Eテストよりhermeticサーバを使う方がよいが、デバッグはなおも簡単ではないしhermeticサーバはコミュニケーションにおいて断片化の要因になる、とMahdy氏は言う。そこで彼女はさらなる改善を提案する。
Dependency Injection (DI)の活用 いくつかのモジュールを疑似モジュールと入れ替えるDIをテストに使うによりモジュールアプリケーションの設計が可能となる。ネットワークモジュールを通してhermeticサーバとお話をする代わりに、本アプリは全てのリクエストに対する応答を提供する疑似ネットワークモジュールと通信する。これにより、UIテストはさらに早くなり安定化する。Mahdy氏が薦めるDIはDaggerだ。
複数ライブラリ Androidアプリケーションが大きくなった場合は、より小さなコンポーネントのモジュールやライブラリ内のパッケージビューへ分けることをMahdy氏は提案する。これにより、それぞれのコンポーネントが別々のDIや疑似モジュール、テストによって開発、テスト可能となる。結合テストは全てのアプリケーション動作を確認するために必要とされる。本アプローチはテスト作業をさらにスピードアップさせる。
最後にMahdy氏は“UIの部分テストはE2Eよりも格段に早くなり99%以上安定した。早く安定したテストは開発者の生産性を大幅に向上させる”と結論付けた。
特集コンテンツ一覧
実例で学ぶGS Collections – Part 2
Donald Raab 2014年11月20日 午後8時3分
実例で学ぶGS Collections – Part 1
Donald Raab 2014年10月23日 午前2時24分
プロジェクトインセプション - 協力体制を作るミーティングの方法
James Bayer 2014年10月14日 午後7時57分
カンバンはどのように動作するか
Amr Noaman Abdel-Hamid 2014年9月7日 午後7時43分
自己組織化チームはなぜ必要か?
Sigi Kaltenecker and Peter Hundermark 2014年8月31日 午前2時2分
効果的なテストの文化を創る
Wes McClure 2014年8月31日 午前1時54分
こんにちは
コメントするには InfoQアカウントの登録 または ログイン が必要です。InfoQ に登録するとさまざまなことができます。アカウント登録をしてInfoQをお楽しみください。
あなたの意見をお聞かせください。