モバイルアプリのテスト自動化ツールであるAppiumとCalabashに関していろいろ調べたのでメモとして記載します。
もし加筆・訂正すべき情報があればコメントいただけるとうれしいです。
Appium・Calabash共通
サポート環境
- iOS, Android両方に対応(AppiumのみFirefoxOSも対応)
- シミュレータ, 実機どちらにも対応
仕組み
どちらも、アプリのテストツールをラップするサーバを起動させ、そのAPI経由でアプリを操作する仕組み。
テスト自動化ツール
- iOS - UI Automation
- Android - UiAutomator (もしくはInstrumentation)
クラウド
- AWS Device Farmで使用可能
Appium
動作の仕組み
開発PC上で、SeleniumのWebDriver JSON wire protocolに準拠したAPIを持つサーバを起動させ、そのAPIを経由してアプリを操作する。
記述言語
多くのプログラミング言語に対応
http://appium.io/slate/en/master/?ruby#list-of-client-libraries-with-appium-server-support
メリット
- テスト用に特別にビルドする必要がなく、リリース相当のものでテストできる。
- GUIツールが使いやすい。Inspectorで操作したいパーツを確認しながら、テストコードを生成できる。
デメリット
- テストシナリオの作成・編集・解読にプログラミングスキルが必要。
Calabash
動作の仕組み
シミュレータ・実機側でサーバを起動させ、そのAPI経由でアプリ操作を行う。iOSの場合はアプリに組み込まれたcalabash.frameworkがCalabash Serverを起動する。Androidの場合はInstrumentation Test Serverアプリがインストールされる模様。cucumberコマンドを実行すると、テストシナリオに従ってAPIが呼ばれ、テストが実行される。
記述言語
- Gherkin https://cucumber.io/docs/reference
- 各テストステップのカスタマイズにはrubyの知識が必要
- 他の言語でも書けてもよさそうだが、ドキュメントが見つからない。
メリット
- テストシナリオの可読性。Gherkinはプログラマでなくても読みやすい。その気になれば日本語でも書ける。そのまま検査仕様書できるかも?
Scenario: Example steps
Given I am on the Welcome Screen
Then I swipe left
And I wait until I don't see "Please swipe left"
And take picture
- Gherkinの解釈結果はカスタマイズできるため、AndroidとiOSでそれぞれの解釈結果を用意することで、両OSで共通のテストシナリオを使用できる。
デメリット
- テストシナリオを作成するのが難しい。このボタンはどうやったら指定できるか?等の確認にはCalabashが用意するCLIを使用する必要あり。
- iOSではCalabash用に特別ビルドを行う必要がある。通常のTargetとCalabash用Targetの同期を取らないといけない。TargetとSchemeが自動生成されるのでWorkspaceが汚れる。
その他
Calabashで困ったこと
- OSアップデート直後はうまく動作しなくなる。
- 安定して動いてくれないことがある。特にUIAlertView関係。
- 日本語入力がうまくできない(Appiumはできる)。
!!!: Appiumは未確認なだけで同じような問題はあるかもしれません。
参考リンク
- スマホ向け無料システムテスト自動化ツール(8):SeleniumのUIテスト自動化をiOS/AndroidにもたらすAppiumの基礎知識とインストール方法、基本的な使い方 (1/4) - @IT http://www.atmarkit.co.jp/ait/articles/1504/27/news025.html
- 宇大を出たけれど: iOSのテストにおいてのAppiumとCalabashの比較(Comparing the Appium with the Calabash in the iOS test) http://utsunomiya-university.blogspot.jp/2014/04/iosappiumcalabash.html
- 七転び八起きなAppiumを使ったモバイルテストのたしなみ - Qiita http://qiita.com/Kazu_cocoa/items/115e162133ac0bbdbce6
- スマホ向け無料システムテスト自動化ツール(4):iOS/AndroidにCucumberのBDDをもたらすテストフレームワークCalabashの基礎知識とインストール (1/3) - @IT http://www.atmarkit.co.jp/ait/articles/1412/16/news043.html