Blogスマートフォン用の表示で見るスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。Blog株式会社インテリジェントテクノロジーの技術情報ブログです。記事中のAppiumのドキュメントへのリンク先は削除されてしまったようです。その代わりに公式サイトのドキュメントが整備されています。【追記2014/7/16】Appiumの新しいバージョン(1.2.0)に関する記事を書きました。こんにちは、間藤です。弊社では、数年前にWebアプリケーションの自動テストツールを自前で作成して、いくつかのチームでは現在も利用しています。最近では、スマートフォンやタブレットなどのデバイスから利用することを想定したWebアプリケーション開発案件も徐々に増えており、現在のツールではニーズに対応しきれなくなってきました。いった背景もあって、モバイルデバイスの自動テストに関して、情報収集を行ってみましたので、今後数回に分けてなるべく詳しくレポートしてみたいと思います。2.0数年前、弊社の自動テストツールを開発するにあたり、予備調査としてSeleniumを調査したことがありました。結局その時は、Seleniumを利用することを見送ったのですが、個人的には有望なツールと考えていたので、今回もここから調査を開始することにしてみました。Seleniumはいくつかのプロジェクトに分かれています。Control(Selenium-RC)は、以前に私が調査したときからあったプロジェクトで、古い方式と言えます。Server)を経由してブラウザを操作するという方式です。Serverは、テスト対象のWebアプリケーションにJavaScriptを挿入することで、自動テストを実現しています。JavaScriptでの操作になるため、同一生成元ポリシーの制約を受けたりと、実用面にやや問題を抱えていました。WebDriverです。WebDriverは、もともとGoogleで開発されたものですが、2011年にSeleniumに統合されました。WebDriverは、W3Cが標準化を検討しています。http://www.w3.org/TR/webdriver/以下、公式ページからの抜粋です。Selenium-RCとのアプローチの違いについて述べられています。automation.つまり、ブラウザの拡張機能などを利用して、ブラウザ操作を実現する方式となっています。2.0と呼んでいます。2.0ネット上にSeleniumの情報を探すと、古いものはSelenium-RCについての解説だったりするので、区別して情報収集するよう注意が必要です。以下に、いくつか参考サイトを紹介しておきます。以降では、Seleniumそのものの説明はあまりしないつもりですので、これらのサイトを参考にしていただければと思います。2」入門モバイルデバイスへの対応状況Seleniumは自動テストのスタンダードになりつつあると考えていますが、モバイルデバイス向けの対応はどうなっているのでしょうか?以下のページが参考になります。Devices」という項があり、2013/12/16現在、wikiへのリンクが2つ用意されています。AndroidDriverIPhoneDriver説明は不要と思いますが、Android端末向け、iOS端末向けにそれぞれDriverが用意されているということがわかります。AndroidDriverWebViewを内蔵した専用アプリを端末にインストールして、そのアプリを使って対象のWebアプリケーションの自動テストを行います。Android端末にインストールされているブラウザ(デフォルトブラウザとかChromeとか)を操作する方式ではありません。wikiの記述に従えば動作確認できると思いますが、以下のブログ記事にも情報がありますので、参考にしてください。※AndroidDriverについては記事の後半に記載されています。appiumと書かれており、「DEPRECATED」になっているようです。将来的なサポートも期待できませんので、これを今から掘り下げていく意味はほとんどないでしょう。seleniumhq」の項を見ると、サーバーパーティ製のツールがいくつか紹介されています。今回私はこの中でAppiumに注目しました。今のところiOS、Android、FirefoxOSの3つのプラットフォームに対応しており、幅広く適用ができそうだと考えたからです。Mavericksで動作確認を行っていますので、以降に示す手順もMac上で確認したものになります。Appium本体は、Node.jsのパッケージですので、Node.jsがインストールされていることが前提です。npmコマンドでインストールします。appiumインストール時のバージョンは0.12.0でしたが、リリースが頻繁に行われているようで、動作確認を行っている間に0.12.3にまで更新されていました。バージョン更新を行わずに動作確認していたので、これからの記載は0.12.0に対するものになります。バージョンを更新してから動作確認をする場合は、その旨を書くようにします。GUI版Appiumも提供されています。Appium」というリンクが表示されます。このリンクからGUI版をダウンロードすることができます。コマンドベースでAppiumを利用するなら、GUI版のインストールは必須ではありません。テストスクリプトをNode.jsで書く場合は、wdパッケージが必要になるようです。wdAppiumがwdパッケージに依存しているわけではありませんので、これをインストールするかもオプションということになります。Bindingsを利用して記述します。各言語のAPIドキュメントも用意されています。テストスクリプトからAppiumに接続するような形態になりますので、例えばJavaであれば、RemoteWebDriverクラスを使うことになります。Protocolに従って行われます。Appiumを起動し、作成したテストを実行すれば、動作を確認することができます。自分でテストを書くとなると、手軽に動作確認できませんので、サンプルを利用しましょう。公式サイトのトップページには、「Examples」のリンクがあり、GitHubからサンプルを取得することができますが、こちらはサンプルのみです。GitHub」から辿って、appiumリポジトリをcloneしましょう。サンプルを動作させるのに必要な環境が一式整うからです。https://github.com/appium/appium.gitcloneできたら、cloneしたディレクトリに移動して以下のコマンドを実行します。SDKを事前にインストールしておく必要があります。./reset.sh実行にはかなり時間がかかると思います。これが正常終了しないと絶対に動作確認ができないというわけではありませんが、なるべく正常終了するまでトライしてください。iOSだけとりあえず試せればよい、という場合には、以下のようにパラメータ指定することで、時間短縮することが可能です。--iosちなみに、私はAndroid環境の構築で手間取りました。JAVA_HOMEとANDROID_HOMEといった環境変数が定義されてなかったり、antがインストールされてなかったりといった簡単に対応できるものもありましたが、一番困ったのはMavenのバージョンです。Appiumは、内部的にSelenroidというツールを利用するようなのですが(詳細は確認できていません)、これをビルドする際にMavenを利用しています。Mavenのバージョンが3.1系の場合、ビルドが失敗するという問題があるようです。https://github.com/selendroid/selendroid/issues/116私は、当初3.1.1をインストールしていたので、3.0.5に切り替えて対処しました。この情報に辿りつくまでかなり悩んでしまったので、正常終了するまで時間がかかってしまいました。テストを実行したいところですが、今回は概要編ということで、ここまでにしたいと思います。次回は、iOS編ということで、iOSシミュレータと実機上でネイティブアプリをそれぞれ自動実行するシナリオを確認したいと思います。Safari」の3回に分けて書く予定です。Blog|ブログを報告する。