Appium テストと Device Farm の統合 - AWS Device Farm

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Appium テストと Device Farm の統合

Appium テストを AWS Device Farm と統合するには、次の手順を使用します。Device Farm での Appium テストの使用の詳細については、「」を参照してくださいAppium テストと AWS Device Farm

Appium テストパッケージを構成する

テストパッケージを構成するには、次の手順を実行します。

Java (JUnit)
  1. パッケージpom.xmlを JAR ファイルに設定するように変更します。

    <groupId>com.acme</groupId> <artifactId>acme-myApp-appium</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging>
  2. maven-jar-plugin を使用してテストをJARファイルに構築pom.xmlするように変更します。

    次のプラグインは、テストソースコード ( src/test ディレクトリ内のすべて) をJARファイルに構築します。

    <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.6</version> <executions> <execution> <goals> <goal>test-jar</goal> </goals> </execution> </executions> </plugin>
  3. を使用して依存関係maven-dependency-pluginをJARファイルとして構築pom.xmlするように変更します。

    次のプラグインは依存関係を dependency-jars ディレクトリにコピーします:

    <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>2.10</version> <executions> <execution> <id>copy-dependencies</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/dependency-jars/</outputDirectory> </configuration> </execution> </executions> </plugin>
  4. 次のXMLアセンブリを に保存しますsrc/main/assembly/zip.xml

    以下は、設定されている場合、ビルド出力ディレクトリと dependency-jars ディレクトリのルートにあるすべてのものを含む .zip ファイルを構築するように Maven に指示するアセンブリ定義XMLです。

    <assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd"> <id>zip</id> <formats> <format>zip</format> </formats> <includeBaseDirectory>false</includeBaseDirectory> <fileSets> <fileSet> <directory>${project.build.directory}</directory> <outputDirectory>./</outputDirectory> <includes> <include>*.jar</include> </includes> </fileSet> <fileSet> <directory>${project.build.directory}</directory> <outputDirectory>./</outputDirectory> <includes> <include>/dependency-jars/</include> </includes> </fileSet> </fileSets> </assembly>
  5. テストとすべての依存関係を単一の .zip ファイルにパッケージするよう、pom.xml を変更して maven-assembly-plugin を使用します。

    次のプラグインは、上記のアセンブリを使用して、mvn package が実行されるたびに、ビルド出力ディレクトリに zip-with-dependencies という名前の .zip ファイルを作成します:

    <plugin> <artifactId>maven-assembly-plugin</artifactId> <version>2.5.4</version> <executions> <execution> <phase>package</phase> <goals> <goal>single</goal> </goals> <configuration> <finalName>zip-with-dependencies</finalName> <appendAssemblyId>false</appendAssemblyId> <descriptors> <descriptor>src/main/assembly/zip.xml</descriptor> </descriptors> </configuration> </execution> </executions> </plugin>
注記

注釈が 1.3 でサポートされていないというエラーが表示された場合は、以下を pom.xml に追加します:

<plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin>
Java (TestNG)
  1. パッケージpom.xmlを JAR ファイルに設定するように変更します。

    <groupId>com.acme</groupId> <artifactId>acme-myApp-appium</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging>
  2. maven-jar-plugin を使用してテストをJARファイルに構築pom.xmlするように変更します。

    次のプラグインは、テストソースコード ( src/test ディレクトリ内のすべて) をJARファイルに構築します。

    <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.6</version> <executions> <execution> <goals> <goal>test-jar</goal> </goals> </execution> </executions> </plugin>
  3. を使用して依存関係maven-dependency-pluginをJARファイルとして構築pom.xmlするように変更します。

    次のプラグインは依存関係を dependency-jars ディレクトリにコピーします:

    <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>2.10</version> <executions> <execution> <id>copy-dependencies</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/dependency-jars/</outputDirectory> </configuration> </execution> </executions> </plugin>
  4. 次のXMLアセンブリを に保存しますsrc/main/assembly/zip.xml

    以下は、設定されている場合、ビルド出力ディレクトリと dependency-jars ディレクトリのルートにあるすべてのものを含む .zip ファイルを構築するように Maven に指示するアセンブリ定義XMLです。

    <assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd"> <id>zip</id> <formats> <format>zip</format> </formats> <includeBaseDirectory>false</includeBaseDirectory> <fileSets> <fileSet> <directory>${project.build.directory}</directory> <outputDirectory>./</outputDirectory> <includes> <include>*.jar</include> </includes> </fileSet> <fileSet> <directory>${project.build.directory}</directory> <outputDirectory>./</outputDirectory> <includes> <include>/dependency-jars/</include> </includes> </fileSet> </fileSets> </assembly>
  5. テストとすべての依存関係を単一の .zip ファイルにパッケージするよう、pom.xml を変更して maven-assembly-plugin を使用します。

    次のプラグインは、上記のアセンブリを使用して、mvn package が実行されるたびに、ビルド出力ディレクトリに zip-with-dependencies という名前の .zip ファイルを作成します:

    <plugin> <artifactId>maven-assembly-plugin</artifactId> <version>2.5.4</version> <executions> <execution> <phase>package</phase> <goals> <goal>single</goal> </goals> <configuration> <finalName>zip-with-dependencies</finalName> <appendAssemblyId>false</appendAssemblyId> <descriptors> <descriptor>src/main/assembly/zip.xml</descriptor> </descriptors> </configuration> </execution> </executions> </plugin>
注記

注釈が 1.3 でサポートされていないというエラーが表示された場合は、以下を pom.xml に追加します:

<plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin>
Node.JS

Appium Node.js テストをパッケージして Device Farm にアップロードするには、ローカルマシンに次のものをインストールする必要があります:

  • Node Version Manager (nvm)

    ​不要な依存関係がテストパッケージに含まれないように、テストを開発およびパッケージするときにこのツールを使用してください。

  • Node.js

  • npm-bundle (グローバルにインストール済み)

  1. nvm が存在することを確認します。

    command -v nvm

    出力として nvm が表示されるはずです。

    詳細については、 の「nvm」を参照してください GitHub。

  2. Node.js をインストールするには、このコマンドを実行します:

    nvm install node

    特定バージョンの Node.js を指定できます:​

    nvm install 11.4.0
  3. 正しいバージョンのノードが使用されていることを確認します:

    node -v
  4. npm-bundle をグローバルにインストールします:

    npm install -g npm-bundle
Python
  1. 不要な依存関係がアプリケーションパッケージに含まれないように、テストの開発とパッケージのために Python virtualenv を設定することを強くお勧めします。

    $ virtualenv workspace $ cd workspace $ source bin/activate
    ヒント
    • グローバルサイトパッケージディレクトリからパッケージを継承するため、--system-site-packages オプションを使用して Python virtualenv を作成しないでください。テストで不要な依存関係を仮想環境に含めることになる場合があります。

    • これらのネイティブライブラリは、これらのテストが実行されるインスタンス上に存在する場合と存在しない場合があるため、ネイティブライブラリに依存する依存関係をテストで使用しないことも確認する必要があります。

  2. 仮想環境に py.test をインストールします。

    $ pip install pytest
  3. Appium Python クライアントを仮想環境にインストールします。

    $ pip install Appium-Python-Client
  4. カスタムモードで別のパスを指定しない限り、Device Farm はテストが tests/ に格納されると想定します。find を使用して、フォルダ内のすべてのファイルを表示できます:

    $ find tests/

    これらのファイルに、Device Farm で実行するテストスイートが含まれていることを確認します。

    tests/ tests/my-first-tests.py tests/my-second-tests/py
  5. 仮想環境のワークスペースフォルダからこのコマンドを実行して、テストを実行せずにテストのリストを表示します。

    $ py.test --collect-only tests/

    Device Farm で実行するテストが出力に表示されていることを確認します。​

  6. tests/ folder 下にあるすべてのキャッシュファイルを消去します:

    $ find . -name '__pycache__' -type d -exec rm -r {} + $ find . -name '*.pyc' -exec rm -f {} + $ find . -name '*.pyo' -exec rm -f {} + $ find . -name '*~' -exec rm -f {} +
  7. ワークスペースで次のコマンドを実行して、requirements.txt ファイルを生成します:

    $ pip freeze > requirements.txt
Ruby

