連載
» 2014年10月07日 18時00分 UPDATE

スマホ向け無料システムテスト自動化ツール(2):Android SDK標準の何でもテストツールuiautomatorの基本的な使い方 (1/3)

本連載では、スマートフォン(Android/iOS)アプリ開発における、システムテストを自動化するツールを紹介しています。今回は他者の署名したアプリもテストできる、Android SDK標準の何でもテストツールuiautomatorの特徴や基本的な使い方について。

[外山純生,テスト自動化研究会(STAR)/Androidテスト部]
「スマホ向け無料システムテスト自動化ツール」のインデックス

連載目次

他者の署名したアプリもテストできるuiautomatorとは

 uiautomatorは、Android SDKに標準で含まれているテスト自動化ツールです。Apache License, Version 2.0のライセンスで提供されています。

 uiautomatorの主な特徴は以下の通りです。

  • Android 4.1以上で実行できる(端末の回転およびスクリーンショット撮影には、Android 4.2以上が必要)
  • テストスクリプトはJava言語で記述
  • 他者の署名した(Google Play Storeからダウンロードしたものも含む)アプリもテストできる
  • すなわち、テスト対象の端末上にインストールされ、動作しているアプリであれば、何でもテストできる

 特に、最後に挙げた特徴はuiautomator最大のセールスポイントといえます。一連のテストで、テスト対象アプリでないものを操作したいケース(例えば、設定アプリでBluetoothやWiFiをON/OFFするなど)にも対応できます。

 テスト対象のAndroidバージョンを4.1以降に絞ることができ、かつ、他者が作成したアプリをテスト(操作)したいのであれば、uiautomatorは魅力的な選択肢の1つになるでしょう。

コラム「monkeyrunnerもあるが……」

 他者の署名したアプリをテストでき、Android SDKに標準で含まれているテストツールとしては、他に「monkeyrunner」がよく知られています。

 monkeyrunnerにはAndroid 4.1未満でも動作するという利点がありますが、テストスクリプトを書くときに、「座標(x=10,y=100)をタップする」のように、画面上の座標(dp単位ではなくpx単位)で操作対象を指定する必要があります。

 そのため、「OKボタンをタップする」といった単純なテストスクリプトであっても、以下のようなケースが発生するたびに修正が必要となってしまい、使い勝手が良くありませんでした。

  • テスト対象アプリの画面レイアウト修正により、操作対象の座標が変化してしまった場合
  • 画面サイズの異なる端末でテスト対象アプリを動作させたところ、操作対象の座標が変化してしまった場合

uiautomatorテストプロジェクトのセットアップ

 ここから先では、さまざまなコマンドやディレクトリが登場します。説明を簡単にするために以下の前提で解説します。

  • Android SDKをインストールしたディレクトリを「{ANDROID_HOME}」と記載
  • Android SDKのコマンドを簡単に実行できるように、以下がコマンドサーチパス(PATH環境変数)に追加されているものとする
    • {ANDROID_HOME}/tools
    • {ANDROID_HOME}/platform-tools
  • ディレクトリの区切り文字は「/」で表記。Windowsの場合は「\」に読み替え
  • Apache Antのバージョン1.8以上を導入し、antコマンドを実行できるようにしておく
  • テストスクリプトの編集にEclipseを利用する場合には、EclipseでJavaプログラムを開発できるようにしておく

 Apache Antの導入方法については以下の記事を参考にしてください。

テストプロジェクトを作成する

 Android SDKによって提供されているandroidコマンドを使うと、uiautomatorテストプロジェクトを作成できます。あらかじめ、テストプロジェクトをビルドするときのターゲットとなるSDK Platformを、Android SDK Managerを使ってインストールしておいてください。

 例えば、「uiautomator」ディレクトリ配下にテストプロジェクトを作成する場合には、以下のコマンドを実行します。

$ android create uitest-project -p uiautomator -n UiautomatorSample -t android-19

 ここで、-pオプションにはテストプロジェクトを作成するディレクトリへのパスを、-nオプションにはプロジェクト名称(ビルド時に生成されるjarファイル名などに使われます)を、それぞれ指定します。

 また、-tオプションには、テストプロジェクトをビルドするときのターゲットSDKを指定します。

コラム「android list targetコマンド」

 「android create uitest-project」コマンドの-tオプションに指定できる値を調べるには、「android list target」コマンドを使います。

 コマンドを実行すると指定できるターゲットの一覧が表示されますので、「id:」欄に記載されている文字列を-tオプションに指定してください。例えば、以下の出力例では、4かandroid-19を指定すればAndroid 4.4.2を指定したことになります。

id: 4 or "android-19"
     Name: Android 4.4.2
     Type: Platform
     API level: 19
     Revision: 3
     Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in
         Tag/ABIs : default/armeabi-v7a, default/x86

 コマンド実行が成功すると、以下のファイルが生成されます。

ファイル名 内容
build.xml テストスクリプトをビルド・インストールするためのApache Antのビルドスクリプト
local.properties {ANDROID_HOME}が記録されているプロパティファイル
project.properties -tオプションで指定したターゲットSDKが記録されているプロパティファイル
src/ テストスクリプトを格納するためのディレクトリ。記述したテストスクリプトはJavaのパッケージに対応したサブディレクトリの下に保存

 テストスクリプトのビルド・インストール・実行の方法は「テストの実行」の章で説明します。

 なお、前回の「システムテスト自動化の基礎知識とMonkeyTalkの使い方」で紹介したサンプルアプリと同じリポジトリの「uiautomator」ディレクトリに、実際に動作するテストスクリプトのサンプルを公開しました。併せて参考にしてください。

 サンプルアプリのインストール方法については前回記事を参照してください。加えて、build.xmlなどを生成するために、本節で紹介した以下のコマンドをプロジェクトルートで実行してください。

$ android create uitest-project -p uiautomator -n UiautomatorSample -t android-19

 環境が構築できたので、テストスクリプトの記述のために知っておくべきことを、コード例を交えて説明します。

テストプロジェクトを読み込む

 テストスクリプトの編集には、任意のエディターを利用できますが、Eclipseを使う場合には、以下の手順で作成したテストプロジェクトを読み込んでください。

 まず、Eclipseのメニューから[File]→[New]→[Java Project]を選択します。

 次に、[Use default location]のチェックを外し、作成したテストプロジェクトのディレクトリを指定し、[Next]ボタンを押します。

uiautomator_5.png [Create Java Project]ダイアログ

 [Java Settings]ダイアログが表示されるので、[Libraries]タブに切り替え、以下のライブラリを追加し、[Finish]ボタンを押します。成功すればPackage Explorerに読み込んだテストプロジェクトが表示されます。

uiautomator_6.png [Java Settings]ダイアログ
  • 「JUnit3 ([Add Library...]→[JUnit]から選択)
  • 「{ANDROID_HOME}/platforms/{ターゲットSDKに対応するディレクトリ}」にあるandroid.jarとuiautomator.jar([Add External JARs...]から選択)

 最後に、[Package Explorer]でテストプロジェクトを選択した状態で、メニューから[Project]→[Properties]を選択します。[Resources]→[Text file encoding]の値を「UTF-8」に設定します。

       1|2|3 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。