Remote TestKitとNativeDriverの連携

概要

テスト自動化ツールであるNativeDrvierをRemote TestKit経由でもご利用いただけます。
NativeDriverとはAndroidのネイティブアプリケーションにより最適化されたテストフレームワークであり、このフレームワークとRemoteTestKitを組み合わせれば、様々な端末でネイティブアプリケーションの自動テストを行うことができます。
※本機能を利用いただくにはPC上にadbの設定がされている必要があります。
なお、特に指定のない場合、「コマンドラインツール」とは、Windowsならば「コマンドプロンプト」Macならば「ターミナル」を指します。
※また、本記事ではNativeDriverのチェックアウト・ビルドに必要な環境やeclipse等の導入・設定方法については割愛します。書籍やウェブ検索等で調べてみて下さい。

NativeDriverのダウンロードとビルド

まずはNativeDriverのソースをダウンロードします。GoogleCodeにあるGettingStartedAndroidからNativeDriverをチェックアウトします。(※途中、iphone用のソースチェックアウト時にユーザ名とパスワードを聞いてきますが、何も入力せずエンターを押下してください)

$ svn checkout http://nativedriver.googlecode.com/svn/trunk nativedriver

チェックアウトしてきたソースディレクトリに移動して、ビルドします。ビルドはantコマンドで行います。

$ cd nativedriver/android
$ ant

ビルドが成功すると、buildディレクトリ配下のようなファイル・ディレクトリが生成されているはずです。

$ cd build/
$ ls -la
合計 32816
drwxr-xr-x+ 1 testuser なし        0 7月  25 20:23 .
drwxr-xr-x+ 1 testuser なし        0 7月  25 20:23 ..
-rwxr-xr-x  1 testuser なし    15518 7月  25 20:23 client.jar
-rwxr-xr-x  1 testuser なし 14267411 7月  25 20:23 client-prejarjar.jar
-rwxr-xr-x  1 testuser なし  1764901 7月  25 20:23 client-standalone.jar
-rwxr-xr-x  1 testuser なし     7660 7月  25 20:23 common.jar
-rwxr-xr-x  1 testuser なし    76742 7月  25 20:23 server.jar
-rwxr-xr-x  1 testuser なし 15047644 7月  25 20:23 server-prejarjar.jar
-rwxr-xr-x  1 testuser なし  2407619 7月  25 20:23 server-standalone.jar

$

サンプルのインポート

チェックアウトしてきたNativeDriverのソースにはテストのサンプルコードとテストコードが同梱されていますので、こちらを使ってRemote TestKitの連携を試します。

Eclipseを起動し、サンプルコードとテストコードをインポートします。
インポートの大まかな流れは以下のようになります。

  • Eclipseのメニューから “File” -> “Import”をクリック
  • “General”->”Existing Projects into Workspace” を選択して[Next]ボタンをクリック
  • [Browse]ボタンをクリックして nativedriver/androidディレクトリ を指定
  • “Projects” に “android-test” と “simplelayouts” が追加されたことを確認して [Finish] ボタンをクリック

import sample code


インポートが完了すると、Package Explorerには以下のように表示されるはずです。


import sample code

サンプルへNativeDriverの組み込み

サンプルのアプリケーション、およびテストにNativeDriverを組み込みます。

サンプルアプリケーション「simplelayouts」のプロジェクトを右クリックしてプロパティを開き、左メニューから「Java Build Path」をクリックし、「Android 2.3.3(※)」,「server-standalone.jar」にチェックを入れて [OK] をクリックします。
(※)サンプルアプリケーション「simplelayouts」はAndroid SDKのバージョンがGettingStartedAndroidドキュメントの中で2.2 or laterと指定されているので、あらかじめAndroid SDK Managerから2.3.3用のパッケージをインストールしておいてください。

プロジェクトのビルドターゲットを2.3.3にしておきます。

import sample code


Java Build Pathを選択し、「Andorid2.3.3」と「server-standalone.jar」にチェックを入れて保存します。

import sample code


サンプルテスト「android-test」のプロジェクトを右クリックしてプロパティを開き、左メニューから「Java Build Path」をクリックし、「client-standalone.jar」と「JUnit3」にチェックを入れて [OK] をクリックします。


import sample code

Remote TestKitで端末をレンタル・設定

前述の通り、サンプルアプリケーション「simplelayouts」のBuild Targetを2.3.3と指定したので、Remote TestKitでも2.3.3の端末をレンタル・起動してから「端末の操作」を参考に、端末ウィンドウより[有効機能 - ADT・DDMS・adb]メニューを選択し、ADT・DDMS・adb連携を有効化します。コマンドラインツールを起動し、以下のコマンドを入力して接続している端末のデバイスIDを取得します。

adb devices

デバイスIDは以下のように返ってきます。下記の場合、デバイスIDは「optimus_bright_l-07c.appkitbox.com:52439」になります。

adb devices List of devices attached optimus_bright_l-07c.appkitbox.com:52439 device

次にポートフォワードを行うため、以下のコマンドを入力します。

adb -s [deviceID] forward tcp:54129 tcp:54129


アプリケーションのビルドとインストール

サンプルアプリケーション「simplelayouts」を右クリックして “Run as” -> “Android Application” を選択するとビルドおよびインストールが開始されます。


PC Chrome

※もし、インストールがtimeoutで失敗した場合はeclipseのメニューから[Window] -> [Preferences]を選択するとPreferencesダイアログが表示されるので、メニューの”Android”から”DDMS”を選択し、ADB connection timeout値を大きく(例:10000)して再度試してみて下さい。

Remote TestKitでレンタルした端末にアプリケーションがインストールされたことを確認したら、次のコマンドを実行しinstrumentationを有効にしてアプリを再起動します。

adb shell am instrument com.google.android.testing.nativedriver.simplelayouts/
com.google.android.testing.nativedriver.server.ServerInstrumentation


eclipseのlogcatに “Jetty started on port 54129″ とメッセージが出ていれば準備完了です。


テスト実行

サンプルテスト「android-test」を右クリックして “Run as” -> “JUnit Test” を選択するとテストが開始されます。

※本情報は掲載時点の情報となります