

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 測試在 AWS Device Farm 中執行
<a name="runs"></a>

Device Farm 中的執行代表應用程式的特定組建，具有一組特定的測試，可在一組特定的裝置上執行。執行會產生報告，其中包含執行結果的相關資訊。執行包含一或多個任務。如需詳細資訊，請參閱[執行](test-runs.md)。

您可以使用 AWS Device Farm 主控台、 AWS Command Line Interface (AWS CLI) 或 AWS Device Farm API 來使用測試執行。

**Topics**
+ [在 Device Farm 中建立測試執行](how-to-create-test-run.md)
+ [在 AWS Device Farm 中設定測試執行的執行逾時](how-to-set-default-timeout-for-test-runs.md)
+ [模擬 AWS Device Farm 執行的網路連線和條件](how-to-simulate-network-connections-and-conditions.md)
+ [在 AWS Device Farm 中停止執行](how-to-stop-test-runs.md)
+ [檢視 AWS Device Farm 中的執行清單](how-to-view-runs-list.md)
+ [在 AWS Device Farm 中建立裝置集區](how-to-create-device-pool.md)
+ [在 AWS Device Farm 中分析測試結果](analyzing-results.md)

# 在 Device Farm 中建立測試執行
<a name="how-to-create-test-run"></a>

您可以使用 Device Farm 主控台 AWS CLI或 Device Farm API 來建立測試執行。您也可以使用支援的外掛程式，例如 Device Farm 的 Jenkins 或 Gradle 外掛程式。如需外掛程式的詳細資訊，請參閱 [工具和外掛程式](aws-device-farm-tools-plugins.md)。如需執行的詳細資訊，請參閱[執行](test-runs.md)。

