前回はWebアプリケーションのスマホテストを自動化しましたが、今回はDeviceFarmを用いて、スマホアプリのテストを自動化します。
CIツールは、Pluginが存在するJenkinsを用います。
必要なもの
- AWS アカウント
- AWS IAM User(DeviceFarmFullAccess権限を付与したユーザ)
- DeviceFarm Project(テスト対象プロジェクト)
- DeviceFarm DevicePool(テスト対象端末のプール)
Jenkins + DeviceFarmPluginのセットアップ
Jenkinsとdevice-farm-pluginのセットアップはリンクを参考に設定します。
実施することは以下になります。
- yumでJenkinsをEC2にインストール
- DeviceFarm Pluginをインストール
- DeviceFarm AccessKey/SecretKey設定
テストプロジェクト構成
以下を参考にテストプロジェクトを作成します。
参考レポジトリ はAppium+JUnitをgradleでbuildしています。
また、テスト対象のiOSアプリケーションファイルのビルドは省略しています。
DeviceFarmテスト設定
DeviceFarmのテスト設定で、以下を設定します。
- DeviceFarm Project
- DeviceFarm Device Pool(テスト対象端末のプール)
- アプリケーションファイル(※例はiOSアプリの.ipa)
- テスト対象ファイル(zip-with-dependencies.zip)
※zip-with-dependencies.zipのフォルダ構成は以下を参照
task installZip(dependsOn: ["clean", "packageTests", "installDist"]) << {
new File("build/work").mkdir()
new File('build/zip.sh') << 'cd build/work; zip -r zip-with-dependencies.zip .'
copy{
from "build/install/test/lib/"
into "build/work/dependency-jars/"
}
copy{
from "build/libs/test-1.0-SNAPSHOT-tests.jar"
into "build/work/"
}
"chmod 755 build/zip.sh".execute().waitFor()
"build/zip.sh".execute().waitFor()
copy{
from "build/work/zip-with-dependencies.zip"
into "build/"
}
}
テスト実行
Jenkinsでテスト実行後、アプリケーションファイル、DeviceFarmマネジメントコンソールのレポートへのリンク等がJenkinsのテスト結果画面に表示されます。
その他(開発中のテストについて)
DeviceFarmのインターネットゲートウェイのアドレス範囲は54.244.50.32~54.244.50.63.(※2017/9/15時点)のため、開発中のAPIサーバに左記アドレス範囲をファイアーウォール許可設定することで、開発中のアプリ→API連携も可能になります。