UIAutomator2.0がリリースされていた

3月13日、以下の通りAndroidのUIAutomator 2.0がリリースされていたのですね。

uiautomatorは、AndroidのAccessibility機能やその拡張を介して、インストールされた様々なapkを操作するフレームワークでした。そのため、例えばリリース用apkに対してシナリオテストを自動化するときなんかに使います。例えば、AppiumはAndroidに対してはこのuiautomator1.0を利用してテストを実施することをしています。

uiautomatorあらため、UI Automator 2.0の新しいところは、Instruments経由でUiElementsなどを使えるようになったことらしいです。これにより、./gradlew connectedCheck なんかのコマンドでUI Automatorによるテストを実施できるようになったとか。

まだASOPには公開されていませんが、Appiumのメンバらも公開されたら良さそうなら統合とかするでしょうし、DroidDriverとももしかすると競合するところがあるのかもしれません。

2014年12月のEspresso2.0のリリースとそれに伴うJUnit4の提供、UI Automatorの更新と、比較的テストツールの充実が図られていて良い感じですね。

Testing Support Libraryが提供する大きな機能

  1. AndroidJUnitRunner: JUnit 4-compatible test runner for Android
  2. Espresso: UI testing framework; suitable for functional UI testing within an app
  3. UI Automator: UI testing framework; suitable for cross-app functional UI testing across system and installed apps

AndroidJUnitRunner

Require Android2.2(API Level8) or higher

JUnit4のサポート、@ReureiesDevice、@SdkSupress、@SmallTestなどのアノテーション、instrumentsの並列実行などを提供しています。

Espresso

Requires Android 2.2 (API level 8) or higher.

  • Flexible APIs for view and adapter matching in target apps. For more information, see View matching.
  • An extensive set of action APIs to automate UI interactions. For more information, see Action APIs.
  • UI thread synchronization to improve test reliability. For more information, see UI thread synchronization.

Espressoは、アプリ単体のテストをサポート。

UI Automator

Requires Android 4.3 (API level 18) or higher.

  • A viewer to inspect layout hierarchy. For more information, see UI Automator Viewer.
  • An API to retrieve state information and perform operations on the target device. For more information, see Access to device state.
  • APIs that support cross-app UI testing. For more information, see UI Automator APIs .

UI Automatorは、複数のアプリをまたいだテストまで実施可能。

例えば、複数アプリで連携して何かする、という動作を自動化するにはEspressoではなくUI Automatorを使う必要があります。私は、Appiumを使って同様のテストを構築していますが、UI Automator 2.0を使うことでInstruments越しにそれができるようになるのですね。

あと、APIを眺めるとわかるのですが、UI Automatorはフルで機能を使おうとするとAPI Level 18以上が必要になります。そのため、当面はuiautomator1.0や、Appiumなどによりこの機能は代替されそう。

UiObjectやUiScrollable、UiDeviceとかとか、uiautomatorの頃のものがそのまま持ってこられているので、既存のuiautomatorとのIFは保持されてそうな印象。

iOSはUIAutomationとInstruments、AndroidはUIAutomatorとInstrumentationと、大文字の使い方も似てきてややこしさをまた増してきました。が、モバイル界隈もOSの成長とともにそのテストツールの成長にも手が伸びてきた印象があって、面白くなりそうですね。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中