本連載では、AndroidおよびiOSアプリ開発における、システムテストを自動化するツールを紹介していきます。今回は、オープンソースのモバイルテスト自動化ツール「Appium」の特徴やインストール方法、基本的な使い方を説明します。
Appiumは、Sauce Labsが中心となって開発している、オープンソースのテスト自動化ツールで、Apache License, Version 2.0で公開されています。
Appiumの主な特徴は以下の通りです。
Webアプリの自動テストにSelenium WebDriverを利用しているテストエンジニアが、少ない学習コストで、AndroidやiOSのアプリの自動テストにも着手できる、という点がAppiumを採用するメリットといえます。
Appiumは、バージョン1.0を境に、テストスクリプトの書き方(API仕様)が大きく変更されています。
そのため、バージョン1.0未満を前提に書かれたドキュメント(特にサンプルコード)は、最新版では動作しない可能性がありますので、ご自分で調査される際には十分注意してください。
以降では、本稿執筆時点におけるGUI版の最新バージョン(Mac OS X向けは1.3.4、Windows向けは1.3.4.1)を前提に解説していきます。
Appiumは、Selenium WebDriverのRemoteWebDriverとほぼ同様なアーキテクチャを採用しており、クライアント/サーバー型の構成となっています。
クライアントとサーバーの間はMobile JSON Wire Protocolで通信を行います。
「Mobile JSON Wire Protocol」は、Selenium WebDriverで採用されている「JSON Wire Protocol」を拡張したもので、HTTPをベースにしています。
図中に登場する、AppiumクライアントライブラリとAppiumサーバーの役割は以下の通りです。
テストスクリプト・Appiumサーバー共に、テストを実行するデバイス上ではなく、PCやサーバー上で実行します。テストスクリプトの実行環境は、テストスクリプト(プログラム)が実行でき、かつ、AppiumサーバーとHTTP通信ができれば、特に制限はありません。
一方、Appiumサーバーでは、テストを実行するデバイスを操作できる必要があるため、実行環境にいくつかの制約があります。詳しくは「Appiumサーバーのセットアップ」で説明します。
Appiumサーバーには、デフォルトの動作モード(「Appium mode」と呼びます)とは別に、Selendroid modeと呼ばれる動作モードも搭載しています。
上記で図示したAndroid向けの自動化フレームワークはAppium mode時に利用されるものですが、比較的古いAndroidバージョンでは動作しません。Appiumの動作モードをSelendroid modeにすることで、古いバージョンのAndroidでもテストできるようになります。
Selendroid modeでは、自動化フレームワークに「Selendroid」を利用します。
利用する動作モードによってテストスクリプトの書き方が異なる(詳細は、次回解説)ため、テストを書き始める前に、どちらの動作モードを利用するか決めておく必要があります。
具体的には、テスト対象アプリの性質に応じて、以下の手順で動作モードを決定してください。
また、【c】以外のケースでは、テスト対象アプリが下記条件を満たしている必要があります(満たしていない場合、テスト実行用のビルドバリアントを追加して対応します)。
WebView.setWebContentsDebuggingEnabled(true);
本稿で前提としているAppium-1.3.4では、Android 5.0以上の場合に、Appium modeでのWebViewのテストに失敗してしまいます。Appium-1.3.6では、この制限事項は解消しています。
Copyright © ITmedia, Inc. All Rights Reserved.