コンテンツへスキップ
Tags

Pitaliumを使ってAndroidのリグレッションテスト

by : 2015/11/06

今回は、前回の「PitaliumをGradleからつかってみよう!」を利用して、Androidでのテストを行ってみようと思います。

今まで、スマートフォンでのテストを躊躇していたエンジニアの方にチャレンジして頂きたい内容となっています。是非、ご覧下さい。

AndroidのPitaliumテストにはAppiumを利用します。
AppiumとはSeleniumとAndroidデバイスを繋ぐためのNodeサーバです。

Appium: モバイルアプリのテスト自動化ツール

起動構成はこのようになります。
selenium-appium

注意事項

対象のAndorid OSは、Android4.2以降をターゲットとしています。
それより前のAndroid端末についてはAndroid端末上でテストを行う(コマンドライン)をご確認下さい。

1. 事前準備

本記載にあたって、各ディレクトリを以下の通りとします。
適宜環境に合わせて読み替えて下さい。

Seleniumサーバーパス: /pitalium  
ソースコード: /pitalium-test

1–1. Java SDKのインストール

Java SE – Downloads | Oracle Technology Network | Oracleから、テスト環境に合った最新バージョンを入手して下さい。

1–2. Android SDKのインストール

Android SDKのダウンロード

Download Android Studio and SDK Tools | Android Developersより、Android SDKをダウンロードして任意の場所に解凍します。

ダウンロードする箇所が解りにくくなっていますが、セクション「Other Download Options」にある「SDK Tools Only」のプラットフォーム別のファイルです。

Android 環境設定

環境変数のPathに以下の場所をANDROID_HOMEとして追加します。

Macの場合

(Android SDKのインストールフォルダ)\android-sdk-macosx

Windowsの場合

(Android SDKのインストールフォルダ)\android-sdk-windows

以下のパスもWindowsであればシステム環境設定で追加しておきましょう。 Macユーザの場合は.zshrcや.bashrcなどに設定しておいて下さい。

ANDROID_HOME/platform-tools
ANDROID_HOME/tools

Android パッケージのインストール

コマンドラインからAndroid managerを起動します。

$ android

以下のパッケージをインストールします。

  • Tools
    • Android SDK Tools
    • Android SDK Platform-tools
    • Android SDK Build-tools
  • Android 4.4.2(API 19)(17以上ならどれでも良い)
    • SDK Platform
  • Extras
    • Google USB Driver

Android端末の接続

  1. Android端末をテスト実行するPCに接続します。
  2. Android端末の設定で、USBデバッグを有効にします。
  3. 接続した端末が認識されているか確認します。端末IDが表示されればOKです。
$ adb devices
List of devices attached
[端末ID]  device

SeleniumサーバのHubを起動

Selenium Standalone ServerはSelenium Standalone Server ダウンロードサイトよりダウンロードして下さい。

ダウンロードしたファイルは、次のディレクトリに配備します。

/pitalium/selenium-server-standalone-2.48.2.jar

Selenium Hubサーバの起動は次のコマンドで起動して下さい。

$ java -jar /pitalium/selenium-server-standalone-2.48.2.jar -role hub

2. Appiumのインストールと起動

インストールにはNodeJSを利用しますので、予めインストールしておいて下さい。

2–1. Appiumのインストール

以下のコマンドを実行して、インストールします。

$ npm install -g appium

インストール後は、チェックコマンドがありますので、次を実行して下さい。

$ appium-doctor

全てのチェックが通ると、最後に次のメッセージが出力されます。

✔ All Checks were successful

2–2. Appiumのcapabilitiesの設定

AppiumのNodeConfigの設定を記述します。
nodeConfigAndroid.jsonとして配備します。

/pitalium/nodeConfigAndroid.json

{
  "capabilities": [
    {
      "platform": "ANDROID",
      "browserName": "chrome",
      "version": "4.4.2 SH307",
      "maxInstances": 1,
      "seleniumProtocol": "WebDriver"
  }
  ],
  "configuration": {
    "cleanUpCycle": 2000,
    "timeout": 30000,
    "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
    "url": "http://127.0.0.1:4723/wd/hub",
    "host": "127.0.0.1",
    "port": "4723",
    "maxSession": 1,
    "register": true,
    "registerCycle": 5000,
    "hubPort": 4444,
    "hubHost": "localhost"
  }
}

上記は、ローカル環境で動かす最低限の設定です。

capabilitiesの説明

項目 説明
platform Android端末の場合 “ANDROID”
browserName “chrome” 固定
version 任意の値。AndroidのOSバージョン+デバイス名とする事を本記事では推奨。
maxInstances テストを行う最大インスタンス数
seleniumProtocol “WebDriver” 固定