**Topics**
+ [先決條件](#how-to-create-test-run-prerequisites)
+ [建立測試執行 （主控台）](#how-to-create-test-run-console)
+ [建立測試執行 (AWS CLI)](#how-to-create-test-run-cli)
+ [建立測試執行 (API)](#how-to-create-test-run-api)
+ [後續步驟](#how-to-create-test-run-console-next-steps)

## 先決條件
<a name="how-to-create-test-run-prerequisites"></a>

您必須在 Device Farm 中擁有專案。請遵循[在 AWS Device Farm 中建立專案](how-to-create-project.md)中的指示，然後返回此頁面。

## 建立測試執行 （主控台）
<a name="how-to-create-test-run-console"></a>

1. 登入 Device Farm 主控台，網址為 https：//[https://console.aws.amazon.com/devicefarm](https://console.aws.amazon.com/devicefarm)。

1. 在導覽窗格中，選擇**行動裝置測試**，然後選擇**專案**。

1. 如果您已有專案，則可以將您的測試上傳至其中。否則，請選擇**新增專案**，輸入**專案名稱**，然後選擇**建立**。

1. 開啟您的專案，然後選擇**建立執行**。

1. （選用） 在**執行設定**下，於**執行名稱**區段中，輸入執行的名稱。如果未提供名稱，則 Device Farm 主控台預設會將您的執行命名為「My Device Farm run」。

1. （選用） 在**執行設定**下，在**任務逾時**區段中，您可以指定測試執行的執行逾時。如果您使用的是無限制的測試槽，請確認已在 **Billing 方法**下選取 **Unmetered**。

1. 在**執行設定**下，於**執行類型**區段中，選取您的執行類型。如果您沒有準備好進行測試的應用程式，或者您正在測試 Android **應用程式** (.apk)，請選取 Android 應用程式。如果您要測試 **iOS** (.ipa) 應用程式，請選取 iOS 應用程式。如果您想要測試 **Web 應用程式**，請選取 Web 應用程式。

1. 在**選取應用程式**下，在**應用程式選取選項**區段中，如果您沒有可供測試的應用程式，請選擇**選取 Device Farm 提供的範例**應用程式。如果您要使用自己的應用程式，請選取**上傳自己的應用程式**，然後選擇您的應用程式檔案。如果您上傳的是 iOS 應用程式，請務必選擇 **iOS device (iOS 裝置)**，而非模擬器。

1. 在**設定測試**下，選擇其中一個可用的測試架構。
**注意**  
如果沒有任何可用的測試，請選擇 **Built-in: Fuzz (內建：Fuzz)**，以執行標準內建測試套件。如果您選擇 **Built-in: Fuzz (內建：Fuzz)**，且出現 **Event count (事件計數)**、**Event throttle (事件調節)** 和 **Randomizer seed (亂數種子)** 方塊，則可變更或保留值。

   如需可用測試套件的詳細資訊，請參閱[AWS Device Farm 中的測試架構和內建測試](test-types.md)。

1. 如果您未選擇**內建：模糊**，請選取**選取測試套件**下的**選擇檔案**。瀏覽並選擇包含測試的檔案。

1. 針對您的測試環境，選擇**在我們的標準環境中執行您的測試**，或在**自訂環境中執行您的測試**。如需詳細資訊，請參閱[在 AWS Device Farm 中測試環境](test-environments.md)。

1. 如果您使用的是自訂測試環境，您可以選擇執行下列動作：
   + 如果您想要在自訂測試環境中編輯預設測試規格，請選擇 **Edit (編輯)** 來更新預設 YAML 規格。
   + 如果您變更了測試規格，請選擇**另存新**檔來更新它。
   + 您可以設定環境變數。此處提供的變數將優先於父專案上可能設定的任何 。

1. 在**選取裝置**下，執行下列其中一項操作：
   + 若要選擇內建的裝置集區來對其執行測試，請對於 **Device pool (裝置集區)**，選擇 **Top Devices (熱門裝置)**。
   + 若要建立您自己的裝置集區來對其執行測試，請依照[建立裝置集區](how-to-create-device-pool.md)中的指示，然後返回此頁面。
   + 如果您先前已建立自己的裝置集區，請對於 **Device pool (裝置集區)**，選擇您的裝置集區。
   + 選取**手動選取裝置**，然後選擇您要執行的目標裝置。此組態將不會儲存。

   如需詳細資訊，請參閱[AWS Device Farm 中的裝置支援Devices](devices.md)。

1. （選用） 若要新增其他組態，請開啟**其他組態**下拉式清單。在本節中，您可以執行下列任何動作：
   + 若要提供執行角色 ARN，或覆寫父專案上設定的執行角色 ARN，請使用 Exectuion 角色 ARN 欄位。
   + 若要提供其他資料供 Device Farm 在執行期間使用，請在**新增額外資料**旁選擇**選擇檔案**，然後瀏覽並選擇包含資料的 .zip 檔案。
   + 若要在執行期間安裝 Device Farm 的其他應用程式，請在**安裝其他應用程式**旁選擇**選擇檔案**，然後瀏覽並選擇包含應用程式的 .apk 或 .ipa 檔案。對於其他您要安裝的應用程式重複此動作。您可以在上傳應用程式之後，藉由拖放它們來變更安裝順序。
   + 若要指定執行期間是否啟用 Wi-Fi、藍牙、GPS 或 NFC，請在 **Set radio states (設定無線電狀態)** 旁選取適當的方塊。
   + 若要預設執行的裝置經緯度，請在 **Device location (裝置位置)** 旁輸入座標。
   + 若要預設執行的裝置地區設定，請在**裝置地區設定**中選擇地區設定。
   + 選取**啟用影片錄製**以在測試期間錄製影片。
   + 選取**啟用應用程式效能資料擷取**，以從裝置擷取效能資料。
**注意**  
設定裝置無線電狀態和地區設定目前僅適用於 Android 原生測試的選項。
**注意**  
如果您有私有裝置，也會顯示私有裝置特定的組態。

1. 在頁面底部，選擇**建立執行**以排程執行。

Device Farm 會在裝置可用時立即啟動執行，通常在幾分鐘內。在測試執行期間，Device Farm 主控台會在執行資料表![\[Device Farm scheduled a job.\]](http://docs.aws.amazon.com/zh_tw/devicefarm/latest/developerguide/images/df-run-calendar.png)中顯示待處理圖示。執行中的每個裝置也會以待定圖示開頭，然後在![\[Device Farm progress indicator.\]](http://docs.aws.amazon.com/zh_tw/devicefarm/latest/developerguide/images/df-run-progress.png)測試開始時切換到執行中圖示。當每個測試完成時，裝置名稱旁會顯示測試結果圖示。完成所有測試後，執行旁的待定圖示會變更為測試結果圖示。

如果您想要停止測試執行，請參閱 [在 AWS Device Farm 中停止執行](how-to-stop-test-runs.md)。

## 建立測試執行 (AWS CLI)
<a name="how-to-create-test-run-cli"></a>

您可以使用 AWS CLI 來建立測試執行。

**Topics**
+ [步驟 1：選擇專案](#how-to-create-test-run-cli-step1)
+ [步驟 2：選擇裝置集區](#how-to-create-test-run-cli-step2)
+ [步驟 3：上傳您的應用程式檔案](#how-to-create-test-run-cli-step3)
+ [步驟 4：上傳您的測試指令碼套件](#how-to-create-test-run-cli-step4)
+ [步驟 5：（選用） 上傳您的自訂測試規格](#how-to-create-test-run-cli-step5)
+ [步驟 6：排程測試執行](#how-to-create-test-run-cli-step6)

### 步驟 1：選擇專案
<a name="how-to-create-test-run-cli-step1"></a>

您必須將測試執行與 Device Farm 專案建立關聯。

1. 若要列出 Device Farm 專案，請執行 **list-projects**。如果您沒有專案，請參閱[在 AWS Device Farm 中建立專案](how-to-create-project.md)。

   範例：

   ```
   aws devicefarm list-projects
   ```

   回應包含 Device Farm 專案的清單。

   ```
   {
       "projects": [
           {
               "name": "MyProject",
               "arn": "arn:aws:devicefarm:us-west-2:123456789101:project:5e01a8c7-c861-4c0a-b1d5-12345EXAMPLE",
               "created": 1503612890.057
           }
       ]
   }
   ```

1. 選擇要與測試執行建立關聯的專案，並記下其 Amazon Resource Name (ARN)。

### 步驟 2：選擇裝置集區
<a name="how-to-create-test-run-cli-step2"></a>

您必須選擇要與測試執行建立關聯的裝置集區。

1. 若要檢視裝置集區，請執行 **list-device-pools** 並指定專案 ARN。

   範例：

   ```
   aws devicefarm list-device-pools --arn arn:MyProjectARN
   ```

   回應包含內建的 Device Farm 裝置集區，例如 **Top Devices**，以及先前為此專案建立的任何裝置集區：

   ```
   {
       "devicePools": [
           {
               "rules": [
                   {
                       "attribute": "ARN",
                       "operator": "IN",
                       "value": "[\"arn:aws:devicefarm:us-west-2::device:example1\",\"arn:aws:devicefarm:us-west-2::device:example2\",\"arn:aws:devicefarm:us-west-2::device:example3\"]"
                   }
               ],
               "type": "CURATED",
               "name": "Top Devices",
               "arn": "arn:aws:devicefarm:us-west-2::devicepool:example",
               "description": "Top devices"
           },
           {
               "rules": [
                   {
                       "attribute": "PLATFORM",
                       "operator": "EQUALS",
                       "value": "\"ANDROID\""
                   }
               ],
               "type": "PRIVATE",
               "name": "MyAndroidDevices",
               "arn": "arn:aws:devicefarm:us-west-2:605403973111:devicepool:example2"
           }
       ]
   }
   ```

1. 選擇裝置集區，並記下其 ARN。

   您也可以建立裝置集區，然後返回此步驟。如需詳細資訊，請參閱[建立裝置集區 (AWS CLI)](how-to-create-device-pool.md#how-to-create-device-pool-cli)。

### 步驟 3：上傳您的應用程式檔案
<a name="how-to-create-test-run-cli-step3"></a>

若要建立上傳請求並取得 Amazon Simple Storage Service (Amazon S3) 預先簽章的上傳 URL，您需要：
+ 您的專案 ARN。
+ 您的應用程式檔案名稱。
+ 上傳的類型。

如需詳細資訊，請參閱[https://docs.aws.amazon.com/cli/latest/reference/devicefarm/create-upload.html](https://docs.aws.amazon.com/cli/latest/reference/devicefarm/create-upload.html)。

1. 若要上傳檔案，請搭配 `–-project-arn`、`--name` 和 `--type` 參數執行 **create-upload**。

   此範例會建立 Android 應用程式的上傳：

   ```
   aws devicefarm create-upload -–project-arn arn:MyProjectArn -–name MyAndroid.apk -–type ANDROID_APP
   ```

   回應包含您的應用程式上傳 ARN 和預先簽章的 URL。

   ```
   {
       "upload": {
           "status": "INITIALIZED",
           "name": "MyAndroid.apk",
           "created": 1535732625.964,
           "url": "https://prod-us-west-2-uploads.s3-us-west-2.amazonaws.com/ExampleURL",
           "type": "ANDROID_APP",
           "arn": "arn:aws:devicefarm:us-west-2:123456789101:upload:5e01a8c7-c861-4c0a-b1d5-12345EXAMPLE"
       }
   }
   ```

1. 記下應用程式上傳 ARN 和預先簽章的 URL。

1. 使用 Amazon S3 預先簽章的 URL 上傳您的應用程式檔案。此範例會使用 **curl** 來上傳 Android .apk 檔案：

   ```
   curl -T MyAndroid.apk "https://prod-us-west-2-uploads.s3-us-west-2.amazonaws.com/ExampleURL"
   ```

   如需詳細資訊，請參閱《*Amazon Simple Storage Service 使用者指南*》中的[使用預先簽章URLs 上傳物件](https://docs.aws.amazon.com/AmazonS3/latest/userguide/PresignedUrlUploadObject.html)。

1. 若要檢查應用程式的上傳狀態，請執行 **get-upload**，並指定上傳的應用程式 ARN。

   ```
   aws devicefarm get-upload –-arn arn:MyAppUploadARN
   ```

   等到回應中的狀態為 **SUCCEEDED**，然後再上傳您的測試指令碼套件。

   ```
   {
       "upload": {
           "status": "SUCCEEDED",
           "name": "MyAndroid.apk",
           "created": 1535732625.964,
           "url": "https://prod-us-west-2-uploads.s3-us-west-2.amazonaws.com/ExampleURL", 
           "type": "ANDROID_APP",
           "arn": "arn:aws:devicefarm:us-west-2:123456789101:upload:5e01a8c7-c861-4c0a-b1d5-12345EXAMPLE",
           "metadata": "{"valid": true}"
       }
   }
   ```

### 步驟 4：上傳您的測試指令碼套件
<a name="how-to-create-test-run-cli-step4"></a>

接下來，您會上傳您的測試指令碼套件。

1. 若要建立您的上傳請求並取得 Amazon S3 預先簽章的上傳 URL，**create-upload**請使用 `–-project-arn`、 `--name`和 `--type` 參數執行 。

   此範例會建立 Appium Java TestNG 測試套件上傳：

   ```
   aws devicefarm create-upload –-project-arn arn:MyProjectARN -–name MyTests.zip –-type APPIUM_JAVA_TESTNG_TEST_PACKAGE
   ```

   回應包含您的測試套件上傳 ARN 和預先簽章的 URL。

   ```
   {
       "upload": {
           "status": "INITIALIZED",
           "name": "MyTests.zip",
           "created": 1535738627.195,
           "url": "https://prod-us-west-2-uploads.s3-us-west-2.amazonaws.com/ExampleURL",
           "type": "APPIUM_JAVA_TESTNG_TEST_PACKAGE",
           "arn": "arn:aws:devicefarm:us-west-2:123456789101:upload:5e01a8c7-c861-4c0a-b1d5-12345EXAMPLE"
       }    
   }
   ```

1. 記下測試套件上傳的 ARN 和預先簽章的 URL。

1. 使用 Amazon S3 預先簽章的 URL 上傳您的測試指令碼套件檔案。此範例會使用 **curl** 來上傳壓縮的 Appium TestNG 指令碼檔案：

   ```
   curl -T MyTests.zip "https://prod-us-west-2-uploads.s3-us-west-2.amazonaws.com/ExampleURL"
   ```

1. 若要檢查測試指令碼套件上傳的狀態，請執行 **get-upload**，並指定測試套件上傳的 ARN，其來自步驟 1。

   ```
   aws devicefarm get-upload –-arn arn:MyTestsUploadARN
   ```

   等到回應中的狀態為 **SUCCEEDED**，然後再繼續下一步 (選用步驟)。

   ```
   {
       "upload": {
           "status": "SUCCEEDED",
           "name": "MyTests.zip",
           "created": 1535738627.195,
           "url": "https://prod-us-west-2-uploads.s3-us-west-2.amazonaws.com/ExampleURL", 
           "type": "APPIUM_JAVA_TESTNG_TEST_PACKAGE",
           "arn": "arn:aws:devicefarm:us-west-2:123456789101:upload:5e01a8c7-c861-4c0a-b1d5-12345EXAMPLE",
           "metadata": "{"valid": true}"
       }
   }
   ```

### 步驟 5：（選用） 上傳您的自訂測試規格
<a name="how-to-create-test-run-cli-step5"></a>

如果您是在標準測試環境中執行測試，則可跳過此步驟。

Device Farm 會維護每個支援測試類型的預設測試規格檔案。接著，您會下載預設測試規格，並將其用來建立自訂測試規格，以在自訂測試環境中執行您的測試。如需詳細資訊，請參閱[在 AWS Device Farm 中測試環境](test-environments.md)。

1. 若要尋找預設測試規格的上傳 ARN，請執行 **list-uploads** 並指定專案 ARN。

   ```
   aws devicefarm list-uploads --arn arn:MyProjectARN
   ```

   回應會包含每個預設測試規格的項目：

   ```
   {
       "uploads": [
           {
   
               {
                   "status": "SUCCEEDED",
                   "name": "Default TestSpec for Android Appium Java TestNG",
                   "created": 1529498177.474,
                   "url": "https://prod-us-west-2-uploads.s3-us-west-2.amazonaws.com/ExampleURL", 
                   "type": "APPIUM_JAVA_TESTNG_TEST_SPEC",
                   "arn": "arn:aws:devicefarm:us-west-2:123456789101:upload:5e01a8c7-c861-4c0a-b1d5-12345EXAMPLE"
               }
           }
       ]
   }
   ```

1. 從清單中選擇您的預設測試規格。請記下上傳 ARN。

1. 執行 **get-upload** 並指定上傳 ARN，即可下載預設測試規格。

   範例：

   ```
   aws devicefarm get-upload –-arn arn:MyDefaultTestSpecARN
   ```

   回應包含預先簽章的 presigned URL，其中您可以下載預設測試規格。

1. 此範例會使用 **curl** 來下載預設測試規格，並將其儲存為 `MyTestSpec.yml`：

   ```
   curl "https://prod-us-west-2-uploads.s3-us-west-2.amazonaws.com/ExampleURL" > MyTestSpec.yml
   ```

1. 您可以編輯預設測試規格，以符合您的測試要求，然後在未來測試執行中使用您已修改的測試規格。請跳過此步驟以使用預設測試規格，如同在自訂測試環境中一般。

1. 若要建立自訂測試規格的上傳，請執行 **create-upload**，並指定測試規格名稱、測試規格類型和專案 ARN。

   此範例會建立 Appium Java TestNG 自訂測試規格的上傳：

   ```
   aws devicefarm create-upload --name MyTestSpec.yml --type APPIUM_JAVA_TESTNG_TEST_SPEC --project-arn arn:MyProjectARN
   ```

   回應包含測試規格上傳 ARN 和預先簽章的 URL：

   ```
   {
       "upload": {
           "status": "INITIALIZED",
           "category": "PRIVATE",
           "name": "MyTestSpec.yml",
           "created": 1535751101.221,
           "url": "https://prod-us-west-2-uploads.s3-us-west-2.amazonaws.com/ExampleURL", 
           "type": "APPIUM_JAVA_TESTNG_TEST_SPEC",
           "arn": "arn:aws:devicefarm:us-west-2:123456789101:upload:5e01a8c7-c861-4c0a-b1d5-12345EXAMPLE"
       }
   }
   ```

1. 記下測試規格上傳的 ARN 和預先簽章的 URL。

1. 使用 Amazon S3 預先簽章的 URL 上傳您的測試規格檔案。此範例會使用 **curl** 來上傳 Appium JavaTestNG 測試規格：

   ```
   curl -T MyTestSpec.yml "https://prod-us-west-2-uploads.s3-us-west-2.amazonaws.com/ExampleURL"
   ```

1. 若要檢查測試規格上傳的狀態，請執行 **get-upload**，並指定上傳 ARN。

   ```
   aws devicefarm get-upload –-arn arn:MyTestSpecUploadARN
   ```

   等到回應中的狀態變成 **SUCCEEDED**，再排定測試執行。

   ```
   {
       "upload": {
           "status": "SUCCEEDED",
           "name": "MyTestSpec.yml",
           "created": 1535732625.964,
           "url": "https://prod-us-west-2-uploads.s3-us-west-2.amazonaws.com/ExampleURL", 
           "type": "APPIUM_JAVA_TESTNG_TEST_SPEC",
           "arn": "arn:aws:devicefarm:us-west-2:123456789101:upload:5e01a8c7-c861-4c0a-b1d5-12345EXAMPLE",
           "metadata": "{"valid": true}"
       }
   }
   ```

   若要更新自訂測試規格，請執行 **update-upload**，並指定測試規格的上傳 ARN。如需詳細資訊，請參閱[https://docs.aws.amazon.com/cli/latest/reference/devicefarm/update-upload.html](https://docs.aws.amazon.com/cli/latest/reference/devicefarm/update-upload.html)。

### 步驟 6：排程測試執行
<a name="how-to-create-test-run-cli-step6"></a>

若要使用 排程測試執行 AWS CLI，請執行 **schedule-run**，指定：
+ 來自[步驟 1](#how-to-create-test-run-cli-step1) 的專案 ARN。
+ 來自[步驟 2](#how-to-create-test-run-cli-step2) 的裝置集區 ARN。
+ 來自[步驟 3](#how-to-create-test-run-cli-step3) 的應用程式上傳 ARN。
+ 來自[步驟 4](#how-to-create-test-run-cli-step4) 的測試套件上傳 ARN。

 如果您是在自訂測試環境中執行測試，則也需要來自[步驟 5](#how-to-create-test-run-cli-step5) 的測試規格 ARN。

**在標準測試環境中排定執行**
+ 執行 **schedule-run**，並指定專案 ARN、裝置集區 ARN、應用程式上傳 ARN，以及測試套件資訊。

  範例：

  ```
  aws devicefarm schedule-run --project-arn arn:MyProjectARN --app-arn arn:MyAppUploadARN --device-pool-arn arn:MyDevicePoolARN --name MyTestRun --test type=APPIUM_JAVA_TESTNG,testPackageArn=arn:MyTestPackageARN
  ```

  回應包含一個執行 ARN，您可以用來檢查測試執行的狀態。

  ```
  {
      "run": {
          "status": "SCHEDULING",
          "appUpload": "arn:aws:devicefarm:us-west-2:123456789101:upload:5e01a8c7-c861-4c0a-b1d5-12345appEXAMPLE",
          "name": "MyTestRun",
          "radios": {
              "gps": true,
              "wifi": true,
              "nfc": true,
              "bluetooth": true
          },
          "created": 1535756712.946,
          "totalJobs": 179,
          "completedJobs": 0,
          "platform": "ANDROID_APP",
          "result": "PENDING",
          "devicePoolArn": "arn:aws:devicefarm:us-west-2:123456789101:devicepool:5e01a8c7-c861-4c0a-b1d5-12345devicepoolEXAMPLE",
          "jobTimeoutMinutes": 150,
          "billingMethod": "METERED",
          "type": "APPIUM_JAVA_TESTNG",
          "testSpecArn": "arn:aws:devicefarm:us-west-2:123456789101:upload:5e01a8c7-c861-4c0a-b1d5-12345specEXAMPLE",
          "arn": "arn:aws:devicefarm:us-west-2:123456789101:run:5e01a8c7-c861-4c0a-b1d5-12345runEXAMPLE",
          "counters": {
              "skipped": 0,
              "warned": 0,
              "failed": 0,
              "stopped": 0,
              "passed": 0,
              "errored": 0,
              "total": 0
          }
      }
  }
  ```

  如需詳細資訊，請參閱[https://docs.aws.amazon.com/cli/latest/reference/devicefarm/schedule-run.html](https://docs.aws.amazon.com/cli/latest/reference/devicefarm/schedule-run.html)。

**在自訂測試環境中排定執行**
+ 此處步驟與標準測試環境的步驟幾乎相同，但 `--test` 參數中需加入額外的 `testSpecArn` 屬性。

  範例：

  ```
  aws devicefarm schedule-run --project-arn arn:MyProjectARN --app-arn arn:MyAppUploadARN --device-pool-arn arn:MyDevicePoolARN --name MyTestRun --test testSpecArn=arn:MyTestSpecUploadARN,type=APPIUM_JAVA_TESTNG,testPackageArn=arn:MyTestPackageARN
  ```

**檢查測試執行的狀態**
+ 執行 **get-run** 命令並指定執行 ARN：

  ```
  aws devicefarm get-run --arn arn:aws:devicefarm:us-west-2:111122223333:run:5e01a8c7-c861-4c0a-b1d5-12345runEXAMPLE
  ```

如需詳細資訊，請參閱[https://docs.aws.amazon.com/cli/latest/reference/devicefarm/get-run.html](https://docs.aws.amazon.com/cli/latest/reference/devicefarm/get-run.html)。如需搭配 使用 Device Farm 的詳細資訊 AWS CLI，請參閱 [AWS CLI 參考](cli-ref.md)。

## 建立測試執行 (API)
<a name="how-to-create-test-run-api"></a>

這些步驟與 AWS CLI 章節中所述的步驟相同。請參閱 [建立測試執行 (AWS CLI)](#how-to-create-test-run-cli)。

您需要此資訊，才能呼叫 [https://docs.aws.amazon.com/devicefarm/latest/APIReference/API_ScheduleRun.html](https://docs.aws.amazon.com/devicefarm/latest/APIReference/API_ScheduleRun.html) API：
+ 專案 ARN。請參閱 [建立專案 (API)](how-to-create-project.md#how-to-create-project-api) 和 [https://docs.aws.amazon.com/devicefarm/latest/APIReference/API_CreateProject.html](https://docs.aws.amazon.com/devicefarm/latest/APIReference/API_CreateProject.html)。
+ 應用程式上傳 ARN。請參閱 [https://docs.aws.amazon.com/devicefarm/latest/APIReference/API_CreateUpload.html](https://docs.aws.amazon.com/devicefarm/latest/APIReference/API_CreateUpload.html)。
+ 測試套件上傳 ARN。請參閱 [https://docs.aws.amazon.com/devicefarm/latest/APIReference/API_CreateUpload.html](https://docs.aws.amazon.com/devicefarm/latest/APIReference/API_CreateUpload.html)。
+ 裝置集區 ARN。請參閱 [建立裝置集區](how-to-create-device-pool.md) 和 [https://docs.aws.amazon.com/devicefarm/latest/APIReference/API_CreateDevicePool.html](https://docs.aws.amazon.com/devicefarm/latest/APIReference/API_CreateDevicePool.html)。

**注意**  
如果您是在自訂測試環境中執行測試，則也需要您的測試規格上傳 ARN。如需詳細資訊，請參閱[步驟 5：（選用） 上傳您的自訂測試規格](#how-to-create-test-run-cli-step5)及[https://docs.aws.amazon.com/devicefarm/latest/APIReference/API_CreateUpload.html](https://docs.aws.amazon.com/devicefarm/latest/APIReference/API_CreateUpload.html)。

如需使用 Device Farm API 的詳細資訊，請參閱 [自動化Device Farm](api-ref.md)。

## 後續步驟
<a name="how-to-create-test-run-console-next-steps"></a>

在 Device Farm 主控台中，時鐘圖示![\[Device Farm scheduled a job.\]](http://docs.aws.amazon.com/zh_tw/devicefarm/latest/developerguide/images/df-run-calendar.png)會變更為結果圖示，例如在執行完成![\[The test succeeded.\]](http://docs.aws.amazon.com/zh_tw/devicefarm/latest/developerguide/images/df-run-success.png)時成功。測試一完成，執行的報告就會出現。如需詳細資訊，請參閱[AWS Device Farm 中的報告報告](reports.md)。

若要使用報告，請依照[在 Device Farm 中檢視測試報告](how-to-use-reports.md)中的指示。

# 在 AWS Device Farm 中設定測試執行的執行逾時
<a name="how-to-set-default-timeout-for-test-runs"></a>

您可以設定一值，表示在您停止每個裝置的執行測試前，測試執行應該執行多長時間。每個裝置的預設執行逾時為 150 分鐘，但您可以設定的最低值為 5 分鐘。您可以使用 AWS Device Farm 主控台 AWS CLI或 AWS Device Farm API 來設定執行逾時。

**重要**  
您應該將執行逾時選項設定為測試執行的「最大持續時間」**，並設定一些緩衝。例如，如果您的測試需要每個裝置 20 分鐘，則您應該選擇每個裝置 30 分鐘逾時。

如果執行超過您的逾時，則該裝置上的執行會被迫停止。可能的話，提供部分結果。如果您是使用計量計費選項，則執行的計費最多算到該點。如需定價的詳細資訊，請參閱 [Device Farm 定價](https://aws.amazon.com/device-farm/pricing/)。

如果您知道測試執行假設要在每個裝置上執行所需的時間，則可能想要使用此功能。如果您指定測試執行的執行逾時，則可以避免測試執行由於某些原因而停滯的情況，而且當沒有測試執行時，以裝置分鐘數計費。換言之，如果執行花費的時間超過預期，則可使用執行逾時功能來停止該執行。

您可以在兩個地方設定執行逾時，一個是專案層級，另一個是測試執行層級。

## 先決條件
<a name="how-to-set-default-timeout-prerequisites"></a>

1. 完成「[設定](setting-up.md)」中的步驟。

1. 在 Device Farm 中建立專案。請遵循[在 AWS Device Farm 中建立專案](how-to-create-project.md)中的指示，然後返回此頁面。

## 設定專案的執行逾時
<a name="how-to-set-execution-timeout-project-console"></a>

1. 登入 Device Farm 主控台，網址為 https：//[https://console.aws.amazon.com/devicefarm](https://console.aws.amazon.com/devicefarm)。

1. 在 Device Farm 導覽面板上，選擇**行動裝置測試**，然後選擇**專案**。

1. 如果您已經有專案，請從清單中選擇。否則，請選擇**新增專案**，輸入專案的名稱，然後選擇**提交**。

1. 選擇 **Project settings (專案設定)**。

1. 在 **General (一般)** 標籤上，對於 **Execution timeout (執行逾時)**，輸入一值或使用捲軸。

1. 選擇**儲存**。

   您專案中的所有測試執行現在都會使用您指定的執行逾時值，除非您在排定執行時覆寫該逾時值。

## 設定測試執行的執行逾時
<a name="how-to-set-execution-timeout-test-run-console"></a>

1. 登入 Device Farm 主控台，網址為 https：//[https://console.aws.amazon.com/devicefarm](https://console.aws.amazon.com/devicefarm)。

1. 在 Device Farm 導覽面板上，選擇**行動裝置測試**，然後選擇**專案**。

1. 如果您已經有專案，請從清單中選擇。否則，請選擇**新增專案**，輸入專案的名稱，然後選擇**提交**。

1. 選擇 **Create a new run (建立新執行)**。

1. 依照步驟來選擇應用程式、設定您的測試、選取您的裝置，然後指定裝置狀態。

1. 在**檢閱和開始執行**時，針對**設定執行逾時**，輸入值或使用滑桿。

1. 選擇 **Confirm and start run (確認並開始執行)**。

# 模擬 AWS Device Farm 執行的網路連線和條件
<a name="how-to-simulate-network-connections-and-conditions"></a>

您可以使用網路塑造來模擬網路連線和條件，同時在 Device Farm 中測試 Android、iOS 和 Web 應用程式。例如，您可以模擬失真或間歇性網際網路連線。

當您使用預設網路設定來建立執行時，每個裝置都有完整、不受限的 Wi-Fi 連線，與網際網路進行連線。當您使用網路打造時，您可以變更 Wi-Fi 連線來指定網路設定檔 (像是 **3G** 或 **Lossy WiFi (失真 WiFi)**)，其會同時控制傳入和傳出流量的傳輸量、延遲、抖動和損失。

**Topics**
+ [在排程測試執行時設定網路形狀](#network-shaping-how-to-choose-a-curated-profile-when-scheduling-a-test-run)
+ [建立網路設定檔](#network-shaping-how-to-create-a-network-profile)
+ [在測試期間變更網路條件](#change-network-conditions-during-test)

## 在排程測試執行時設定網路形狀
<a name="network-shaping-how-to-choose-a-curated-profile-when-scheduling-a-test-run"></a>

排程執行時，您可以從任何 Device Farm 策劃的設定檔中選擇，也可以建立和管理自己的設定檔。

1. 從任何 Device Farm 專案中，選擇**建立新的執行**。

   如果您尚未有專案，請參閱[在 AWS Device Farm 中建立專案](how-to-create-project.md)。

1. 選擇您的應用程式，然後選擇**下一步**。

1. 設定您的測試，然後選擇**下一步**。

1. 選取您的裝置，然後選擇**下一步**。

1. 在**位置和網路設定**區段中，選擇網路設定檔或選擇**建立網路設定檔**以建立您自己的設定檔。  
![\[用於測試執行的網路設定檔\]](http://docs.aws.amazon.com/zh_tw/devicefarm/latest/developerguide/images/aws-device-farm-set-up-network-profile.png)

1. 選擇**下一步**。

1. 檢閱並開始您的執行測試。

## 建立網路設定檔
<a name="network-shaping-how-to-create-a-network-profile"></a>

建立測試執行時，您可以建立網路設定檔。

1. 選擇**建立網路設定檔**。  
![\[建立新的網路設定檔\]](http://docs.aws.amazon.com/zh_tw/devicefarm/latest/developerguide/images/aws-device-farm-create-a-new-network-profile.png)

1. 輸入網路設定檔的名稱和設定。

1. 選擇**建立**。

1. 完成建立您的測試執行並開始執行。

在您建立了網路設定檔之後，您將能夠在 **Project settings(專案設定)** 頁面上查看和管理它。

![\[專案設定中的網路設定檔\]](http://docs.aws.amazon.com/zh_tw/devicefarm/latest/developerguide/images/aws-device-farm-network-profiles-in-project-settings.png)


## 在測試期間變更網路條件
<a name="change-network-conditions-during-test"></a>

您可以使用 Appium 等架構從裝置主機呼叫 API，以模擬動態網路條件，例如在測試執行期間減少頻寬。如需詳細資訊，請參閱 [CreateNetworkProfile](https://docs.aws.amazon.com/devicefarm/latest/APIReference/API_CreateNetworkProfile.html)。

# 在 AWS Device Farm 中停止執行
<a name="how-to-stop-test-runs"></a>

在啟動了執行之後，您可能想要停止它。例如，如果您在測試執行時注意到問題，則可能想要使用更新的測試指令碼，來重新啟動執行。

您可以使用 Device Farm 主控台 AWS CLI或 API 來停止執行。

**Topics**
+ [停止執行 （主控台）](#how-to-stop-run-console)
+ [停止執行 (AWS CLI)](#how-to-stop-test-run-cli)
+ [停止執行 (API)](#how-to-stop-test-run-api)

## 停止執行 （主控台）
<a name="how-to-stop-run-console"></a>

1. 登入 Device Farm 主控台，網址為 https：//[https://console.aws.amazon.com/devicefarm](https://console.aws.amazon.com/devicefarm)。

1. 在 Device Farm 導覽面板上，選擇**行動裝置測試**，然後選擇**專案**。

1. 選擇您有作用中測試執行的專案。

1. 在**自動化測試**頁面上，選擇測試執行。

   待定或執行中的圖示應該會出現在裝置名稱的左側。  
![\[Device Farm - 停止測試執行\]](http://docs.aws.amazon.com/zh_tw/devicefarm/latest/developerguide/images/aws-device-farm-stop-run.png)

1. 選擇 **Stop run (停止執行)**。

   一小段時間後，裝置名稱旁會出現一個帶有減號的紅色圓圈圖示。當執行停止時，圖示顏色會從紅色變更為黑色。
**重要**  
如果測試已執行，則 Device Farm 無法停止它。如果測試進行中，Device Farm 會停止測試。將計費的分鐘總數會出現在 **Devices (裝置)** 區段中。此外，也會向您收取 Device Farm 執行設定套件和遞減套件所需的總分鐘數。如需詳細資訊，請參閱 [Device Farm 定價](https://aws.amazon.com/device-farm/faq/#pricing)。

   下圖顯示在測試執行成功停止之後的範例 **Devices (裝置)** 區段。  
![\[Device Farm - 已停止執行的詳細資訊頁面\]](http://docs.aws.amazon.com/zh_tw/devicefarm/latest/developerguide/images/aws-device-farm-stop-run-view-details.png)

## 停止執行 (AWS CLI)
<a name="how-to-stop-test-run-cli"></a>

 您可以執行以下命令來停止指定的測試執行，其中 *myARN* 是執行測試的 Amazon Resource Name (ARN)。

```
$ aws devicefarm stop-run --arn myARN
```

您應該會看到類似下列的輸出：

```
{
    "run": {
        "status": "STOPPING",
        "name": "Name of your run",
        "created": 1458329687.951,
        "totalJobs": 7,
        "completedJobs": 5,
        "deviceMinutes": {
            "unmetered": 0.0,
            "total": 0.0,
            "metered": 0.0
        },
        "platform": "ANDROID_APP",
        "result": "PENDING",
        "billingMethod": "METERED",
        "type": "BUILTIN_EXPLORER",
        "arn": "myARN",
        "counters": {
            "skipped": 0,
            "warned": 0,
            "failed": 0,
            "stopped": 0,
            "passed": 0,
            "errored": 0,
            "total": 0
        }
    }
}
```

若要取得執行的 ARN，請使用 `list-runs` 命令。輸出格式應類似以下內容：

```
{
    "runs": [
        {
            "status": "RUNNING",
            "name": "Name of your run",
            "created": 1458329687.951,
            "totalJobs": 7,
            "completedJobs": 5,
            "deviceMinutes": {
                "unmetered": 0.0,
                "total": 0.0,
                "metered": 0.0
            },
            "platform": "ANDROID_APP",
            "result": "PENDING",
            "billingMethod": "METERED",
            "type": "BUILTIN_EXPLORER",
            "arn": "Your ARN will be here",
            "counters": {
                "skipped": 0,
                "warned": 0,
                "failed": 0,
                "stopped": 0,
                "passed": 0,
                "errored": 0,
                "total": 0
            }
        }
    ]
}
```

如需搭配 使用 Device Farm 的詳細資訊 AWS CLI，請參閱 [AWS CLI 參考](cli-ref.md)。

## 停止執行 (API)
<a name="how-to-stop-test-run-api"></a>
+ 呼叫 [StopRun](../../latest/APIReference/API_StopRun.html) 操作來進行測試執行。

如需使用 Device Farm API 的詳細資訊，請參閱 [自動化Device Farm](api-ref.md)。

# 檢視 AWS Device Farm 中的執行清單
<a name="how-to-view-runs-list"></a>

您可以使用 Device Farm 主控台 AWS CLI或 API 來檢視專案的執行清單。

**Topics**
+ [檢視執行清單 （主控台）](#how-to-view-runs-list-console)
+ [檢視執行的清單 (AWS CLI)](#how-to-view-runs-list-cli)
+ [檢視執行清單 (API)](#how-to-view-runs-list-api)

## 檢視執行清單 （主控台）
<a name="how-to-view-runs-list-console"></a>

1. 登入 Device Farm 主控台，網址為 https：//[https://console.aws.amazon.com/devicefarm](https://console.aws.amazon.com/devicefarm)。

1. 在 Device Farm 導覽面板上，選擇**行動裝置測試**，然後選擇**專案**。

1. 在專案清單中，選擇對應至您要檢視之清單的專案。
**提示**  
您可以使用搜尋列，依名稱篩選專案清單。

## 檢視執行的清單 (AWS CLI)
<a name="how-to-view-runs-list-cli"></a>
+ 執行 [https://docs.aws.amazon.com/cli/latest/reference/devicefarm/list-runs.html](https://docs.aws.amazon.com/cli/latest/reference/devicefarm/list-runs.html) 命令。

  若要檢視單一執行的相關資訊，請執行 [https://docs.aws.amazon.com/cli/latest/reference/devicefarm/get-run.html](https://docs.aws.amazon.com/cli/latest/reference/devicefarm/get-run.html) 命令。

如需搭配 使用 Device Farm 的詳細資訊 AWS CLI，請參閱 [AWS CLI 參考](cli-ref.md)。

## 檢視執行清單 (API)
<a name="how-to-view-runs-list-api"></a>
+ 呼叫 [https://docs.aws.amazon.com/devicefarm/latest/APIReference/API_ListRuns.html](https://docs.aws.amazon.com/devicefarm/latest/APIReference/API_ListRuns.html) API。

  若要檢視單一執行的相關資訊，請呼叫 [https://docs.aws.amazon.com/devicefarm/latest/APIReference/API_GetRun.html](https://docs.aws.amazon.com/devicefarm/latest/APIReference/API_GetRun.html) API。

如需 Device Farm API 的相關資訊，請參閱 [自動化Device Farm](api-ref.md)。

# 在 AWS Device Farm 中建立裝置集區
<a name="how-to-create-device-pool"></a>

您可以使用 Device Farm 主控台 AWS CLI或 API 來建立裝置集區。

**Topics**
+ [先決條件](#how-to-create-device-pool-prerequisites)
+ [建立裝置集區 （主控台）](#how-to-create-device-pool-console)
+ [建立裝置集區 (AWS CLI)](#how-to-create-device-pool-cli)
+ [建立裝置集區 (API)](#how-to-create-device-pool-api)

## 先決條件
<a name="how-to-create-device-pool-prerequisites"></a>
+ 在 Device Farm 主控台中建立執行。請遵循中的說明進行[在 Device Farm 中建立測試執行](how-to-create-test-run.md) 在您到達 **Select devices (選擇裝置)** 頁面時，請繼續遵循本節中的指示。

## 建立裝置集區 （主控台）
<a name="how-to-create-device-pool-console"></a>

1. 在**專案**頁面上，選擇您的專案。在**專案詳細資訊**頁面中，選擇**專案設定**。在**裝置集區**索引標籤中，選擇**建立裝置集區**。

1. 針對 **Name (名稱)**，輸入可輕鬆識別此裝置集區的名稱。

1. 針對 **Description (描述)**，輸入可輕鬆識別此裝置集區的描述。

1. 如果您想要在此裝置集區中的裝置上使用一或多個選取條件，請執行下列動作：

   1. 選擇**建立動態裝置集區**。

   1. 選擇**新增規則**。

   1. 針對**欄位** （第一個下拉式清單），選擇下列其中一項：
      + 若要依裝置製造商名稱包含裝置，請選擇**裝置製造商**。
      + 若要依裝置形式因素 （平板電腦或手機） 包含裝置，請選擇**形式因素**。
      + 若要根據負載依裝置的可用性狀態包含裝置，請選擇**可用性**。
      + 若要僅包含公有或私有裝置，請選擇**機群類型**。
      + 若要依其作業系統包含裝置，請選擇**平台**。
      + 有些裝置具有關於裝置的額外標籤標籤或描述。您可以選擇**執行個體**標籤，根據裝置標籤內容來尋找裝置。
      + 若要依其作業系統版本包含裝置，請選擇**作業系統版本**。
      + 若要依模型包含裝置，請選擇**模型**。

   1. 針對**運算子** （第二個下拉式清單），選擇邏輯操作 (EQUALS、CONTAINS 等），以根據查詢包含裝置。例如，您可以選擇*可用 EQUALS 可用*，以包含目前狀態為 的裝置`Available`。

   1. 針對**值** （第三個下拉式清單），輸入或選擇您要為**欄位**和**運算子**值指定的值。值會根據您的**欄位**選擇而受限。例如，如果您為 **欄位**選擇**平台**，則唯一可用的選項是 **ANDROID** 和 **IOS**。同樣地，如果您選擇**欄位**的**表單係數**，則唯一可用的選項是 **PHONE** 和 **TABLET**。

   1. 若要新增另一個規則，請選擇**新增規則**。

      在您建立第一個規則之後，系統會選取裝置清單中每個符合規則裝置旁的方塊。在您建立或變更規則之後，系統會選取裝置清單中每個符合合併規則裝置旁的方塊。具有選取方塊的裝置會包含在裝置集區中。具有空白方塊的裝置則會受到排除。

   1. 在**最大裝置**下，輸入您要在裝置集區中使用的裝置數量。如果您未輸入裝置數量上限 (Device Farm)，則 Device Farm 會挑選機群中符合您建立之規則的所有裝置。為了避免產生額外費用，請將此數字設定為符合您實際平行執行和裝置多樣性需求的數量。

   1. 若要刪除規則，請選擇**移除規則**。

1. 如果您想要手動包含或排除個別裝置，請執行下列動作：

   1. 選擇**建立靜態裝置集區**。

   1. 選取或清除每個裝置旁的方塊。只有在您未指定任何規則的情況下，才能選取或清除方塊。

1. 如果您想要包含或排除所有顯示的裝置，請選取或清除清單標頭列中的方塊。如果您只想檢視私有裝置執行個體，請選擇**僅查看私有裝置執行個體**。
**重要**  
雖然您可以使欄標頭列中的方塊來變更顯示裝置的清單，但這不表示只會包含或排除顯示中剩下的裝置。若要確認包含或排除了哪些裝置，請務必清除所有欄標頭列方塊的內容，然後瀏覽方塊。

1. 選擇**建立**。

## 建立裝置集區 (AWS CLI)
<a name="how-to-create-device-pool-cli"></a>

**提示**  
如果您未輸入裝置數量上限 (Device Farm)，則 Device Farm 會挑選機群中符合您建立之規則的所有裝置。為了避免產生額外費用，請將此數字設定為符合您實際平行執行和裝置多樣性需求的數量。
+ 執行 [https://docs.aws.amazon.com/cli/latest/reference/devicefarm/create-device-pool.html](https://docs.aws.amazon.com/cli/latest/reference/devicefarm/create-device-pool.html) 命令。

如需搭配 使用 Device Farm 的詳細資訊 AWS CLI，請參閱 [AWS CLI 參考](cli-ref.md)。

## 建立裝置集區 (API)
<a name="how-to-create-device-pool-api"></a>

**提示**  
如果您未輸入裝置數量上限 (Device Farm)，則 Device Farm 會挑選機群中符合您建立之規則的所有裝置。為了避免產生額外費用，請將此數字設定為符合您實際平行執行和裝置多樣性需求的數量。
+ 呼叫 [https://docs.aws.amazon.com/devicefarm/latest/APIReference/API_CreateDevicePool.html](https://docs.aws.amazon.com/devicefarm/latest/APIReference/API_CreateDevicePool.html) API。

如需使用 Device Farm API 的詳細資訊，請參閱 [自動化Device Farm](api-ref.md)。

# 在 AWS Device Farm 中分析測試結果
<a name="analyzing-results"></a>

在標準測試環境中，您可以使用 Device Farm 主控台來檢視測試執行中每個測試的報告。清空報告可協助您了解哪些測試通過或失敗，並為您提供不同裝置組態中應用程式效能和行為的詳細資訊。

Device Farm 也會收集可在測試執行完成時下載的其他成品，例如檔案、日誌和映像。此資訊可協助您分析應用程式在真實裝置上的行為、識別問題或錯誤，以及診斷問題。

**Topics**
+ [在 Device Farm 中檢視測試報告](how-to-use-reports.md)
+ [在 Device Farm 中下載成品](artifacts.md)

# 在 Device Farm 中檢視測試報告
<a name="how-to-use-reports"></a>

使用 Device Farm 主控台檢視您的測試報告。如需詳細資訊，請參閱[AWS Device Farm 中的報告報告](reports.md)。

**Topics**
+ [先決條件](#how-to-use-reports-prerequisites)
+ [檢視報告](#how-to-use-reports-viewing-reports)
+ [Device Farm 測試結果狀態](how-to-use-reports-displaying-results.md)

## 先決條件
<a name="how-to-use-reports-prerequisites"></a>

設定測試執行並驗證其是否已完成。

1.  若要建立執行，請參閱[在 Device Farm 中建立測試執行](how-to-create-test-run.md)，然後返回此頁面。

1. 確認執行已完成。在測試執行期間，Device Farm 主控台會顯示進行中![\[Device Farm scheduled a job.\]](http://docs.aws.amazon.com/zh_tw/devicefarm/latest/developerguide/images/df-run-calendar.png)執行的待處理圖示。執行中的每個裝置也會以待定圖示開頭，然後在測試開始時切換到執行中![\[Device Farm progress indicator.\]](http://docs.aws.amazon.com/zh_tw/devicefarm/latest/developerguide/images/df-run-progress.png)圖示。當每個測試完成時，裝置名稱旁會顯示測試結果圖示。完成所有測試後，執行旁的待定圖示會變更為測試結果圖示。如需詳細資訊，請參閱[Device Farm 測試結果狀態](how-to-use-reports-displaying-results.md)。

## 檢視報告
<a name="how-to-use-reports-viewing-reports"></a>

您可以在 Device Farm 主控台中檢視測試結果。

**Topics**
+ [檢視測試執行摘要頁面](#how-to-use-reports-console-summary)
+ [檢視唯一的問題報告](#how-to-use-reports-console-unique-problems)
+ [檢視裝置報告](#how-to-use-reports-console-by-device)
+ [檢視測試套件報告](#how-to-use-reports-console-by-suite)
+ [檢視測試報告](#how-to-use-reports-console-by-test)
+ [檢視報告中問題、裝置、套件或測試的日誌資訊](#how-to-use-reports-console-log)

### 檢視測試執行摘要頁面
<a name="how-to-use-reports-console-summary"></a>

1. 登入 Device Farm 主控台，網址為 https：//[https://console.aws.amazon.com/devicefarm](https://console.aws.amazon.com/devicefarm)。

1. 在導覽窗格中，選擇**行動裝置測試**，然後選擇**專案**。

1. 在專案清單中，選擇用於執行的專案。
**提示**  
若要依名稱篩選專案清單，請使用搜尋列。

1. 選擇已完成的執行來檢視其摘要報告頁面。

1. 測試執行摘要頁面會顯示測試結果的概觀。
   + **Unique problems (唯一問題)** 區段會列出唯一警告和失敗。若要檢視唯一問題，請按照[檢視唯一的問題報告](#how-to-use-reports-console-unique-problems)中的指示。
   + **Devices (裝置)** 區段會顯示每個裝置的測試總數，依結果排列。

     ![\[Device Farm device summary results.\]](http://docs.aws.amazon.com/zh_tw/devicefarm/latest/developerguide/images/df-run-device-summary-results-bar.png)

     在此範例中，有數個裝置。在第一個資料表項目中，執行 Android 版本 10 的 Google Pixel 4 XL 裝置報告了三個成功的測試，需要 02：36 分鐘才能執行。

     若要依裝置檢視結果，請按照[檢視裝置報告](#how-to-use-reports-console-by-device)中的指示。
   + **螢幕擷取畫面**區段會顯示 Device Farm 在執行期間擷取的任何螢幕擷取畫面清單，依裝置分組。
   + 在**剖析結果**區段中，您可以下載剖析結果。

### 檢視唯一的問題報告
<a name="how-to-use-reports-console-unique-problems"></a>

1. 在 **Unique problems (唯一問題)** 中，選擇您想要檢視的問題。

1. 選擇裝置。報告會顯示問題的相關資訊。

   **Video (視訊)** 區段顯示測試的可下載影片錄製。

   **結果**區段會顯示測試結果。狀態會以結果圖示表示。如需詳細資訊，請參閱[個別測試的狀態](how-to-use-reports-displaying-results.md#how-to-use-reports-displaying-results-individual)。

   **日誌**區段會顯示 Device Farm 在測試期間記錄的任何資訊。若要檢視此資訊，請按照[檢視報告中問題、裝置、套件或測試的日誌資訊](#how-to-use-reports-console-log)中的指示。

   **檔案**索引標籤會顯示您可以下載的任何測試關聯檔案 （例如日誌檔案） 的清單。若要下載檔案，請在清單中選擇檔案的連結。

   **螢幕擷取畫面**索引標籤會顯示 Device Farm 在測試期間擷取的任何螢幕擷取畫面清單。

### 檢視裝置報告
<a name="how-to-use-reports-console-by-device"></a>
+ 在 **Devices (裝置)** 區段中，選擇裝置。

  **Video (視訊)** 區段顯示測試的可下載影片錄製。

  **套件**區段會顯示包含裝置套件相關資訊的資料表。

  在此資料表中，**測試結果**欄會針對已在裝置上執行的每個測試套件，依結果摘要測試的數量。此資料也有圖形元件。如需詳細資訊，請參閱[多個測試的狀態](how-to-use-reports-displaying-results.md#how-to-use-reports-displaying-results-summary)。

  若要依套件檢視完整結果，請遵循 中的指示[檢視測試套件報告](#how-to-use-reports-console-by-suite)。

  **日誌**區段會顯示 Device Farm 在執行期間為裝置記錄的任何資訊。若要檢視此資訊，請按照[檢視報告中問題、裝置、套件或測試的日誌資訊](#how-to-use-reports-console-log)中的指示。

  **檔案**區段會顯示裝置套件的清單，以及您可以下載的任何相關檔案 （例如日誌檔案）。若要下載檔案，請在清單中選擇檔案的連結。

  **螢幕擷取畫面**區段會顯示 Device Farm 在裝置執行期間擷取的任何螢幕擷取畫面清單，依套件分組。

### 檢視測試套件報告
<a name="how-to-use-reports-console-by-suite"></a>

1. 在 **Devices (裝置)** 區段中，選擇裝置。

1. 在**套件**區段中，從資料表中選擇套件。

   **Video (視訊)** 區段顯示測試的可下載影片錄製。

   **測試**區段會顯示包含套件中測試相關資訊的資料表。

   在表格中，**測試結果**欄會顯示結果。此資料也有圖形元件。如需詳細資訊，請參閱[多個測試的狀態](how-to-use-reports-displaying-results.md#how-to-use-reports-displaying-results-summary)。

   若要依測試檢視完整結果，請遵循 中的指示[檢視測試報告](#how-to-use-reports-console-by-test)。

   **日誌**區段會顯示 Device Farm 在套件執行期間記錄的任何資訊。若要檢視此資訊，請按照[檢視報告中問題、裝置、套件或測試的日誌資訊](#how-to-use-reports-console-log)中的指示。

   **檔案**區段會顯示套件的測試清單，以及您可以下載的任何相關檔案 （例如日誌檔案）。若要下載檔案，請在清單中選擇檔案的連結。

   **螢幕擷取畫面**區段會顯示 Device Farm 在套件執行期間擷取的任何螢幕擷取畫面清單，依測試分組。

### 檢視測試報告
<a name="how-to-use-reports-console-by-test"></a>

1. 在 **Devices (裝置)** 區段中，選擇裝置。

1. 在 **Suites (套件)** 區段中，選擇套件。

1. 在**測試**區段中，選擇測試。

1. **Video (視訊)** 區段顯示測試的可下載影片錄製。

   **結果**區段會顯示測試結果。狀態會以結果圖示表示。如需詳細資訊，請參閱[個別測試的狀態](how-to-use-reports-displaying-results.md#how-to-use-reports-displaying-results-individual)。

   **日誌**區段會顯示 Device Farm 在測試期間記錄的任何資訊。若要檢視此資訊，請按照[檢視報告中問題、裝置、套件或測試的日誌資訊](#how-to-use-reports-console-log)中的指示。

   **檔案**索引標籤會顯示您可以下載的任何測試關聯檔案 （例如日誌檔案） 的清單。若要下載檔案，請在清單中選擇檔案的連結。

   **螢幕擷取畫面**索引標籤會顯示 Device Farm 在測試期間擷取的任何螢幕擷取畫面清單。

### 檢視報告中問題、裝置、套件或測試的日誌資訊
<a name="how-to-use-reports-console-log"></a>

**日誌**區段會顯示下列資訊：
+ **Source (來源)** 代表日誌項目的來源。可能的值包括：
  + **Harness** 代表 Device Farm 建立的日誌項目。這些日誌項目通常是在啟動和停止事件期間建立的。
  + **裝置**代表裝置建立的日誌項目。若為 Android，這些是與 logcat 相容的日誌項目。若為 iOS，這些是與 syslog 相容的日誌項目。
  + **Test (測試)** 代表測試或其測試架構所建立的日誌項目。
+ **Time (時間)** 代表第一個日誌項目與此日誌項目之間的經歷時間。此時間是以 *MM:SS.SSS* 格式表示，其中 *M* 代表分鐘，而 *S* 代表秒。
+ **PID** 代表已建立日誌項目的程序識別碼 (PID)。裝置上由應用程式建立的所有日誌項目都具有相同的 PID。
+ **Level (層級)** 代表日誌項目的記錄層級。例如， 會`Logger.debug("This is a message!")`記錄 ****層級`Debug`。以下是可能值：
  + **警示**
  + **嚴重**
  + **偵錯**
  + **Emergency (緊急)**
  + **錯誤**
  + **Errored (錯誤)**
  + **失敗**
  + **資訊**
  + **內部 (Internal)**
  + **Notice (注意)**
  + **Passed (通過)**
  + **略過**
  + **已停止**
  + **詳細資訊**
  + **Warned (警告)**
  + **警告**
+ **Tag (標籤)** 代表日誌項目的任意中繼資料。例如，Android logcat 可以使用此項，描述系統哪個部分已建立日誌項目 (例如，`ActivityManager`)。
+ **Message (訊息)** 代表日誌項目的訊息或資料。例如， 會`Logger.debug("Hello, World!")`記錄 **訊息**`"Hello, World!"`。

若要只顯示局部資訊：
+ 若要顯示符合特定資料欄值的所有日誌項目，請在搜尋列中輸入該值。例如，若要顯示**來源**值為 的所有日誌項目`Harness`，請在搜尋列**Harness**中輸入 。
+ 若要從資料欄標頭方塊中移除所有字元，請選擇資料欄標頭方塊中的 **X**。從資料欄標頭方塊中移除所有字元與**\$1**在該資料欄標頭方塊中輸入相同。

若要下載裝置的所有日誌資訊，包括您執行的所有套件和測試，請選擇**下載日誌**。

# Device Farm 測試結果狀態
<a name="how-to-use-reports-displaying-results"></a>

Device Farm 主控台會顯示圖示，協助您快速評估已完成測試執行的狀態。如需 Device Farm 中測試的詳細資訊，請參閱 [AWS Device Farm 中的報告報告](reports.md)。

**Topics**
+ [個別測試的狀態](#how-to-use-reports-displaying-results-individual)
+ [多個測試的狀態](#how-to-use-reports-displaying-results-summary)

## 個別測試的狀態
<a name="how-to-use-reports-displaying-results-individual"></a>

對於描述個別測試的報告，Device Farm 會顯示代表測試結果狀態的圖示：


| Description | 圖示 | 
| --- | --- | 
| 測試成功。 | ![\[The test succeeded.\]](http://docs.aws.amazon.com/zh_tw/devicefarm/latest/developerguide/images/df-run-success.png) | 
| 測試失敗。 | ![\[The test failed.\]](http://docs.aws.amazon.com/zh_tw/devicefarm/latest/developerguide/images/df-run-failure.png) | 
| Device Farm 已略過測試。 | ![\[The test was skipped.\]](http://docs.aws.amazon.com/zh_tw/devicefarm/latest/developerguide/images/df-run-skipped.png) | 
| 測試已停止。 | ![\[The test was stopped.\]](http://docs.aws.amazon.com/zh_tw/devicefarm/latest/developerguide/images/df-run-stopped.png) | 
| Device Farm 傳回警告。 | ![\[Device Farm returned a warning.\]](http://docs.aws.amazon.com/zh_tw/devicefarm/latest/developerguide/images/df-run-warning.png) | 
| Device Farm 傳回錯誤。 | ![\[Device Farm returned an error.\]](http://docs.aws.amazon.com/zh_tw/devicefarm/latest/developerguide/images/df-run-error.png) | 

## 多個測試的狀態
<a name="how-to-use-reports-displaying-results-summary"></a>

如果您選擇完成執行，Device Farm 會顯示摘要圖表，顯示各種狀態的測試百分比。

![\[Device Farm test results summary graph.\]](http://docs.aws.amazon.com/zh_tw/devicefarm/latest/developerguide/images/df-summary-results-graph.png)

例如，此測試執行結果圖表顯示執行有 4 個停止的測試、1 個失敗的測試，以及 10 個成功的測試。

圖形一律以顏色編碼和標記。

# 在 Device Farm 中下載成品
<a name="artifacts"></a>

Device Farm 會收集執行中每個測試的成品，例如報告、日誌檔案和映像。

您可以下載測試執行期間所建立的成品：

**檔案**  
測試執行期間產生的檔案，包括 Device Farm 報告。如需詳細資訊，請參閱[在 Device Farm 中檢視測試報告](how-to-use-reports.md)。

**日誌**  
測試執行中每次測試的輸出。

**螢幕擷取畫面**  
系統會記錄測試執行中每次測試的螢幕影像。

![\[Workflow diagram showing Project, Run, Job (device), Test suite, and Test stages in AWS 雲端.\]](http://docs.aws.amazon.com/zh_tw/devicefarm/latest/developerguide/images/hierarchy.png)


## 下載成品 （主控台）
<a name="artifacts-console"></a>

1. 在測試執行報告頁面的 **Devices (裝置)** 中，選擇行動裝置。

1. 若要下載檔案，請在 **Files (檔案)** 中選擇。

1. 要下載您測試執行的日誌，請在 **Logs (日誌)** 中選擇 **Download logs (下載日誌)**。

1. 若要下載螢幕擷取畫面，請在 **Screenshots (螢幕擷取畫面)** 中選擇螢幕擷取畫面。

如需在自訂測試環境中下載成品的詳細資訊，請參閱 [在自訂測試環境中下載成品](using-artifacts-custom.md)。

## 下載成品 (AWS CLI)
<a name="artifacts-cli"></a>

您可以使用 AWS CLI 列出您的測試執行成品。

**Topics**
+ [步驟 1：取得您的 Amazon Resource Name (ARN)](#artifacts-cli-step1)
+ [步驟 2：列出您的成品](#artifacts-cli-step2)
+ [步驟 3：下載您的成品](#artifacts-cli-step3)

### 步驟 1：取得您的 Amazon Resource Name (ARN)
<a name="artifacts-cli-step1"></a>

您可以透過執行、工作、測試套件或測試，列出您的成品。您需要對應的 ARN。此資料表顯示每個 AWS CLI 清單命令的輸入 ARN：


| AWS CLI List 命令 | 需要 ARN | 
| --- | --- | 
| list-projects | 此命令會傳回所有專案，而且不需要 ARN。 | 
| list-runs | project | 
| list-jobs | run | 
| list-suites | job | 
| list-tests | suite | 

例如，若要尋找測試 ARN，請在輸入參數使用您的測試套件 ARN 來執行 **list-tests**。

範例：

```
aws devicefarm list-tests –-arn arn:MyTestSuiteARN
```

測試套件中每次測試的回應中皆會包含測試 ARN。

```
{
    "tests": [
        {
            "status": "COMPLETED",
            "name": "Tests.FixturesTest.testExample",
            "created": 1537563725.116,
            "deviceMinutes": {
                "unmetered": 0.0,
                "total": 1.89,
                "metered": 1.89
            },
            "result": "PASSED",
            "message": "testExample passed",
            "arn": "arn:aws:devicefarm:us-west-2:123456789101:test:5e01a8c7-c861-4c0a-b1d5-12345EXAMPLE",
            "counters": {
                "skipped": 0,
                "warned": 0,
                "failed": 0,
                "stopped": 0,
                "passed": 1,
                "errored": 0,
                "total": 1
            }
        }
    ]
}
```

### 步驟 2：列出您的成品
<a name="artifacts-cli-step2"></a>

The AWS CLI [list-artifacts](https://docs.aws.amazon.com/cli/latest/reference/devicefarm/list-artifacts.html) 命令會傳回成品清單，例如檔案、螢幕擷取畫面和日誌。每個成品都會有 URL，因此您可以下載檔案。
+ 呼叫 **list-artifacts** 指定執行、工作、測試套件或測試 ARN。指定檔案、日誌或螢幕快照的類型。

  此範例會傳回個別測試中，每個可供下載成品的 URL：

  ```
  aws devicefarm list-artifacts --arn arn:MyTestARN --type "FILE"
  ```

  每個成品的回應皆包含下載 URL。

  ```
  {
      "artifacts": [
          {
              "url": "https://prod-us-west-2-uploads.s3-us-west-2.amazonaws.com/ExampleURL",
              "extension": "txt",
              "type": "APPIUM_JAVA_OUTPUT",
              "name": "Appium Java Output",
              "arn": "arn:aws:devicefarm:us-west-2:123456789101:artifact:5e01a8c7-c861-4c0a-b1d5-12345EXAMPLE",
          }
      ]
  }
  ```

### 步驟 3：下載您的成品
<a name="artifacts-cli-step3"></a>
+ 使用先前步驟的 URL 下載您的成品。此範例使用 **curl** 來下載 Android Appium Java 輸出檔：

  ```
  curl "https://prod-us-west-2-uploads.s3-us-west-2.amazonaws.com/ExampleURL" > MyArtifactName.txt
  ```

## 下載成品 (API)
<a name="artifacts-api"></a>

Device Farm API [ListArtifacts](https://docs.aws.amazon.com/devicefarm/latest/APIReference/API_ListArtifacts.html) 方法會傳回成品清單，例如檔案、螢幕擷取畫面和日誌。每個成品都會有 URL，因此您可以下載檔案。

# 在自訂測試環境中下載成品
<a name="using-artifacts-custom"></a>

在自訂測試環境中，Device Farm 會收集成品，例如自訂報告、日誌檔案和映像。這些成品可供測試執行中的每個裝置使用。

您可以下載這些在測試執行期間所建立的成品：

**測試規格輸出**  
在測試規格 YAML 檔案中執行命令的輸出。

**客戶成品**  
包含測試執行成品的壓縮檔案。這可在測試規格 YAML 檔案中的 **artifacts: (成品：)** 區段設定。

**測試規格 shell 指令碼**  
從 YAML 檔案建立的中繼 shell 指令碼檔案。因為 shell 指令碼檔案會用於測試執行，所以其也可用於偵錯 YAML 檔案。

**測試規格檔案**  
用於執行測試的 YAML 檔案。

如需詳細資訊，請參閱[在 Device Farm 中下載成品](artifacts.md)。

![\[自訂測試環境中的 Device Farm 階層操作\]](http://docs.aws.amazon.com/zh_tw/devicefarm/latest/developerguide/images/hierarchy.png)
