1. Qiita
  2. 投稿
  3. iOS

①Appiumを使ってみた【iOS編】

  • 75
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

あわせて読みたい:
②Appium+JUnitで自動テストを書いてみた【iOS編】
③Appiumでどこまで出来るか試してみた【iOS編】
④AppiumでWebアプリのテストを実機で実行する【iOS編】

1. はじめに

先日、モバイルアプリのUIテスト自動化ツール Appium のバージョン1.0がリリースされました。
これを機に、実際の開発現場で導入を検討している方も多いのではないでしょうか。

今回は、備忘録も兼ねて Appiumの環境構築 〜 サンプルコードの実行 までの手順を記述したいと思います。
 
 

2. 使用環境

PC

ソフトウェア バージョン
OS Mavericks (OSX 10.9.2)
XCode 5.1.1
Appium 1.0

実機

端末 バージョン
iPhone 5s iOS 7.1.1

 

3. 環境準備

インストール

1. node.jsをインストールする

ターミナルで以下のコマンドを実行します。

brew install node

または公式サイトからpkgファイルをダウンロードしてインストールします。
 
2. Appiumをインストールする

ターミナルで以下のコマンドを実行します。

npm install -g appium

※インストールに失敗する場合は、以下のコマンドを実行して/usr/localディレクトリに書き込み権限を付与してから、再度インストールしてみてください。

sudo chmod -R a+w /usr/local

※Appium自体をsudo権限でインストールしてしまうと、起動の度にsudo権限が必要になる(?)ようです。
 
3. Appium Client(WebDriver) をインストールする

ターミナルで以下のコマンドを実行します。

npm install wd

 
4. 関連モジュールをインストールする

以下のモジュールは直接Appiumとは関係ありませんが、後述のサンプルコード内で使用しているためインストールしておきます。

npm install chai
npm install chai-as-promised
npm install colors

 
5. 診断ツールを実行する

ターミナルで以下のコマンドを実行し、Appiumに必要なツール類が正しくインストールされたことを確認します。

appium-doctor --ios

コマンド実行後、iOS Checks were successful.と表示されればOKです。

 

設定

・AppiumからiOS Simulatorの使用を許可する

ターミナルで以下のコマンドを実行します。

sudo authorize_ios

 

サンプルコードの取得

・GitHubからサンプルコードを取得する

あらかじめ任意の作業ディレクトリに移動しておきます。

cd <ディレクトリ名>

続いて以下のコマンドを実行し、GitHubからファイルを取得します。

git clone git@github.com:appium/sample-code.git

または直接GitHubからZIPファイルをダウンロードしてきても構いません。
 
さて、これでAppiumを使用する準備が整いました。
続いて、サンプルコードを使用して自動テストを実行してみます。
 
 

4. テストコードを実行する(ネイティブアプリ)

Appiumの起動

・起動する

以下のコマンドを実行してAppiumを起動します。

appium &

コマンド実行後に、以下のメッセージが表示されれば準備OKです。

info: Welcome to Appium v1.0.0 (REV f0a00fab2335fa88cb355ab4dc43a9cd3f3236c0)
info: Appium REST http interface listener started on 0.0.0.0:4723
info: socket.io started

 
なお、Appiumには様々な起動オプションが用意されています。
下記にその一部を記載します。詳しくは公式ドキュメント(英語)を参照ください。

フラグ デフォルト値 説明
--app null .appファイルの絶対パスまたはアプリのBundleIDを指定 --app /abs/path/to/my.app
--ipa null .ipaファイルの絶対パスを指定 --ipa /abs/path/to/my.ipa
-q --quiet false 詳細ログを出力しない
-U --udid null 実機でテストする場合のUDID --udid 1adsf-sdfas-asdf-123sdf
-r --backend-retries 3 処理がタイムアウトした時にリトライする回数 --backend-retries 3
--no-reset false テスト終了時にシミュレータを初期化しない
-g --log null ログをファイルに出力する --log /path/to/appium.log
--log-timestamp false ログにタイムスタンプを表示する

 
・終了する

Appiumは終了するには、以下のコマンドを実行してnodeプロセスをキルします。

killall -9 node

 

テストの実行

今回は JavaScript で書かれたシンプルなテストコードを実行してみます。
 
あらかじめカレントディレクトリをサンプルコードがあるフォルダに移動しておきます。

cd appium/sample-code/examples/node/

続いて、以下のコマンドを実行しテストを実行します。

node ios-wd-raw.js

 
コマンドを実行すると、iOS Simulatorが起動してテストが実行されます。
使用されるアプリは、テストコード内のapp:に記述されたURLから自動的にダウンロードされるため、事前にインストールしておく必要はありません。

ios-wd-raw.js
var desired = {
    'appium-version': '1.0',
    platformName: 'iOS',
    platformVersion: '7.1',
    deviceName: 'iPhone Simulator',
    app: "http://appium.s3.amazonaws.com/TestApp6.0.app.zip",
    'device-orientation': 'portrait',
  };

 
もし、あらかじめインストールしてあるアプリを使用したい場合は、app:にBundleIDを記述します。

ios-wd-raw.js
app: "io.appium.TestApp"

なおその場合は、テスト終了後にシミュレータが初期化されないように--no-resetフラグを指定してAppiumを起動する必要があります。

appium --no-reset &

 

5. 実機でテストを実行する

次は、実機(iPhone5s)を使用してテストを実行してみたいと思います。
 
1. 実機にアプリをインストール

実機でテストする場合は、あらかじめアプリを実機にインストールしておく必要があります。
なお、Appiumで使用できる.ipaファイルは、Developmentプロファイルで署名されたものに限られるので注意が必要です。

Appiumで使用可能なプロビジョニングプロファイルの種類

種類 主な用途 Appium使用可否
Development 開発用
Ad Hoc テスト用 ×
App Store App Storeリリース用 ×
Enterprise 企業の社内配布用 ×

 
サンプルコードに同梱されているテストアプリのソースをビルドして実機にインストールします。

以下はXcodeのGUI上からビルドを行う手順です。

  1. MacにiPhoneを接続します。

  2. アプリのプロジェクトをXcodeで開きます。
    /appium/sample-code/apps/TestApp/TestApp.xcodeproj

  3. Xcode画面上部のビルドターゲットで、接続したiPhoneを選択します。

  4. メニューのProduct -> Runを実行し、アプリをビルド&インストールします。

 
2. 実機で動作するようにテストコードを一部修正

テストコードを以下のように変更します。

  • app:の値をURLからアプリのBundleIDに変更

  • udid:を追加し、使用する実機のUDIDを記述

ios-wd-raw.js【修正後】
var desired = {
    'appium-version': '1.0',
    platformName: 'iOS',
    platformVersion: '7.1',
    deviceName: 'iPhone Simulator',
    app: "io.appium.TestApp",
    udid:'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', 
    'device-orientation': 'portrait',
  };

なおこれらの値は、直接テストコード内に記述する以外にAppium起動時のフラグでも同様の設定を行うことができます。

 
3. テストコードを実行

テストの実行方法はシミュレータの時と同じです。
以下のコマンドを実行し、テストを実行します。

node ios-wd-raw.js

iPhone上でアプリが自動的に立ち上がり、テストが実行されれば成功です。