Android, iOSでGUIテストを自動化するためのAppium [概要編]

  • 33
    いいね
  • 0
    コメント

フロントエンド開発のテストを効率化したいと考えている今日、各種ブラウザ上でGUIテストの自動化ができるSelenium WebDriverがあるが、SP(iPhone, Android)でGUIテストを行う場合はAppiumが使えるようなので、とりあえず概要だけ調べてみた。

この記事で書かない事

  • Selenium WebDriverについて
  • Appiumの環境構築方法について

Appiumとは

Appium is an open source, cross-platform test automation tool for native, hybrid and mobile web apps, tested on simulators (iOS, FirefoxOS), emulators (Android), and real devices (iOS, Android, FirefoxOS).

公式サイトから抜粋

Appiumとは、ネイティブ型およびハイブリット型モバイルアプリ向けに開発されたテスト自動化を実現するためのフレームワーク。Appiumを使用する事でiOS、Android端末上でテストプログラムを実行し、GUIテストを自動化する事ができる。

元々、Selenium WebDriverには、iPhoneDriver、AndroidDriverというWebViewを元にしてテストするDriverがあるが、今はメンテナンスも終了しているため、使用は推奨されていない。

iOS、Androidをテストする場合はAppiumの他にもios-driverSelendroidといった外部プロジェクトで開発されたツールを利用する事ができ、Seleniumプロジェクトでも上記のツールを利用する事が推奨されている。(次期バージョンのSelenium3で上記ツールとの互換性を正式に持つ予定との事)

DEMO

Appiumを選ぶ理由

前述のツールのうち、コミュニティの大きさ、バージョン更新頻度からするとAppiumがデファクトスタンダードになりつつある?

以下、「Seleniumのモバイルテストは今どうなっているのか」から抜粋

Appiumコミュニティの参加者は1471人と、ios-driverコミュニティの61人、Selendroidコミュニティの139人と比較しても非常に規模が大きくなっています8 。本家Seleniumユーザーコミュニティの15846人9 と比べると10分の1ですが、にも関わらず直近の投稿数はSeleniumユーザーコミュニティをしのぐ程になっています。機能追加やバグ修正も活発で、バージョンナンバーはこれまで0.xxでしたが、間もなくバージョン1.0のリリースが見込まれています。

Appiumの特徴

  • Android 2.3.3以降、iOS 6.0以降に対応している
  • Webブラウザーを使ったテストの自動化で広く利用されているSelenium WebDriver(「Selenium 2」とも呼ばれます)と、ほぼ同じ書き方でスマートフォンアプリのテストスクリプトを書くことができる
  • Ruby、Python、Javaをはじめとした、さまざまなプログラミング言語でテストスクリプトを書くことができる
  • 比較的古いAndroidバージョンで動作させるためにSelendroid modeに切り替える事が出来る

Webアプリの自動テストにSelenium WebDriverを利用しているテストエンジニアが、少ない学習コストで、AndroidやiOSのアプリの自動テストにも着手できるメリットがある。

Appiumのアーキテクチャ

こちらの写真の通り、PC上に立ち上げているAppiumサーバーを介して、iOS・Androidプラットフォーム標準のデバッグ機能を利用する事でアプリケーションを操作する。

iOS(iPhone)をテストするにはMacが必要になる。 ただし、Mac上にAppiumServerを立ち上げてリモートアクセスするオプションはあるらしい。

Appiumの使用条件

iOS

  • Mac OSX 10.7以上
  • XCode 4.5以上 (Command Line Toolsをインストールしていること)

Android

  • Mac OSX 10.7以上
  • Windows 7以上
  • Linux
  • Android SDK 16以上(SDKが16未満の場合は、Selendroid modeを利用すること)

参考

概要は以上ですが、Windows+Node.jsで環境構築する方法は後日載せたいと思います。