

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 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 控制台或 Device Farm API 来创建测试运行。 AWS CLI您也可以使用支持的插件，如适用于 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. 登录 DeviceFarm 控制台，网址为 [https://console.aws.amazon.com/devicef](https://console.aws.amazon.com/devicefarm) arm。

1. 在导航窗格中，选择**移动设备测试**，然后选择**项目**。

1. 如果您已具有项目，可以将您的测试上传到现有项目。否则，选择**新建项目**，输入**项目名称**，然后选择**创建**。

1. 打开您的项目，然后选择**创建运行**。

1. （可选）在**运行设置**下的**运行名称**部分中，输入您的运行名称。如果未提供名称，则默认情况下，Device Farm 控制台会将您的运行命名为“My Device Farm run”。

1. （可选）在**运行设置**下的**作业超时**部分中，您可以为测试运行指定执行超时。如果您使用的是无限制测试槽位，请确认在**计费方法**下选择**非计量**。

1. 在**运行设置**下的**运行类型**部分中，选择您的运行类型。如果您没有可供测试的应用程序，或者您测试的是 Android（.apk）应用程序，请选择 **Android 应用程序**。如果您测试的是 iOS（.ipa）应用程序，请选择 **iOS 应用程序**。如果要测试 Web 应用程序，请选择 **Web 应用程序**。

1. 如果您没有可供测试的应用程序，请在**选择应用程序**下的**应用程序选择选项**部分中，选择**选择 Device Farm 提供的示例应用程序**。如果您自带应用程序，请选择**上传自己的应用程序**，然后选择您的应用程序文件。如果您要上传 iOS 应用程序，请确保选择 **iOS device (iOS 设备)**，而不是模拟器。

1. 在**配置测试**下，选择一个可用的测试框架。
**注意**  
如果您没有任何可用的测试，请选择 **Built-in: Fuzz (内置: 模糊)** 来运行标准的内置测试套件。如果您选择了**内置：模糊**并且出现了**事件计数**、**事件节流**和**随机掩码种子**框，则可以更改或保留值。

   有关可用测试套件的信息，请参阅[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，请使用执行角色 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_cn/devicefarm/latest/developerguide/images/df-run-calendar.png)。运行中的每台设备也将以待处理图标开始，然后在测试开始时切换到正在运行的图标 ![\[Device Farm progress indicator.\]](http://docs.aws.amazon.com/zh_cn/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 资源名称（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 简单存储服务用户指南 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，请使用 `–-project-arn`、`--name` 和 `--type` 参数运行 **create-upload**。

   此示例将创建一个 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** 并指定从步骤 1 获取的测试程序包上传的 ARN。

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

   响应中将包含预签名 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 JavaTest NG 测试规范：

   ```
   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_cn/devicefarm/latest/developerguide/images/df-run-calendar.png) 变为结果图标，例如成功 ![\[The test succeeded.\]](http://docs.aws.amazon.com/zh_cn/devicefarm/latest/developerguide/images/df-run-success.png)。测试完成后，将立即显示与运行对应的报告。有关更多信息，请参阅 [AWS Device Farm 中的报告Reports](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 Device Farm API 来设置执行超时。 AWS CLI

**重要**  
执行超时值选项应设置为测试运行的*最大持续时间*，另加一些缓冲时间。例如，如果您的测试需要每个设备花费 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. 登录 DeviceFarm 控制台，网址为 [https://console.aws.amazon.com/devicef](https://console.aws.amazon.com/devicefarm) arm。

1. 在 Device Farm 导航面板上，选择**移动设备测试**，然后选择**项目**。

1. 如果您已有项目，请从列表中选择一个项目。否则，请选择**新建项目**，输入项目的名称，然后选择**提交**。

1. 选择 **Project settings (项目设置)**。

1. 在 **General (常规)** 选项卡上，对于 **Execution timeout (执行超时)**，请输入值或使用滑块条。

1. 选择**保存**。

   现在，您项目中的所有测试运行都将使用您指定的执行超时值，除非您在安排运行时覆盖该超时值。

## 设置测试运行的执行超时值
<a name="how-to-set-execution-timeout-test-run-console"></a>

1. 登录 DeviceFarm 控制台，网址为 [https://console.aws.amazon.com/devicef](https://console.aws.amazon.com/devicefarm) arm。

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 和网络应用程序时，你可以使用网络整形来模拟网络连接和条件。例如，您可以模拟有损或间歇性的互联网连接。

在您使用默认网络设置创建运行时，每个设备都能通过完整无阻碍的 WiFi 与 Internet 建立连接。使用网络整形时，您可以更改 Wi-Fi 连接以指定网络配置文件，例如 **3G** 或 **Lossy 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_cn/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_cn/devicefarm/latest/developerguide/images/aws-device-farm-create-a-new-network-profile.png)

1. 为您的网络配置文件输入名称和设置。

1. 选择**创建**。

1. 完成测试运行的创建工作并启动运行。

创建网络配置文件后，可在 **Project settings (项目设置)** 页面上查看和管理它。

![\[“Project settings (项目设置)”中的网络配置文件\]](http://docs.aws.amazon.com/zh_cn/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 控制台或 API 来停止运行。 AWS CLI

**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. 登录 DeviceFarm 控制台，网址为 [https://console.aws.amazon.com/devicef](https://console.aws.amazon.com/devicefarm) arm。

1. 在 Device Farm 导航面板上，选择**移动设备测试**，然后选择**项目**。

1. 选择其中具有主动测试运行的项目。

1. 在**自动化测试**页面上，选择测试运行。

   设备名称的左侧应当显示待处理或正在运行的图标。  
![\[Device Farm - 停止测试运行\]](http://docs.aws.amazon.com/zh_cn/devicefarm/latest/developerguide/images/aws-device-farm-stop-run.png)

1. 选择 **Stop run (停止运行)**。

   很快，设备名称旁边会出现一个带有红色圆圈（内有减号）的图标。运行停止后，图标颜色会从红色变为黑色。
**重要**  
如果测试已完成，则 Device Farm 无法停止测试。如果测试正在进行，Device Farm 会停止测试。总分钟数（您会为此付费）显示在 **设备** 部分。此外，您还需要为 Device Farm 运行安装套件和停用套件所花的总分钟数付费。有关更多信息，请参阅 [Device Farm 定价](https://aws.amazon.com/device-farm/faq/#pricing)。

   下图显示了成功停止测试运行后的示例 **Devices (设备)** 部分。  
![\[Device Farm - 已停止的运行的“Details (详细信息)”页面\]](http://docs.aws.amazon.com/zh_cn/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 资源名称 (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 控制台或 API 来查看项目的运行列表。 AWS CLI

**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. 登录 DeviceFarm 控制台，网址为 [https://console.aws.amazon.com/devicef](https://console.aws.amazon.com/devicefarm) arm。

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 控制台或 API 来创建设备池。 AWS CLI

**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 等）以包含设备。例如，您可以选择*Availability EQUALS AVAILABLE*包括当前处于该`Available`状态的设备。

   1. 对于**值**（第三个下拉列表），输入或选择要为**字段**和**运算符**值指定的值。根据您的**字段**选择，值会受到限制。例如，如果您为**字段**选择了**平台**，则可用的选项只有 **ANDROID** 和 **IOS**。类似地，如果您为**字段**选择了**外形规格**，则可用的选项只有 **PHONE** 和 **TABLET**。

   1. 要添加其他规则，请选择**添加规则**。

      在创建第一条规则后，设备列表中与该规则匹配的每个设备旁边的框将会被选中。在您创建或更改规则后，设备列表中与这些组合规则匹配的每个设备旁边的框将会被选中。具有已选中框的设备将包括在设备池中。具有已清除框的设备被排除在设备池外。

   1. 在**最大设备数量**下，输入要在设备池中使用的设备数量。如果您未输入设备的最大数量，Device Farm 将选择实例集中与您创建的规则相匹配的所有设备。为避免产生额外收费，请将此数字设置为与您的实际并行执行和设备种类要求相匹配的数量。

   1. 要删除规则，请选择**删除规则**。

1. 如果要手动包含或排除单个设备，请执行以下操作：

   1. 选择**创建静态设备池**。

   1. 选中或清除每台设备旁边的复选框。仅当您没有指定任何规则时，才可以选中或清除框。

1. 如果您要包括或排除所有显示的设备，请选中或清除列表的列标题行中的框。如果您只想查看私有设备实例，请选择**仅查看私有设备实例**。
**重要**  
虽然您可以使用列标题行中的框来更改显示的设备列表，但这并不表示剩余的显示设备只是包括或排除的设备。要确认将包括或排除哪些设备，请确保清除列标题行中的所有框的内容，然后浏览各个框。

1. 选择**创建**。

## 创建设备池 (AWS CLI)
<a name="how-to-create-device-pool-cli"></a>

**提示**  
如果您未输入设备的最大数量，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 将选择实例集中与您创建的规则相匹配的所有设备。为避免产生额外收费，请将此数字设置为与您的实际并行执行和设备种类要求相匹配的数量。
+ 调用 [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](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_cn/devicefarm/latest/developerguide/images/df-run-calendar.png)。运行中的每台设备也将以待处理图标开始，然后在测试开始时切换到正在运行的 ![\[Device Farm progress indicator.\]](http://docs.aws.amazon.com/zh_cn/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. 登录 DeviceFarm 控制台，网址为 [https://console.aws.amazon.com/devicef](https://console.aws.amazon.com/devicefarm) arm。

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_cn/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` 的**级别**。可能的值有：
  + **提醒**
  + **重大**
  + **Debug**
  + **Emergency**
  + **错误**
  + **Errored**
  + **已失败**
  + **信息**
  + **Internal**
  + **Notice**
  + **Passed**
  + **Skipped**
  + **Stopped**
  + **详细**
  + **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](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 会显示表示测试结果状态的图标：


| 说明 | 图标 | 
| --- | --- | 
| 测试成功。 | ![\[The test succeeded.\]](http://docs.aws.amazon.com/zh_cn/devicefarm/latest/developerguide/images/df-run-success.png) | 
| 测试失败。 | ![\[The test failed.\]](http://docs.aws.amazon.com/zh_cn/devicefarm/latest/developerguide/images/df-run-failure.png) | 
| Device Farm 跳过了测试。 | ![\[The test was skipped.\]](http://docs.aws.amazon.com/zh_cn/devicefarm/latest/developerguide/images/df-run-skipped.png) | 
| 已停止测试。 | ![\[The test was stopped.\]](http://docs.aws.amazon.com/zh_cn/devicefarm/latest/developerguide/images/df-run-stopped.png) | 
| Device Farm 返回了警告。 | ![\[Device Farm returned a warning.\]](http://docs.aws.amazon.com/zh_cn/devicefarm/latest/developerguide/images/df-run-warning.png) | 
| Device Farm 返回了错误。 | ![\[Device Farm returned an error.\]](http://docs.aws.amazon.com/zh_cn/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_cn/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_cn/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 资源名称（ARN）](#artifacts-cli-step1)
+ [步骤 2：列出您的构件](#artifacts-cli-step2)
+ [步骤 3：下载您的构件](#artifacts-cli-step3)

### 步骤 1：获取 Amazon 资源名称（ARN）
<a name="artifacts-cli-step1"></a>

您可以按运行、作业、测试套件或者测试列出项目。您需要相应的 ARN。下表显示了每个 AWS CLI 列表命令的输入 ARN：


| AWS CLI 列表命令 | 所需的 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>

 AWS CLI [list-ar](https://docs.aws.amazon.com/cli/latest/reference/devicefarm/list-artifacts.html) tifacts 命令返回构件列表，例如文件、屏幕截图和日志。每个项目都有一个 URL，方便您下载该文件。
+ 调用指定了运行、作业、测试套件或测试 ARN 的 **list-artifacts**。指定 FILE、LOG 或 SCREENSHOT 的类型。

  此示例会返回单个测试可用的每个项目的下载 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 文件中的**项目：**部分配置客户项目。

**测试规范 shell 脚本**  
从您的 YAML 文件创建的中间 Shell 脚本文件。由于该脚本在测试运行中使用，因此可以使用 shell 脚本文件调试 YAML 文件。

**测试规范文件**  
测试运行中使用的 YAML 文件。

有关更多信息，请参阅 [在 Device Farm 中下载构件](artifacts.md)。

![\[自定义测试环境中操作的 Device Farm 层次结构\]](http://docs.aws.amazon.com/zh_cn/devicefarm/latest/developerguide/images/hierarchy.png)
