Help us understand the problem. What is going on with this article?

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

More than 3 years have 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連携も可能になります。

bigtreetc
お客様のデジタルトランスフォーメーションの実現をミッションとして、DXに欠かせない「クラウド」「AI」「デジタルマーケティング」「RPA」をコアテクノロジーとして位置付け、各テクノロジーのプロフェッショナルチームにより専門的なサービスを提供しています。
https://www.bigtreetc.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away