Appium Ruby テストをパッケージして Device Farm にアップロードするには、ローカルマシンに次のものをインストールする必要があります:

  • Ruby Version Manager (RVM)

    ​不要な依存関係がテストパッケージに含まれないように、テストを開発およびパッケージするときにこのコマンドラインツールを使用してください。

  • Ruby

  • Bundler (この Gem には通常、Ruby がすでにインストールされています)。

  1. 必要なキー、RVM、および Ruby をインストールします。手順については、RVMウェブサイトの「 のインストールRVM」を参照してください。

    インストールが完了したら、サインアウトしてから再度サインインして端末を再リロードします。​

    注記

    RVM は bash シェルの関数としてのみロードされます。

  2. rvm が正しくインストールされたことを確認します。

    command -v rvm

    出力として rvm が表示されるはずです。

  3. Ruby の特定のバージョンをインストールする場合は、2.5.3、次のコマンドを実行します。

    rvm install ruby 2.5.3 --autolibs=0

    リクエストされた Ruby のバージョンを使用していることを確認します:

    ruby -v
  4. 対象のテストプラットフォーム用のパッケージをコンパイルするようにバンドラーを構成します:

    bundle config specific_platform true
  5. .lock ファイルを更新して、テストの実行に必要なプラットフォームを追加します。

    • Android デバイスで実行するようにテストをコンパイルする場合は、次のコマンドを実行して Gemfile が Android テストホストの依存関係を使用するように構成します:

      bundle lock --add-platform x86_64-linux
    • iOS デバイスで実行するようにテストをコンパイルする場合は、次のコマンドを実行して、iOS テストホストの依存関係を使用するように Gemfile を構成します:

      bundle lock --add-platform x86_64-darwin
  6. 通常、bundler gem はデフォルトでインストールされます。そうでない場合は、インストールします:

    gem install bundler -v 2.3.26

圧縮テストパッケージファイルを作成する

警告

Device Farm では、zip テストパッケージ内のファイルのフォルダ構造が重要であり、一部のアーカイブツールはZIPファイルの構造を暗黙的に変更します。ローカルデスクトップのファイルマネージャー (Finder や Windows エクスプローラーなど) に組み込まれているアーカイブユーティリティを使用するよりも、以下に指定されているコマンドラインユーティリティに従うことをお勧めします。

次に、Device Farm のテストをバンドルします。

Java (JUnit)

テストのビルドとパッケージ:

$ mvn clean package -DskipTests=true

その結果 zip-with-dependencies.zip のファイルが作成されます。これはお客様のテストパッケージです。

Java (TestNG)

テストのビルドとパッケージ:

$ mvn clean package -DskipTests=true

その結果 zip-with-dependencies.zip のファイルが作成されます。これはお客様のテストパッケージです。

Node.JS
  1. プロジェクトをチェックアウトします。

    プロジェクトのルートディレクトリにいることを確認します。​ ルートディレクトリで package.json を確認できます。

  2. ローカルの依存関係をインストールするには、このコマンドを実行します。

    npm install

    このコマンドは、現在のディレクトリ内に node_modules フォルダも作成します。

    注記

    この時点で、ローカルでテストを実行できるようにする必要があります。

  3. このコマンドを実行して、現在のフォルダ内のファイルを *.tgz ファイルにパッケージします。ファイルの名前は、package.json ファイルの name プロパティを使用して付けられます。

    npm-bundle

    この tarball(.tgz) ファイルには、コードと依存関係がすべて含まれています。

  4. このコマンドを実行して、前のステップで生成した tarball (*.tgz ファイル) を単一の zip アーカイブにバンドルします:

    zip -r MyTests.zip *.tgz

    これは、次の手順で Device Farm にアップロードする MyTests.zip ファイルです。

Python
Python 2

pip を使用して、必要な Python パッケージ (「ホイールハウス」と呼ばれる) のアーカイブを生成します:

$ pip wheel --wheel-dir wheelhouse -r requirements.txt

ホイールハウス、テスト、pip 要件を Device Farm の zip アーカイブにパッケージします:

$ zip -r test_bundle.zip tests/ wheelhouse/ requirements.txt
Python 3

テストと pip 要件を zip ファイルにパッケージします:

