

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

# AWS Device Farm のテストフレームワークと組み込みテスト
<a name="test-types"></a>

このセクションでは、テストフレームワークとビルトインのテストタイプに対する Device Farm のサポートについて説明します。

Device Farm は、アプリケーションとテストをサービスによって管理される安全な Amazon S3 バケットにアップロードすることで、自動テストを実行します。アップロードすると、サービスマネージド[テストホスト](custom-test-environments-hosts.md)を含む基盤となるインフラストラクチャがスピンアップされ、複数のデバイスでテストが並行して実行されます。テスト結果はサービスマネージド S3 バケットに保存されます。このアーキテクチャは**サービス側の実行**と呼ばれ、テストホストインフラストラクチャを自分で管理することなく、物理的にデバイスに近いホストでテストを実行するための迅速かつ効率的な方法です。このアプローチは、多くのデバイスで個別にテストしたり、CI/CD パイプラインのコンテキストからテストしたりするのに適しています。

Device Farm でテストを実行する方法の詳細については、「[AWS Device Farm でのテスト環境](test-environments.md)」を参照してください。

**注記**  
Appium テスターの場合は、ローカル環境から Appium テストを実行することをお勧めします。[リモートアクセスセッション](remote-access.md)では、**クライアント側の** Appium テストを実行できます。詳細については、[「クライアント側の Appium テスト](appium-endpoint.md)」を参照してください。

## テストフレームワーク
<a name="test-types-framework"></a>

Device Farm では、以下の自動化テストフレームワークをサポートしています:

### Android アプリケーションテストフレームワーク
<a name="test-types-framework-android-list"></a>
+ [自動 Appium テストAppium テストとの統合](test-types-appium.md)
+ [インストルメンテーション](test-types-android-instrumentation.md)

### iOS アプリケーションテストフレームワーク
<a name="test-types-framework-ios-list"></a>
+ [自動 Appium テストAppium テストとの統合](test-types-appium.md)
+ [XCTest](test-types-ios-xctest.md)
+ [XCTest UI](test-types-ios-xctest-ui.md)

### ウェブアプリケーションテストフレームワーク
<a name="test-types-framework-web-app-list"></a>

ウェブアプリケーションは、Appium を使用してサポートされます。テストを Appium に持ち込む方法の詳細については、「[Device Farm で Appium テストを自動的に実行するAppium テストと Device Farm の統合](test-types-appium.md)」を参照してください。

### カスタムテスト環境のフレームワーク
<a name="test-types-framework-custom-support"></a>

Device Farm では、XCTest フレームワークのテスト環境のカスタマイズをサポートしていません。詳細については、「[AWS Device Farm のカスタムテスト環境](custom-test-environments.md)」を参照してください。

### Appium バージョンのサポート
<a name="test-types-framework-appium"></a>

Device Farm では、カスタム環境で実行されるテスト向けに Appium バージョン 1 をサポートしています。詳細については、「[AWS Device Farm でのテスト環境](test-environments.md)」を参照してください。

## ビルトインテストタイプ
<a name="test-types-built-in"></a>

ビルトインテストでは、テスト自動化スクリプトを記述、管理することなく、複数デバイスでアプリケーションをテストできます。Device Farm は 1 つのビルトインテストタイプを提供します:
+ [ビルトイン: ファズ (Android および iOS)](test-types-built-in-fuzz.md)

# Device Farm で Appium テストを自動的に実行する
<a name="test-types-appium"></a><a name="test-types-ios-appium-java-testng"></a><a name="test-types-ios-appium-java-junit"></a><a name="test-types-ios-appium-python"></a><a name="test-types-ios-appium-ruby"></a><a name="test-types-ios-appium-node"></a><a name="test-types-android-appium-java-testng"></a><a name="test-types-android-appium-java-junit"></a><a name="test-types-android-appium-python"></a><a name="test-types-android-appium-ruby"></a><a name="test-types-android-appium-node"></a><a name="test-types-web-app-appium-java-testng"></a><a name="test-types-web-app-appium-java-junit"></a><a name="test-types-web-app-appium-python"></a><a name="test-types-web-app-appium-ruby"></a><a name="test-types-web-app-appium-node"></a>

**注記**  
このページでは、Device Farm のマネージド**サーバー側の**実行環境で Appium テストを実行する方法について説明します。リモートアクセスセッション中にローカル**クライアント側の**環境から Appium テストを実行するには、[「クライアント側の Appium テスト](appium-endpoint.md)」を参照してください。

