Edited at

スマホアプリのテストを自動化する

More than 1 year has passed since last update.

前回は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)

スクリーンショット 2017-09-15 時刻 19.29.59.png

※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のテスト結果画面に表示されます。

スクリーンショット 2017-09-15 時刻 19.38.45.png


その他(開発中のテストについて)

DeviceFarmのインターネットゲートウェイのアドレス範囲は54.244.50.32~54.244.50.63.(※2017/9/15時点)のため、開発中のAPIサーバに左記アドレス範囲をファイアーウォール許可設定することで、開発中のアプリ→API連携も可能になります。