$ zip -r test_bundle.zip tests/ requirements.txt
Ruby
  1. 仮想 Ruby 環境を作成するには、次のコマンドを実行します:

    # myGemset is the name of your virtual Ruby environment rvm gemset create myGemset
  2. 先ほど作成した環境を使用するには、次のコマンドを実行します:

    rvm gemset use myGemset
  3. ソースコードを確認してください。

    プロジェクトのルートディレクトリにいることを確認します。​ ルートディレクトリで Gemfile を確認できます。

  4. ローカルの依存関係と、Gemfile からのすべての Gem をインストールするには、このコマンドを実行します:

    bundle install
    注記

    この時点で、ローカルでテストを実行できるようにする必要があります。テストをローカルで実行するには、このコマンドを使用します:

    bundle exec $test_command
  5. vendor/cache フォルダの Gem をパッケージします。

    # This will copy all the .gem files needed to run your tests into the vendor/cache directory bundle package --all-platforms
  6. 次のコマンドを実行して、すべての依存関係とともにソースコードを単一の zip アーカイブにバンドルします:

    zip -r MyTests.zip Gemfile vendor/ $(any other source code directory files)

    これは、次の手順で Device Farm にアップロードする MyTests.zip ファイルです。

テストパッケージを Device Farm にアップロードする

Device Farm コンソールを使用してテストをアップロードできます。

  1. https://console.aws.amazon.com/devicefarm の Device Farm コンソールにサインインします。

  2. Device Farm ナビゲーションパネルで、[モバイルデバイスのテスト] を選択して、[プロジェクト] を選択します。

  3. 新規ユーザーである場合は、[新規プロジェクト] を選択し、プロジェクト名を入力してから、[送信] を選択します。

    すでにプロジェクトがある場合は、それを選択して、テストをそのプロジェクトにアップロードできます。

  4. プロジェクトを開き、[新規実行を作成] を選択します。

  5. ネイティブの Android と iOS テストの場合

    アプリケーションを選択する」ページで、[モバイルアプリケーション] を選択し、その後 [ファイルを選択] を選び、アプリケーションの配布可能パッケージをアップロードします。

    注記

    ファイルは Android .apk または iOS .ipa のいずれかである必要があります。iOS アプリケーションは、シミュレーターではなく、実際のデバイス用に構築される必要があります。

    モバイルウェブアプリケーションのテストの場合

    アプリケーションを選択する」ページで、[ウェブアプリケーション] を選択します。

  6. テストに適切な名前を付けます。これには、スペースまたは句読点の任意の組み合わせを含めることができます。

  7. [Next (次へ)] を選択します。

  8. 設定ページで、テストフレームワークのセットアップセクションで Appium を選択します。language、ファイル を選択します

  9. テストが含まれている .zip ファイルを参照して選択します。この .zip ファイルは「Appium テストパッケージを構成する」で説明されている形式に従う必要があります。

  10. [カスタム環境でテストを実行] を選択します。この実行環境を使用すると、テストの設定、ティアダウン、呼び出しを完全に制御できるとともに、ランタイムと Appium サーバーの特定バージョンを選択できます。テスト仕様ファイルを使用してカスタム環境を設定できます。詳細については、AWSDevice Farm でのカスタムテスト環境の使用」を参照してください。

  11. [次へ] を選択し、手順に従ってデバイスを選択して、実行を開始します。詳細については、「Device Farm でのテスト実行の作成」を参照してください。

注記

Device Farm で Appium テストは変更されません。

テストのスクリーンショットを撮る (オプション)

テストの一部としてスクリーンショットを撮影できます。

Device Farm は、DEVICEFARM_SCREENSHOT_PATH プロパティをローカルファイルシステム上の完全修飾パスに設定します。Device Farm は、そこを Appium スクリーンショットの保存先とみなします。スクリーンショットが保存されているテスト固有のディレクトリは、実行時に定義されます。スクリーンショットは Device Farm レポートに自動的に取り込まれます。スクリーンショットを表示するには、Device Farm コンソールで、[スクリーンショット] セクションを選択します。

Appium テストでスクリーンショットを撮る方法の詳細については、Appium APIドキュメントの「スクリーンショットを撮る」を参照してください。