SeleniumのUIテスト自動化をiOS/AndroidにもたらすAppiumの基礎知識とインストール方法、基本的な使い方スマホ向け無料システムテスト自動化ツール(8)(4/4 ページ)

» 2015年04月27日 05時00分 公開
[外山純生テスト自動化研究会(STAR)/Androidテスト部]
前のページへ 1|2|3|4       

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

 続いて、テストプロジェクトのセットアップを行います。

 Appiumは、テスト対象アプリの操作の自動化に特化しており、テスト対象アプリの状態が期待通りかどうか確認するAssertの機能や、その結果を出力する機能などは提供していません。そのため、Appiumクライアントライブラリと共に、テストフレームワーク(JavaではJUnit 4、RubyではRSpecなど)を使ってテストスクリプトを書けるようにします。

 テストスクリプトを書く言語に対応していれば、テストフレームワークは好きなものを使うことができますが、本稿では、Android向けに用意したサンプルプログラムと同じく、Java・JUnit 4の組み合わせでテストを書く場合のセットアップ方法を説明します。また、テストスクリプトのビルドにはGradleを使います。

 他のプログラミング言語でテストスクリプトを書く場合のセットアップ方法については、List of client libraries with Appium server supportを参照してください。

ディレクトリの作成

 最初に、テストプロジェクトを格納するために空のディレクトリを作成します。テスト対象アプリのプロジェクトとは独立した場所に作成してください。テスト対象アプリの操作はAppiumサーバーが担うため、テスト対象プロジェクトの参照は不要です。

 ここで作成したディレクトリを「テストプロジェクトのルートディレクトリ」と呼び、以降では「{テストプロジェクトのルート}」と記載します。

 次に、GradleのJavaプラグインが想定するプロジェクトレイアウト(Mavenのプロジェクトレイアウトと同様)に従って、ディレクトリを作成します。このプロジェクトにはテストコードしか格納しないため、以下のディレクトリのみを作成すれば十分です。

  • {テストプロジェクトのルート}/src/test/java

ファイルの配置

 Gradleのビルド設定ファイル「build.gradle」を、「{テストプロジェクトのルート}」ディレクトリに作成します。作成するファイルの内容は以下の通りです。

apply plugin: 'java'
 
// JavaソースコードのエンコーディングをUTF-8とする。
def defaultEncoding = 'UTF-8'
tasks.withType(AbstractCompile).each { it.options.encoding = defaultEncoding }
 
repositories {
    mavenCentral()
}
 
dependencies {
    // Appiumクライアントライブラリを利用するための宣言
    testCompile 'io.appium:java-client:2.1.0'
}

 「dependencies」ブロックには、テストスクリプトが依存する(利用する)ライブラリを宣言します。

 最低限、上記のように、Appiumクライアントライブラリを表す「'io.appium:java-client:2.1.0'」を指定してください。AppiumクライアントライブラリにJUnit 4への依存関係が宣言されているため、明示的なJUnit 4の宣言は不要です。

 次に、テストスクリプトを配置します。「{テストプロジェクトのルート}/src/test/java」配下に、Javaのパッケージ階層に応じて、Javaで書かれたテストスクリプトを配置してください。

テストの実行(Android)

 Appiumサーバーを起動する筐体に、テストを実行する端末をUSBケーブルで接続するか、エミュレーターを起動して、adbで認識された状態にします。

 その後、以下のコマンドを実行してテストスクリプトを実行してください(GradleのJavaプラグインの機能を使います)。テスト結果は「{テストプロジェクトのルート}/build/reports/tests/index.html」に出力されます。

$ cd {テストプロジェクトのルート}
$ ./gradlew test

テストの実行(iOS)

 iOSアプリのテストを行う場合は、Appiumサーバーの起動前に下記の点に注意してください。

  • Appium Desktop AppおよびAppiumサーバーは、Mac OS X上で実行する
  • Appium Desktop Appからサーバーを起動する場合、iOS(Appleロゴ)ボタン下のラジオボタンを選択してからLaunchボタンをクリックする

 iOSシミュレーターを使用する場合、Appiumからの操作を許可するために、テスト実行に先立ち下記コマンドを実行する必要があります。このコマンドは一度だけ実行します。

$ sudo authorize_ios

 またiOS 8以降を使用するときは、設定アプリを起動して「デベロッパ」を選択し、「Enable UI Automation」のスイッチをオンにする必要があります。これはシミュレーターではデフォルトでオン、実機ではオフになっていますので注意してください。

 テストスクリプトは通常のPythonスクリプトとしても扱えますが、noseを利用して下記コマンドで実行できます。

$ nosetests

 サンプルプロジェクトでは、Makefileにルールを追加してありますので、下記コマンドでサンプルのテストが実行できます。

$ make appium-test

次回はテストスクリプトの書き方について

 今回は、Appiumについて、特徴や基本的な使い方としてGUI版のセットアップ、テストの実行の仕方を紹介しましたが、いかがでしたでしょうか。

 次回は、Java言語でのテストスクリプトの書き方やAppiumサーバーのコマンドラインからの実行方法について解説します。

著者紹介

外山 純生

テスト自動化研究会(STAR)Androidテスト部

NTTソフトウェア株式会社勤務。数年前よりAndroidアプリケーション開発にかかわり始めたのを切っ掛けに、Androidにおける自動テストに興味を持つようになる。Android関連プロジェクトに対する技術支援業務に携りながら、Android向けのテストツールがもっと広く使われるようになることを願って、ブログにて技術情報を発信中

Blog:sumioの技術メモ

Twitter:@sumio_tym


前のページへ 1|2|3|4       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

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

メールマガジン登録

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