このセクションでは、Device Farm のマネージドサーバー側環境で実行するための Appium テストを設定、パッケージ化、アップロードする方法について説明します。Appium は、ネイティブおよびモバイル型のウェブアプリケーションを自動化するためのオープンソースのツールです。詳細については、Appium ウェブサイト上の「[Appium の紹介](http://appium.io/docs/en/latest/intro)」を参照してください。

サンプルアプリケーションおよび動作テストへのリンクについては、GitHub の 「[Android 用 Device Farm サンプルアプリケーション](https://github.com/aws-samples/aws-device-farm-sample-app-for-android)」および「[iOS 用 Device Farm サンプルアプリケーション](https://github.com/aws-samples/aws-device-farm-sample-app-for-ios)」を参照してください。

Device Farm でのテストとサーバー側の動作の詳細については、「」を参照してください[AWS Device Farm のテストフレームワークと組み込みテスト](test-types.md)。

## Appium バージョンの選択
<a name="w2aac24c15c41"></a>

**注記**  
 特定の Appium バージョン、Appium ドライバー、またはプログラミング SDKs のサポートは、テスト実行用に選択されたデバイスとテストホストによって異なります。

 Device Farm テストホストには Appium がプリインストールされており、より簡単なユースケースでテストをより迅速にセットアップできます。ただし、テスト仕様ファイルを使用すると、必要に応じて異なるバージョンの Appium をインストールできます。

### シナリオ 1: 事前設定された Appium バージョン
<a name="w2aac24c15c41b7b1"></a>

 Device Farm には、テストホストに基づいて異なる Appium サーバーバージョンが事前設定されています。ホストには、デバイスプラットフォームのデフォルトドライバー (UiAutomator2 for Android、XCUITest for iOS) を使用して事前設定されたバージョンを有効にするツールが付属しています。

```
phases:
  install:
    commands:
      - export APPIUM_VERSION=2
      - devicefarm-cli use appium $APPIUM_VERSION
```

 サポートされているソフトウェアのリストを表示するには、「」のトピックを参照してください[カスタムテスト環境内でサポートされているソフトウェア](custom-test-environments-hosts-software.md)。

### シナリオ 2: カスタム Appium バージョン
<a name="w2aac24c15c41b7b3"></a>

 Appium のカスタムバージョンを選択するには、 `npm` コマンドを使用してインストールします。次の例は、最新バージョンの Appium 2 をインストールする方法を示しています。

```
phases:
  install:
    commands:
      - export APPIUM_VERSION=2
      - npm install -g appium@$APPIUM_VERSION
```

### シナリオ 3: レガシー iOS ホストでの Appium
<a name="w2aac24c15c41b7b5"></a>

 では[レガシー iOS テストホスト](custom-test-environments-hosts-ios.md#legacy-ios-host)、 で特定の Appium バージョンを選択できます`avm`。たとえば、 `avm` コマンドを使用して Appium サーバーバージョンを に設定するには`2.1.2`、これらのコマンドをテスト仕様の YAML ファイルに追加します。

```
phases:
  install:
    commands:
      - export APPIUM_VERSION=2.1.2
      - avm $APPIUM_VERSION
```

## iOS テスト用の WebDriverAgent バージョンの選択
<a name="test-types-appium-select-wda"></a>

 iOS デバイスで Appium テストを実行するには、WebDriverAgent を使用する必要があります。iOS デバイスにインストールするには、このアプリケーションに署名する必要があります。Device Farm には、カスタムテスト環境の実行中に使用できる WebDriverAgent の署名付きバージョンが用意されています。

 次のコードスニペットを使用して、XCTestUI ドライバーバージョンと互換性のあるテスト仕様ファイル内の Device Farm で WebDriverAgent バージョンを選択できます。

```
phases:
  pre_test:
    commands:
      - |-
        APPIUM_DRIVER_VERSION=$(appium driver list --installed --json | jq -r ".xcuitest.version" | cut -d "." -f 1);
        CORRESPONDING_APPIUM_WDA=$(env | grep "DEVICEFARM_APPIUM_WDA_DERIVED_DATA_PATH_V${APPIUM_DRIVER_VERSION}")
        if [[ ! -z "$APPIUM_DRIVER_VERSION" ]] && [[ ! -z "$CORRESPONDING_APPIUM_WDA" ]]; then
          echo "Using Device Farm's prebuilt WDA version ${APPIUM_DRIVER_VERSION}.x, which corresponds with your driver";
          DEVICEFARM_APPIUM_WDA_DERIVED_DATA_PATH=$(echo $CORRESPONDING_APPIUM_WDA | cut -d "=" -f2)
        else
          LATEST_SUPPORTED_WDA_VERSION=$(env | grep "DEVICEFARM_APPIUM_WDA_DERIVED_DATA_PATH_V" | sort -V -r | head -n 1)
          echo "Unknown driver version $APPIUM_DRIVER_VERSION; falling back to the Device Farm default version of $LATEST_SUPPORTED_WDA_VERSION";
          DEVICEFARM_APPIUM_WDA_DERIVED_DATA_PATH=$(echo $LATEST_SUPPORTED_WDA_VERSION | cut -d "=" -f2)
        fi;
```

 WebDriverAgent の詳細については、Appium の[ドキュメント](https://appium.github.io/appium-xcuitest-driver/9.10/guides/run-prebuilt-wda/)を参照してください。

# Appium テストと Device Farm の統合
<a name="test-types-appium-integrate"></a>

Appium テストを AWS Device Farm と統合するには、次の手順に従います。Device Farm で Appium テストを使用する方法の詳細については、「[Device Farm で Appium テストを自動的に実行するAppium テストと Device Farm の統合](test-types-appium.md)」を参照してください。

## Appium テストパッケージを構成する
<a name="test-types-appium-prepare"></a>

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

------
#### [ Java (JUnit) ]

1. `pom.xml` を変更して、パッケージを JAR ファイルに設定します:

   ```
   <groupId>com.acme</groupId>
   <artifactId>acme-myApp-appium</artifactId>
   <version>1.0-SNAPSHOT</version>
   <packaging>jar</packaging>
   ```

1. テストを JAR ファイルにビルドするよう、`pom.xml` を変更して `maven-jar-plugin` を使用します。

   次のプラグインは、テストソースコード (`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>
   ```

1. 依存関係を JAR ファイルとしてビルドするよう、`pom.xml` を変更して `maven-dependency-plugin` を使用します。

   次のプラグインは依存関係を `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>
   ```

1. 次の XML アセンブリを `src/main/assembly/zip.xml` に保存します。

   次の XML は、構成時に、Maven がビルド出力ディレクトリと `dependency-jars` ディレクトリのルートにあるすべてを含む .zip ファイルをビルドするように指示するアセンブリ定義です: 

   ```
   <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>
   ```

1. テストとすべての依存関係を単一の .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>
   ```

1. テストを JAR ファイルにビルドするよう、`pom.xml` を変更して `maven-jar-plugin` を使用します。

   次のプラグインは、テストソースコード (`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>
   ```

1. 依存関係を JAR ファイルとしてビルドするよう、`pom.xml` を変更して `maven-dependency-plugin` を使用します。

   次のプラグインは依存関係を `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>
   ```

1. 次の XML アセンブリを `src/main/assembly/zip.xml` に保存します。

   次の XML は、構成時に、Maven がビルド出力ディレクトリと `dependency-jars` ディレクトリのルートにあるすべてを含む .zip ファイルをビルドするように指示するアセンブリ定義です: 

   ```
   <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>
   ```

1. テストとすべての依存関係を単一の .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)](https://github.com/nvm-sh/nvm) 

  ​不要な依存関係がテストパッケージに含まれないように、テストを開発およびパッケージするときにこのツールを使用してください。
+ Node.js
+ npm-bundle (グローバルにインストール済み)

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

   ```
   command -v nvm
   ```

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

   詳細については、GitHub の「[nvm](https://github.com/nvm-sh/nvm)」を参照してください。

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

   ```
   nvm install node
   ```

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

   ```
   nvm install 11.4.0
   ```

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

   ```
   node -v
   ```

1. **npm-bundle** をグローバルにインストールします:

   ```
   npm install -g npm-bundle
   ```

------
#### [ Python ]

1. 不要な依存関係がアプリケーションパッケージに含まれないように、テストの開発とパッケージのために [Python virtualenv](https://pypi.python.org/pypi/virtualenv) を設定することを強くお勧めします。

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

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

   ```
   $ pip install pytest
   ```

1. Appium Python クライアントを仮想環境にインストールします。

   ```
   $ pip install Appium-Python-Client
   ```

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

   ```
   $ find tests/
   ```

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

   ```
   tests/
   tests/my-first-tests.py
   tests/my-second-tests/py
   ```

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

   ```
   $ py.test --collect-only tests/
   ```

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

1. 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 {} +
   ```

1. ワークスペースで次のコマンドを実行して、requirements.txt ファイルを生成します:

   ```
   $ pip freeze > requirements.txt
   ```

------
#### [ Ruby ]

Appium Ruby テストをパッケージして Device Farm にアップロードするには、ローカルマシンに次のものをインストールする必要があります:
+ [Ruby Version Manager (RVM)](https://rvm.io/rvm/install)

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

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

   インストールが完了したら、サインアウトしてから再度サインインして端末を再リロードします。​
**注記**  
RVM は bash シェル専用の関数としてロードされます。​

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

   ```
   command -v rvm
   ```

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

1. 特定バージョンの Ruby (例えば *2.5.3*) をインストールする場合は、次のコマンドを実行してください:​

   ```
   rvm install ruby 2.5.3 --autolibs=0
   ```

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

   ```
   ruby -v
   ```

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

   ```
   bundle config specific_platform true
   ```

1. .lock ファイルを更新して、テストの実行に必要なプラットフォームを追加します。
   + Android デバイスで実行するようにテストをコンパイルする場合は、次のコマンドを実行して Gemfile が Android テストホストの依存関係を使用するように構成します:

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

     ```
     bundle lock --add-platform x86_64-darwin
     ```

1. 通常、**bundler** gem はデフォルトでインストールされます。そうでない場合は、インストールします:

   ```
   gem install bundler -v 2.3.26
   ```

------

## 圧縮テストパッケージファイルを作成する
<a name="test-types-appium-create-a-zip"></a>

**警告**  
Device Farm では、圧縮されたテストパッケージ内のファイルのフォルダ構造が重要であり、一部のアーカイブツールでは 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` を確認できます。

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

   ```
   npm install
   ```

   このコマンドは、現在のディレクトリ内に `node_modules` フォルダも作成します。
**注記**  
この時点で、ローカルでテストを実行できるようにする必要があります。

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

   ```
   npm-bundle
   ```

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

1. このコマンドを実行して、前のステップで生成した tarball (\$1.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
   ```

1. 先ほど作成した環境を使用するには、次のコマンドを実行します:

   ```
   rvm gemset use myGemset
   ```

1. ソースコードを確認してください。

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

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

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

   ```
   bundle exec $test_command
   ```

1. `vendor/cache` フォルダの Gem をパッケージします。

   ```
   # This will copy all the .gem files needed to run your tests into the vendor/cache directory
   bundle package --all-platforms
   ```

1. 次のコマンドを実行して、すべての依存関係とともにソースコードを単一の zip アーカイブにバンドルします:

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

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

------

## テストパッケージを Device Farm にアップロードする
<a name="test-types-appium-upload"></a>

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

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

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

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

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

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

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

1.   
ネイティブの Android と iOS テストの場合  
**[実行設定]**で、Android (.apk) アプリケーションをテストする場合は **[Android アプリ]** を選択し、iOS (.ipa) アプリケーションをテストする場合は **[iOS アプリ]** を選択します。次に、**[アプリを選択]** で **[独自のアプリをアップロード]** を選択して、アプリケーションの配布可能パッケージをアップロードします。  
 ファイルは Android `.apk` または iOS `.ipa` のいずれかである必要があります。iOS アプリケーションは、シミュレーターではなく、実際のデバイス用に構築される必要があります。  
モバイルウェブアプリケーションのテストの場合  
**[実行設定]** で、**[ウェブアプリ]** を選択します。

1. **[テストを設定]** の **[テストフレームワークを選択]** セクションで、テストする Appium フレームワークを選択し、次に **[独自のテストパッケージをアップロード]** を選択します。

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

1. 手順に従ってデバイスを選択して、実行を開始します。詳細については、「[Device Farm でのテスト実行の作成](how-to-create-test-run.md)」を参照してください。

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

## テストのスクリーンショットを撮る (オプション)
<a name="test-types-appium-screenshots"></a>

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

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

 Appium テストでのスクリーンショットの撮影の詳細については、Appium API ドキュメントの「[スクリーンショットを撮る](http://appium.io/docs/en/commands/session/screenshot/)」を参照してください。

# AWS Device Farm での Android テスト
<a name="test-types-android-tests"></a>

Device Farm では、Android デバイスの複数の自動化テストタイプ、および 2 種類のビルトインテストがサポートされています。

Device Farm のテストに関する詳細については、「[AWS Device Farm のテストフレームワークと組み込みテスト](test-types.md)」を参照してください。

## Android アプリケーションテストフレームワーク
<a name="test-types-framework-android"></a>

Android デバイスでは、次のテストを使用できます。
+ [自動 Appium テストAppium テストとの統合](test-types-appium.md)
+ [インストルメンテーション](test-types-android-instrumentation.md)

## Android 用ビルトインテストタイプ
<a name="test-types-built-in-android"></a>

Android デバイスでは 1 つのビルトインのテストタイプを利用できます。
+ [ビルトイン: ファズ (Android および iOS)](test-types-built-in-fuzz.md)

# Android および AWS Device Farm のインストルメンテーション
<a name="test-types-android-instrumentation"></a>

Device Farm では、Android 用のインストルメンテーション (JUnit、Espresso、Robotium、または実装ベースのテスト) のサポートを提供します。

Device Farm には、サンプルの Android アプリケーションと、インストルメンテーション (Espresso) を含む 3 つの Android オートメーションフレームワークでの動作テストへのリンクが用意されています。[Android 用 Device Farm サンプルアプリケーション](https://github.com/awslabs/aws-device-farm-sample-app-for-android)は、GitHub でダウンロードできます。

Device Farm のテストに関する詳細については、「[AWS Device Farm のテストフレームワークと組み込みテスト](test-types.md)」を参照してください。

**Topics**
+ [インストゥルメンテーションについて](#test-types-android-instrumentation-what-is)
+ [Android インストルメンテーションテストに関する考慮事項](#test-types-android-instrumentation-settings)
+ [スタンダードモードのテスト解析](#test-types-android-standard-mode-test-parse)
+ [Android インストルメンテーションと Device Farm の統合](test-types-android-instrumentation-integrate.md)

## インストゥルメンテーションについて
<a name="test-types-android-instrumentation-what-is"></a>

Android のインストルメンテーションはテストコードでコールバックメソッドを呼び出すことができます。これにより、コンポーネントをデバッグしているかのように、コンポーネントのライフサイクルを段階的に実行できます。詳細については、「[Android 開発者ツール](https://developer.android.com/studio/test/test-in-android-studio#test_types_and_locations)」ドキュメントの「*テストのタイプと場所*」セクション内の「*インストルメント化テスト*」を参照してください。

## Android インストルメンテーションテストに関する考慮事項
<a name="test-types-android-instrumentation-settings"></a>

Android インストルメンテーションを使用する場合は、次の推奨事項と注意事項を考慮してください。

**Android OS の互換性を確認する**  
 [Android ドキュメント](https://developer.android.com/jetpack/androidx/releases/test#orchestrator-1.5.0)をチェックして、インストルメンテーションが Android OS バージョンと互換性があることを確認します。

**コマンドラインからの実行**  
 コマンドラインからインストルメンテーションテストを実行するには、[Android ドキュメント](https://developer.android.com/training/testing/instrumented-tests/androidx-test-libraries/runner#enable-command)に従ってください。

**システムアニメーション**  
 「[Espresso テスト用 Android ドキュメント](https://developer.android.com/training/testing/espresso)」に基づき、実際のデバイスでテストするときはシステムアニメーションをオフにすることをお勧めします。[android.support.test.runner.AndroidJUnitRunner](http://developer.android.com/reference/android/support/test/runner/AndroidJUnitRunner.html) インストルメンテーションテスト実行ナーを使用して実行する場合、Device Farm は **Window Animation Scale**、**Transition Animation Scale**、**Animator Duration Scale** の設定を自動的に無効にします。

**テストレコーダー**  
Device Farm は、Robotium などの記録および再生用スクリプティングツールを備えたフレームワークをサポートしています。

## スタンダードモードのテスト解析
<a name="test-types-android-standard-mode-test-parse"></a>

実行の標準モードでは、Device Farm はテストスイートを解析し、実行する固有のテストクラスおよびメソッドを識別します。これは [Dex Test Parser](https://github.com/linkedin/dex-test-parser) というツールを使って行われます。

Android インストルメンテーションの .apk ファイルを入力として指定すると、パーサーは JUnit 3 および JUnit 4 コンベンションに一致するテストの完全修飾メソッド名を返します。

これをローカル環境でテストするには: 

1. [https://github.com/linkedin/dex-test-parser](https://github.com/linkedin/dex-test-parser) バイナリーをダウンロードします。

1. 次のコマンドを実行して、Device Farm で実行されるテストメソッドのリストを取得します:

   ```
   java -jar parser.jar path/to/apk path/for/output
   ```

# Android インストルメンテーションと Device Farm の統合
<a name="test-types-android-instrumentation-integrate"></a>

**注記**  
Android インストルメンテーションテストを AWS Device Farm と統合するには、次の手順に従います。Device Farm でのインストルメンテーションテストの使用に関する詳細については、「[Android および AWS Device Farm のインストルメンテーション](test-types-android-instrumentation.md)」を参照してください。

## Android インストルメンテーションテストをアップロードする
<a name="test-types-android-instrumentation-upload"></a>

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

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

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

1. プロジェクトのリストで、テストをアップロードするプロジェクトを選択します。
**ヒント**  
検索バーで名前によりプロジェクトリストを絞り込めます。  
プロジェクトを作成するには、「[AWS Device Farm でのプロジェクトの作成](how-to-create-project.md)」の手順に従ってください。

1. **[ルールを作成]** を選択します。

1. **[アプリを選択]** の **[アプリの選択オプション]** セクションで、**[アプリをアップロード]** を選択します。

1. Android アプリケーションファイルを参照して選択します。このファイルは、.apk ファイルである必要があります。

1. **[テスト設定]** ページの **[テストフレームワークを選択]** セクションにある **[インストルメンテーション]** を選択し、次に **[ファイルを選択]** を選びます。

1. テストが含まれている .apk ファイルを参照して選択します。

1. 残りの手順を完了し、デバイスを選択して実行を開始します。

## (オプション) Android インストルメンテーションテストでのスクリーンショットの撮影
<a name="test-types-android-instrumentation-screenshots"></a>

Android インストゥルメンテーションインストゥルメンテーションテストの一部としてスクリーンショットを撮ることができます。

スクリーンショットを撮るには、次のいずれかのメソッドを呼び出します:
+ Robotium の場合は、`takeScreenShot` メソッドを呼び出します (例: `solo.takeScreenShot();`)。
+ Spoon の場合は、次のような `screenshot` メソッドを呼び出します:

  ```
  Spoon.screenshot(activity, "initial_state");
  /* Normal test code... */
  Spoon.screenshot(activity, "after_login");
  ```

テスト実行中、Device Farm は、デバイス上の次の場所 (存在する場合) からスクリーンショットを撮影し、テストレポートに追加します:
+ `/sdcard/robotium-screenshots`
+ `/sdcard/test-screenshots`
+ `/sdcard/Download/spoon-screenshots/test-class-name/test-method-name`
+ `/data/data/application-package-name/app_spoon-screenshots/test-class-name/test-method-name`

# AWS Device Farm での iOS テスト
<a name="test-types-ios-tests"></a>

Device Farm では、iOS デバイスの複数の自動化テストタイプ、および、ビルトインテストがサポートされています。

Device Farm のテストに関する詳細については、「[AWS Device Farm のテストフレームワークと組み込みテスト](test-types.md)」を参照してください。

## iOS アプリケーションテストフレームワーク
<a name="test-types-framework-ios"></a>

iOS デバイスでは、次のテストを使用できます。
+ [自動 Appium テストAppium テストとの統合](test-types-appium.md)
+ [XCTest](test-types-ios-xctest.md)
+ [XCTest UI](test-types-ios-xctest-ui.md)

## iOS 用ビルトインテストタイプ
<a name="test-types-built-in-ios"></a>

現在、iOS デバイスで 1 つの組み込みのテストタイプが利用できます。
+ [ビルトイン: ファズ (Android および iOS)](test-types-built-in-fuzz.md)

# Device Farm と XCTest for iOS の統合
<a name="test-types-ios-xctest"></a>

Device Farm により、XCTest フレームワークを使用してアプリケーションを実際のデバイスでテストできます。XCTest の詳細については、「*Xcode によるテスト*」の 「[テストの基本](https://developer.apple.com/library/ios/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/03-testing_basics.html)」を参照してください。

テストを実行するには、テスト実行用のパッケージを作成し、これらのパッケージを Device Farm にアップロードします。

Device Farm のテストに関する詳細については、「[AWS Device Farm のテストフレームワークと組み込みテスト](test-types.md)」を参照してください。

**Topics**
+ [XCTest 実行用のパッケージを作成する](#test-types-ios-xctest-create-packages)
+ [XCTest 実行用パッケージを Device Farm にアップロードする](#test-types-ios-xctest-upload)

## XCTest 実行用のパッケージを作成する
<a name="test-types-ios-xctest-create-packages"></a>

XCTest フレームワークによりアプリケーションをテストするには、Device Farm に以下が必要です:
+ `.ipa` ファイルのアプリケーションパッケージ。
+ `.zip` ファイルの XCTest パッケージ。

Xcode が生成するビルド出力を使用してこれらのパッケージを作成します。次のステップを完了してパッケージを作成し、Device Farm にアップロードできるようにします。​

**アプリケーションのビルド出力を生成するには**

1. Xcode でアプリケーションプロジェクトを開きます。

1. Xcode ツールバーのスキームのドロップダウンメニューで、**[汎用 iOS デバイス]** を送信先として選択します。

1. **[製作物]** メニューで、**[ビルド用途]** を選択した後、**[テスト]** を選択します。

**アプリケーションパッケージを作成するには**

1. Xcode のプロジェクトナビゲーターの **[製作物]** で、`app-project-name.app` という名前のファイルのコンテキストメニューを開きます。次に、**[Finder で表示]** を選択します。`Debug-iphoneos` という名前のフォルダが Finder で開きます。ここに、Xcode によってテストビルド用に生成された出力が含まれています。このフォルダには `.app` ファイルが含まれています。​

1. Finder で、新規フォルダを作成して `Payload` という名前を付けます。

1. `app-project-name.app` ファイルをコピーして、`Payload` フォルダに貼り付けます。

1. `Payload` フォルダのコンテキストメニューを開き、**[「Payload」を圧縮]** を選択します。`Payload.zip` という名前のファイルが作成されます。

1. `Payload.zip` のファイル名と拡張子を `app-project-name.ipa` に変更します。

   後のステップで、このファイルを Device Farm に提供します。ファイルは、見つけやすくするためにデスクトップなど別の場所に移動させても構いません。

1. `Payload` フォルダとその中にある `.app` ファイルは必要に応じて削除できます。​

**XCTest パッケージを作成するには**

1. Finder を使用し、`Debug-iphoneos` ディレクトリで `app-project-name.app` ファイルのコンテキストメニューを開きます。次に、**[パッケージ内容を表示]** を選択します。

1. パッケージ内容の中で、`Plugins` フォルダを開きます。​ このフォルダに `app-project-name.xctest` という名前のファイルが含まれています。

1. このファイルのコンテキストメニューを開き、**[「`app-project-name.xctest`」を圧縮]** を選択します。`app-project-name.xctest.zip` という名前のファイルが作成されます。

   後のステップで、このファイルを Device Farm に提供します。ファイルは、見つけやすくするためにデスクトップなど別の場所に移動させても構いません。

## XCTest 実行用パッケージを Device Farm にアップロードする
<a name="test-types-ios-xctest-upload"></a>

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

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

1. まだプロジェクトがない場合は作成します。プロジェクトを作成するステップについては、「[AWS Device Farm でのプロジェクトの作成](how-to-create-project.md)」を参照してください。

   それ以外の場合は、Device Farm ナビゲーションパネルで、**[モバイルデバイスのテスト]** を選択して、**[プロジェクト]** を選択します。

1. テストを実行するために使用するプロジェクトを選択します。

1. **[実行を作成]** を選択します。

1. **[実行設定]** の **[実行タイプ]** セクションで、**[iOS アプリ]** を選択します。

1. **[アプリを選択]** の **[アプリの選択オプション]** セクションで、**[アプリをアップロード]** を選択します。次に、**[アプリをアップロード]** で **[ファイルを選択]** を選択します。

1. アプリケーション用の `.ipa` ファイルを見つけ、アップロードします。
**注記**  
`.ipa` パッケージはテスト用にビルドされている必要があります。

1. **[テスト設定]** ページの **[テストフレームワークを選択]** セクションで、**[XCTest]** を選択します。次に、**[アプリをアップロード]** で **[ファイルを選択]** を選択します。

1. アプリケーション用 XCTest パッケージが含まれている `.zip` ファイルを見つけてアップロードします。

1. プロジェクトの作成プロセスの残りのステップを完了します。テストするデバイスを選択し、デバイス状態を指定します。

1. **[実行を作成]** を選択します。Device Farm によってテストが実行され、結果がコンソールに表示されます。​

# iOS 用 XCTest UI と Device Farm の統合
<a name="test-types-ios-xctest-ui"></a>

Device Farm では、XCTest UI テストフレームワークをサポートしています。中でも、Device Farm では、Objective-C と [Swift](https://developer.apple.com/swift/) の両方で記述される XCTest UI テストをサポートしています。

 XCTest UI フレームワークは、XCTest 上に構築された iOS 開発での UI テストを可能にします。詳細については、iOS 開発者ライブラリの「[ユーザーインターフェイスのテスト](https://developer.apple.com/library/prerelease/ios/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/09-ui_testing.html#//apple_ref/doc/uid/TP40014132-CH13-SW1)」を参照してください。

Device Farm でのテストに関する一般的な情報については、「[AWS Device Farm のテストフレームワークと組み込みテスト](test-types.md)」を参照してください。

次の手順を使用して、Device Farm を iOS 用の XCTest UI テストフレームワークと統合します。

**Topics**
+ [iOS XCTest UI テストを準備する](#test-types-ios-xctest-ui-prepare)
+ [オプション 1: XCTest UI .ipa パッケージの作成](#how-to-use-create-XCTestUI-ipa-package)
+ [オプション 2: XCTest UI .zip パッケージの作成](#how-to-use-create-XCTestUI-zip-package)
+ [iOS XCTest UI テストをアップロードする](#test-types-ios-xctest-ui-upload)

## iOS XCTest UI テストを準備する
<a name="test-types-ios-xctest-ui-prepare"></a>

XCTEST\$1UI テストパッケージの `.ipa` ファイルまたは `.zip` ファイルをアップロードできます。

`.ipa` ファイルは、バンドル形式の iOS Runner アプリを含むアプリケーションアーカイブです。*追加のファイルを `.ipa` ファイルに含めることはできません。*

`.zip` ファイルをアップロードする場合、iOS Runner アプリを直接、または `.ipa` ファイルのいずれかを含めることができます。テスト中に他のファイルを使用する場合は、`.zip` ファイル内に他のファイルを含めることもできます。例えば、`.zip` ファイル内に `.xctestrun`、`.xcworkspace`、`.xcodeproj` などのファイルを含めて、Device Farm で XCUI テストプランを実行できます。テストプランの実行方法の詳しい手順については、XCUI テストタイプのデフォルトのテスト仕様ファイルを参照してください。

## オプション 1: XCTest UI .ipa パッケージの作成
<a name="how-to-use-create-XCTestUI-ipa-package"></a>

*yourAppName*UITest-Runner.app バンドルは、テストのためにプロジェクトをビルドするときに Xcode によって生成されます。プロジェクトの Products ディレクトリにあります。

.ipa ファイルを作成するには

1. *Payload* と名付けたディレクトリを作成します。

1. アプリディレクトリを Payload ディレクトリに追加します。

1. 次に、Payload ディレクトリを `.zip` ファイルにアーカイブし、ファイル拡張子を `.ipa` に変更します。

 次のフォルダ構造は、*my-project-nameUITest-Runner.app* という名前のサンプルアプリケーションが `.ipa` ファイルとしてパッケージ化される方法を示しています。

```
.
└── my-project-nameUITest.ipa
    └── Payload (directory)
        └── my-project-nameUITest-Runner.app
```

## オプション 2: XCTest UI .zip パッケージの作成
<a name="how-to-use-create-XCTestUI-zip-package"></a>

Device Farm は、完全な XCTest UI テストスイートを実行するための `.xctestrun` ファイルを自動生成します。Device Farm で独自の `.xctestrun` ファイルを使用する場合は、`.xctestrun` ファイルとアプリケーションディレクトリを `.zip` ファイルに圧縮できます。テストパッケージ用の `.ipa` ファイルがすでにある場合は、*\$1-Runner.app* の代わりにこのファイルを含めることができます。

```
.
└── swift-sample-UI.zip (directory)
   ├── my-project-nameUITest-Runner.app [OR] my-project-nameUITest.ipa
   ├── SampleTestPlan_2.xctestrun
   ├── SampleTestPlan_1.xctestrun
   └── (any other files)
```

 Device Farm で XCUI テストの Xcode テストプランを実行する場合は、*my-project-nameUITest-Runner.app* **または** *my-project-nameUITest.ipa* ファイルを含む zip と、`.xcworkspace` または `.xcodeproj` ファイルを含むテストプランで XCTEST\$1UI を実行するために必要な xcode ソースコードファイルを作成できます。

`.xcodeproj` ファイルを使用した zip の例を次に示します。

```
.
└── swift-sample-UI.zip (directory)
   ├── my-project-nameUITest-Runner.app [OR] my-project-nameUITest.ipa
   ├── (any directory)
   └── SampleXcodeProject.xcodeproj
        ├── Testplan_1.xctestplan
        ├── Testplan_2.xctestplan
        └── (any other source code files created by xcode with .xcodeproj)
```

`.xcworkspace` ファイルを使用した zip の例を次に示します。

```
.
└──swift-sample-UI.zip (directory)
   ├── my-project-nameUITest-Runner.app [OR] my-project-nameUITest.ipa
   └── (any directory)
   │   ├── SampleXcodeProject.xcodeproj
   │   ├── Testplan_1.xctestplan
   │   ├── Testplan_2.xctestplan
   |   └── (any other source code files created by xcode with .xcodeproj)
   └── SampleWorkspace.xcworkspace
       └── contents.xcworkspacedata
```

**注記**  
XCTest UI .zip パッケージ内に「Payload」という名前のディレクトリがないことを確認してください。

## iOS XCTest UI テストをアップロードする
<a name="test-types-ios-xctest-ui-upload"></a>

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

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

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

1. プロジェクトのリストで、テストをアップロードするプロジェクトを選択します。
**ヒント**  
検索バーで名前によりプロジェクトリストを絞り込めます。  
プロジェクトを作成するには、「[AWS Device Farm でのプロジェクトの作成](how-to-create-project.md)」の手順に従ってください

1. **[実行を作成]** を選択します。

1. **[実行設定]** の **[実行タイプ]** セクションで、**[iOS アプリ]** を選択します。

1. **[アプリを選択]** の **[アプリの選択オプション]** セクションで、**[アプリをアップロード]** を選択します。次に、**[アプリをアップロード]** で **[ファイルを選択]** を選択します。

1. iOS アプリケーションファイルを参照して選択します。このファイルは、.ipa ファイルである必要があります。
**注記**  
.ipa ファイルがシミュレーター用ではなく iOS デバイス用に作成されていることを確認します。

1. **[テスト設定]**の **[テストフレームワークを選択]** セクションで、**[XCTest UI]** を選択します。次に、**[アプリをアップロード]** で **[ファイルを選択]** を選択します。

1. iOS XCTest UI テストランナーを含む .ipa ファイルを参照して選択します。

1. 実行作成プロセスの残りのステップを実行します。テストするデバイスを選択し、オプションで追加の設定を指定します。

1. **[実行を作成]** を選択します。Device Farm によってテストが実行され、結果がコンソールに表示されます。​

# AWS Device Farm でのウェブアプリケーションテスト
<a name="test-types-web-app-tests"></a>

Device Farm は、ウェブアプリケーション用に Appium によるテストを提供します。Device Farm での Appium テストの設定についての詳細は、「[Device Farm で Appium テストを自動的に実行する](test-types-appium.md)」を参照してください。

Device Farm のテストに関する詳細については、「[AWS Device Farm のテストフレームワークと組み込みテスト](test-types.md)」を参照してください。

## 計測および計測対象外デバイスのルール
<a name="web-app-tests-metered-unmetered-devices-rules"></a>

ここでいう計測とは、デバイスに対する請求を指します。デフォルトでは、Device Farm デバイスが計測され、無料試用期間が経過すると 1 分ごとに課金されます。また、計測対象外のデバイスを購入することもできます。これにより、毎月の定額料金で無制限のテストが可能になります。料金の詳細については、「[AWS Device Farm 料金表](https://aws.amazon.com/device-farm/)」を参照してください。

iOS デバイスと Android デバイスの両方を含むデバイスプールで実行を開始する場合は、計測対象デバイスと計測対象外デバイスのルールがあります。例えば、計測対象外 Android デバイスが 5 個、計測対象外 iOS デバイスが 5 個ある場合、ウェブテスト実行では、計測対象外デバイスが使用されます。

 別の例として、計測対象外 Android デバイスが 5 個あり、計測対象外 iOS デバイスはないとします。ウェブ実行のために Android デバイスのみを選択すると、計測対象外デバイスが使用されます。ウェブ実行のために Android デバイスと iOS デバイスの両方を選択すると、課金方法が計測され、計測対象外デバイスは使用されません。

# AWS Device Farm でのビルトインテスト
<a name="test-types-built-in-tests"></a>

Device Farm では、Android デバイスおよび iOS デバイス用のビルトインテストタイプのサポートを提供します。

ビルトインテストでは、テスト自動化スクリプトを記述、管理することなく、複数デバイスでアプリケーションをテストできます。これにより、特に Device Farm の使用を開始するときに、時間と労力を節約できます。Device Farm は次のビルトインテストタイプを提供します。
+ [ビルトイン: ファズ (Android および iOS)](test-types-built-in-fuzz.md) – Fuzz テストは、ユーザーインターフェイスイベントをデバイスにランダムに送信して、その結果をレポートします。

Device Farm でのテストとテストフレームワークの詳細については、「[AWS Device Farm のテストフレームワークと組み込みテスト](test-types.md)」を参照してください。



# Device Farm のビルトイン Fuzz テストの実行 (Android と iOS)
<a name="test-types-built-in-fuzz"></a>

ビルトイン Fuzz テストでは、ユーザーインターフェイスイベントをデバイスにランダムに送信して、その結果をレポートします。

Device Farm のテストに関する詳細については、「[AWS Device Farm のテストフレームワークと組み込みテスト](test-types.md)」を参照してください。

**ビルトイン Fuzz テストを実行するには**

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

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

1. プロジェクトの一覧で、ビルトイン Fuzz テストを実行するプロジェクトを選択します。
**ヒント**  
検索バーで名前によりプロジェクトリストを絞り込むことができます。  
プロジェクトを作成するには、「[AWS Device Farm でのプロジェクトの作成](how-to-create-project.md)」の手順に従ってください。

1. **[実行を作成]** を選択します。

1. **[実行設定]** の **[実行タイプ]** セクションで実行タイプを選択します。Android アプリをテストする準備が整っていない場合、または Android (.apk) アプリをテストする場合は、**[Android アプリ]** を選択します。iOS (.ipa) アプリをテストする場合は、**[iOS アプリ]** を選択します。

1. **[アプリを選択]** で、テストに使用できるアプリがない場合は、**[Device Farm が提供するサンプルアプリを選択]** を選択します。独自のアプリを持ち込む場合は、**[独自のアプリをアップロード]** を選択し、アプリケーションファイルを選択します。

1. **[テスト設定]** の **[テストフレームワークを選択]** セクションで、**[ビルトイン: Fuzz]** を選択します。

1. 以下のいずれかの設定が表示された場合は、デフォルト値をそのまま使用するか、独自の値を指定できます:
   + **イベント数**: Fuzz テストが実行するユーザーインターフェイスイベントの数を 1～10,000 の範囲で指定します。
   + **イベント調整**: 次のユーザーインターフェイスイベントを実行する前に Fuzz テストが待機するミリ秒数を 0 〜 1,000 の範囲で指定します。
   + **ランダマイザーシード**: Fuzz テストがユーザーインターフェイスイベントのランダム化に使用する数を指定します。後続のファズテストに同じ番号を指定すると、同じイベントシーケンスが確保されます。

1. 残りの手順を完了し、デバイスを選択して実行を開始します。