本稿は下記を参考にしています.
- SeleniumのUIテスト自動化をiOS/AndroidにもたらすAppiumの基礎知識とインストール方法、基本的な使い方
- Github - AndroidAppsTestAutomationSamples
Appiumは各ベンダ(Google, Apple)がリリースしているUI Testing Frameworkをラップした統一APIを提供してUIテストを可能にするもの.
これにより, iOSのテストケースをAndroidでも流用できるといったアドバンテージがある
(UI構成が違えばテストケースの流用は難しい)
AppiumがラップするUI Testing Frameworkは下記.
- iOS: Apple’s UIAutomation
- Android 4.2+: Google’s UiAutomator
- Android 2.3+: Google’s Instrumentation.
確認環境は下記.
- Android 5.0
- Appium 1.4.13
注意点
Appiumはプロダクトのバイナリ(.apk)があればテスト可能だが, テスト対象アプリで準備が必要な点がある.
Android4.4以降でWebViewをテストする場合はWebViewのデバッグオプションが, Android4.1以前で動作する場合はINTERNETパーミッションが必要になる.
WebView
Android4.4からWebViewはChromiumベースに変更された.
テスト対象アプリをKitKat以上 かつ WebViewをテスト対象に含む場合は下記を実施する必要がある.
// WebViewをテストする場合は下記をWebView使用前に実施しておくこと.
WebView.setWebContentsDebuggingEnabled(true);
参考:
- Remote Debugging on Android with Chrome
- Appium - AUTOMATING HYBRID ANDROID APPS
Apptium or Selendroid
Androidのバージョンによって動作するモードが異なる.
- Android 4.2+: Google’s UiAutomator
- Android 2.3+: Google’s Instrumentation. (Instrumentation support is provided by bundling a separate project, Selendroid)
これはAppiumが使用するライブラリのサポート範囲に依存している.
Selendroid modeで確認する場合, テスト対象のアプリにINTERNETパーミッションを宣言する必要がある.
<uses-permission android:name="android.permission.INTERNET" />
参考:
- Appium - ANDROID SUPPORT
- Appium - Notes
Launch Appium server
Appiumをダウンロードする.
今回はAppium 1.4.13を選択. ダウンロードしたらAppiumを起動.
参考: Appium GUI
Appium GUIで下記を実行してAppiumサーバを起動する.
- Android Setting(Droid icon) - App Path にテスト対象のapkのパスを入力
- Android Settingを閉じて Launch
TestCase
Appiumはテスト対象アプリの操作に特化したツールであるため, アサーションなどの機構は別で用意する必要がある(Productionコードは必要無い).
今回は別プロジェクト(module)を作成してJUnitでテストスクリプトを書いた.
テストコードに必要なライブラリは下記.
dependencies {
// Appiumクライアントライブラリを利用するための宣言
testCompile 'io.appium:java-client:2.1.0'
}
テストの実行結果はbuild/reports/tests
に出力される.
補足: io.appium:java-client:
は3.3.0がリリースされていたが, hamcrestなど依存ライブラリが変わっている様子. 今回は動作確認目的のため2.1.0で実施.
以上.