続いて、テストプロジェクトのセットアップを行います。
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のプロジェクトレイアウトと同様)に従って、ディレクトリを作成します。このプロジェクトにはテストコードしか格納しないため、以下のディレクトリのみを作成すれば十分です。
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で書かれたテストスクリプトを配置してください。
Appiumサーバーを起動する筐体に、テストを実行する端末をUSBケーブルで接続するか、エミュレーターを起動して、adbで認識された状態にします。
その後、以下のコマンドを実行してテストスクリプトを実行してください(GradleのJavaプラグインの機能を使います)。テスト結果は「{テストプロジェクトのルート}/build/reports/tests/index.html」に出力されます。
$ cd {テストプロジェクトのルート} $ ./gradlew test
iOSアプリのテストを行う場合は、Appiumサーバーの起動前に下記の点に注意してください。
iOSシミュレーターを使用する場合、Appiumからの操作を許可するために、テスト実行に先立ち下記コマンドを実行する必要があります。このコマンドは一度だけ実行します。
$ sudo authorize_ios
またiOS 8以降を使用するときは、設定アプリを起動して「デベロッパ」を選択し、「Enable UI Automation」のスイッチをオンにする必要があります。これはシミュレーターではデフォルトでオン、実機ではオフになっていますので注意してください。
テストスクリプトは通常のPythonスクリプトとしても扱えますが、noseを利用して下記コマンドで実行できます。
$ nosetests
サンプルプロジェクトでは、Makefileにルールを追加してありますので、下記コマンドでサンプルのテストが実行できます。
$ make appium-test
今回は、Appiumについて、特徴や基本的な使い方としてGUI版のセットアップ、テストの実行の仕方を紹介しましたが、いかがでしたでしょうか。
次回は、Java言語でのテストスクリプトの書き方やAppiumサーバーのコマンドラインからの実行方法について解説します。
NTTソフトウェア株式会社勤務。数年前よりAndroidアプリケーション開発にかかわり始めたのを切っ掛けに、Androidにおける自動テストに興味を持つようになる。Android関連プロジェクトに対する技術支援業務に携りながら、Android向けのテストツールがもっと広く使われるようになることを願って、ブログにて技術情報を発信中
Blog:sumioの技術メモ
Twitter:@sumio_tym
Copyright © ITmedia, Inc. All Rights Reserved.