configurationの説明
注目すべき項目のみを説明しています。他はデフォルトではサンプルの通りとして下さい。

項目 説明
url Appiumが稼働するサーバアドレス
host urlのHost部分
port urlのport部分
hubHost Selenium HubサーバのHostアドレス
hubPort Selenium Hubサーバのport

設定値の詳しくはAppium API Referenceを参照して下さい。

2–3. Appiumの起動

事前に起動した、Selenium Hubサーバに接続します。

–nodeconfig オプションに渡すファイルは、フルパスで記述する必要がありますので注意して下さい。

$ appium --nodeconfig /pitalium/nodeConfigAndroid.json

以下のように、待ち受けが始まればOKです。

info: Welcome to Appium v1.4.13 (REV c75d8adcb66a75818a542fe1891a34260c21f76a)
info: Appium REST http interface listener started on 0.0.0.0:4723
info: [debug] Non-default server args: {"nodeconfig":"/pitalium/nodeConfigAndroid.json"}
info: Console LogLevel: debug
info: [debug] starting auto register thread for grid. Will try to register every 5000 ms.
info: --> GET /wd/hub/status {}
info: [debug] Responding to client with success: {"status":0,"value":{"build":{"version":"1.4.13","revision":"c75d8adcb66a75818a542fe1891a34260c21f76a"}}}
info: <-- GET /wd/hub/status 200 11.569 ms - 105 {"status":0,"value":{"build":{"version":"1.4.13","revision":"c75d8adcb66a75818a542fe1891a34260c21f76a"}}}
info: [debug] Appium successfully registered with the grid on localhost:4444

これでサーバの準備は整いました。

3. Pitaliumでスマートフォンのテスト

3–1. ディレクトリ構造

.pitalium-test
├── build.gradle
├── libs
│   └── pitalium-1.0.1.jar
└── src
    ├── main
    │   ├── java
    │   └── resources
    └── test
        ├── java
        │   └── com
        │       └── htmlhifive
        │           └── pitalium
        │               └── HifivePitaliumTest.java
        └── resources
            └── capabilities.json

以下のファイルは、前回記事と同じ物を利用します。

  • Gradleのbuildファイル
  • gradle.build
  • pitalium本体のjarファイル
  • /pitalium-test/libs/pitalium-1.0.1.jar
  • テストコード本体
  • /pitalium-test/src/test/java/com/htmlhifive/pitalium/HifivePitaliumTest.java

3–2. capabilitiesファイル

ここでポイントとなる項目は、“platform”、“browserName”、“version” です。 これらの項目は、Appiumを起動するときに設定したnodeConfigAndroid.jsonと同一の値を指定します

/pitalium-test/src/test/resources/capabilities.json

[
  {
    "platform": "ANDROID",
    "browserName": "chrome",
    "version": "4.4.2 SH307",
    "platformVersion": "19",
    "platformName": "Android",
    "deviceName": "SH307"
  }
]

capabilitiesの説明

項目 説明
platform Appinumサーバで指定した同項目値を設定
browserName Appinumサーバで指定した同項目値を設定
version Appinumサーバで指定した同項目値を設定
platformVersion 実行する端末のAPIバージョン
platformName “Android”固定 Android端末の場合
deviceName 対象のデバイス名(任意の名称)

※いずれも必須項目です。

3–3. テスト実行

テストコードのルートディレクトリに移動して、コマンドラインからGradleを実行します。

$ cd /pitalium-test
$ gradle build

実行すると、接続されたAndroid端末のブラウザが立ち上がり、PCと同様スクリーンショットが保存されます。

/pitalium-test/results/yyyy_MM_dd_hh_mm_ss/HifivePitaliumTest

次回からは次のGradleコマンドを実行すればOKです。

$ gradle clean test

最後に

Pitaliumを利用した、Androidの設定から起動までを行いました。
こちらもサーバ設定さえクリアしてしまえば、特に問題になることはないでしょう。

フロントエンドは、スマフォの開発がほぼ必須となっている状況かと思います。
Pitalium+Appliumを利用することで、スマフォのリグレッションテストも可能になります。
品質向上のために、導入をご検討してはいかがでしょうか。
今回は、Android端末の紹介でしたが、iOSなどの対応も次回以降に見ていきたいと思います。

Pitaliumにご興味のある方はチュートリアル(Pitalium:hifiveリグレッションテストライブラリ) – hifiveも参考にして下さい。

 

過去のPitaliumのブログはこちら

コメントは受け付けていません。

%d人のブロガーが「いいね」をつけました。