Google Espresso:クラウドのAndroid UI用の高速自動化テストフレームワーク

1591 ワード

GoogleはEspressoをオープンソースし、Android自動化テストフレームワークであり、テスト担当者がクラウド内のx 86マシンのマルチスレッド環境でテストを実行し、UIテストに関する同時問題を解決した.
Androidデバイスの数と種類が多いため、実際のデバイスでテストを実行するのに時間がかかり、コストが高い.1つの解決策は、シミュレータ上でテストを実行することです.シミュレータは、さまざまなOSバージョン、画面サイズ、メモリ制限をサポートする制御可能な環境です.この方法はほとんどのコードBugをキャプチャすることができ,残りのBugは実際のデバイステストと人工テストに残して発見することができる.
シミュレータの問題は実行速度であり,シミュレーションしたARM CPU上でAndroidを実行することがボトルネックである.この問題を解決するために、Googleはx 86ハードウェア上で直接実行できるAndroidバージョンを作成し、VM加速を使用しています.もう一つのボトルネックはAndroidの起動時間です.この問題は、OSスナップショットをキャプチャし、スナップショットを実行することによって解決されました.この方法は、所望のOSおよびアプリケーション構成を短時間で提供することができる.Googleは今年3月、この方法で8200万回のAndroidテストを完了した.
Nexus 4とシミュレータでのテストを比較すると,後者は実際のデバイスでのテスト時間の65%を必要とし,テストを完了することが分かった.そのため、良いシミュレータは自動化テストの問題を解決したようです.しかし、もう一つの足かせがある.自動化テストはAndroidのInstrumentation APIを使用し、これらのAPIの呼び出しはUIスレッドとは異なるスレッドで実行されるため、自動化方法を使用してユーザーインタフェースをテストすると深刻な同時問題が発生し、不一致で信頼できないテスト結果が発生します.Googleのこの問題に対する解決策はEspressoであり、UIテストをマルチスレッド環境で安全に実行し、テストの作成に関するテンプレートコードの大部分を削除できるテストフレームワークである.Espressoは、電話、テレビ、スマートメガネ、自動車など、さまざまなモバイル機器にまたがって動作することができます.また、異なる画面サイズとメモリサイズ、複数のAPIバージョン、および異なるネットワークにわたって動作することもできます.Espressoのバックグラウンドチームによると、彼らのソリューションはAndroidとアプリケーションの99%のBugをキャプチャし、実際のデバイステストと人工テストに少数のBugを残し、全体のテスト作業量を減らした.
次の例は、Espressoブレークスルービューに表示されないテストの例です.

onView(withId(R.id.bottom_left)).check(matches(not(isDisplayed())));

読者は、ここで他のテスト例を見つけることができます.
現在、Espressoは開発者のプレビュー状態で、Google Codeで提供されています.しかし、十分に成熟し、安定した後、Android SDKに移行することを考えています.GoogleはEspressoを使用して、G+、Maps、Driveなど、独自の30以上のアプリケーションをテストしました.
Google Espresso:Fast Automated Android UI Testing in the Cloud