Pitaliumを使ってAndroidのリグレッションテスト
今回は、前回の「PitaliumをGradleからつかってみよう!」を利用して、Androidでのテストを行ってみようと思います。
今まで、スマートフォンでのテストを躊躇していたエンジニアの方にチャレンジして頂きたい内容となっています。是非、ご覧下さい。
AndroidのPitaliumテストにはAppiumを利用します。
AppiumとはSeleniumとAndroidデバイスを繋ぐためのNodeサーバです。
起動構成はこのようになります。
注意事項
対象の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端末の接続
- Android端末をテスト実行するPCに接続します。
- Android端末の設定で、USBデバッグを有効にします。
- 接続した端末が認識されているか確認します。端末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のブログはこちら
コメントは受け付けていません。