

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

# AWS Device Farm 的概念
<a name="concepts"></a>

Device Farm 是一项应用程序测试服务，您可以用它在由 Amazon Web Services (AWS) 托管的实际物理手机和平板电脑上测试您的 Android、iOS 和 Web 应用程序并与其交互。

本节介绍重要的 Device Farm 概念。
+ [AWS Device Farm 中的设备支持Devices](devices.md)
+ [AWS Device Farm 中的测试环境](test-environments.md)
+ [运行](test-runs.md)
+ [应用程序](apps.md)
+ [AWS Device Farm 中的报告Reports](reports.md)
+ [会话](sessions.md)

有关 Device Farm 中支持的测试类型的更多信息，请参阅 [AWS Device Farm 中的测试框架和内置测试](test-types.md)。

# AWS Device Farm 中的设备支持
<a name="devices"></a>

以下几节提供有关 Device Farm 中的设备支持的信息。

**Topics**
+ [支持的设备](#devices-supported)
+ [设备池](#devices-pools)
+ [私有设备](#devices-private)
+ [设备品牌](#devices-branding)
+ [设备槽](#device-slots)
+ [预安装的设备应用程序](#devices-apps)
+ [设备功能](#devices-capabilities)

## 支持的设备
<a name="devices-supported"></a>

Device Farm 为数百个独特的常用 Android 和 iOS 设备和操作系统组合提供支持。可用设备的列表随着新设备进入市场而扩大。有关设备的完整列表，请参阅[AWS 控制台中的交互式设备列表](https://us-west-2.console.aws.amazon.com/devicefarm/home?region=us-west-2#/mobile/publicdevices)。

## 设备池
<a name="devices-pools"></a>

Device Farm 将其设备组织成设备池，您可用于进行测试。这些设备池包含相关设备，例如只运行在 Android 上或只运行在 iOS 上的设备。Device Farm 提供了精选设备池，例如主要设备的设备池。您还可以创建混合使用公有和私有设备的设备池。

## 私有设备
<a name="devices-private"></a>

私有设备允许您针对测试需要指定精确的硬件和软件配置。某些配置（例如已获得 root 权限的 Android 设备）可以作为私有设备支持。每个私有设备都是 Device Farm 在 Amazon 数据中心代表您部署的物理设备。您的私有设备专门供您用于自动和手动测试。在您选择终止订阅后，将从我们的环境中删除硬件。有关更多信息，请参阅[私有设备](https://aws.amazon.com/device-farm/pricing/#privateDevices)和[AWS Device Farm 中的私有设备](working-with-private-devices.md)。

## 设备品牌
<a name="devices-branding"></a>

Device Farm在各种移动设备和平板电脑上运行测试 OEMs.

## 设备槽
<a name="device-slots"></a>

设备槽对应于并发性，您购买的设备槽的数量决定您可以在测试或远程访问会话中运行多少个设备。

设备槽有两种类型：
+ *远程访问设备槽*是您可以在远程访问会话中并发运行的设备槽。

  如果您有一个远程访问设备槽，则您每次只能运行一个远程访问会话。如果您购买了其他远程测试设备槽，则可以并发运行多个会话。
+ *自动测试设备槽*是您可以在其上并发运行测试的设备槽。

  如果您有一个自动测试设备槽，则您每次只能在一个设备上运行测试。如果您购买了其他自动测试设备槽，则可以在多个设备上并发运行多个测试以更快地获得测试结果。

 您可以根据设备系列购买设备槽 (用于自动测试的 Android 或 iOS 设备，用于远程访问的 Android 或 iOS 设备)。有关更多信息，请参阅 [Device Farm 定价](https://aws.amazon.com/device-farm/pricing/)。

## 预安装的设备应用程序
<a name="devices-apps"></a>

Device Farm 中的设备包括由制造商和运营商预安装的少量应用程序。

## 设备功能
<a name="devices-capabilities"></a>

所有设备都有互联网连接。它们没有运营商连接，无法打电话或发送 SMS 消息。

您可以使用任何支持前置或后置摄像头的设备拍摄照片。由于设备安装方式的不同，照片可能看起来比较暗和模糊。

Google Play 服务和谷歌浏览器安装在安卓设备上。

# AWS Device Farm 中的测试环境
<a name="test-environments"></a>

AWS Device Farm 提供自定义测试环境和标准测试环境用于运行自动测试。您可以选择自定义测试环境，以完全掌控您的自动测试。或者，您也可以选择 Device Farm 默认的标准测试环境，为自动测试套件中的每个测试提供精细报告。

**Topics**
+ [标准测试环境](#test-environments-standard)
+ [自定义测试环境](#custom-test-environment)

## 标准测试环境
<a name="test-environments-standard"></a>

 在标准环境中运行测试时，Device Farm 会为测试套件中的每个案例提供详细的日志和报告。您可以查看每个测试的性能数据、视频、屏幕截图和日志，以查明并解决应用程序中的问题。

**注意**  
由于 Device Farm 在标准环境中提供精细报告，因此测试执行时间可能会比您在本地运行测试所用的时间更长。如果您希望缩短执行时间，请在自定义测试环境中运行测试。

## 自定义测试环境
<a name="custom-test-environment"></a>

当您自定义测试环境时，可以指定 Device Farm 应运行以执行测试的命令。这样可确保 Device Farm 上测试的运行方式类似于本地计算机上测试的运行方式。在此模式下运行测试还支持测试的实时日志和视频流。当您在自定义测试环境中运行测试时，将不会获得每个测试案例的精细报告。有关更多信息，请参阅 [AWS Device Farm 中的自定义测试环境](custom-test-environments.md)。

在使用 Device Farm 控制台、 AWS CLI或 Device Farm API 创建测试运行时，可以选择使用自定义测试环境。

有关更多信息，请参阅[使用 AWS CLI](https://docs.aws.amazon.com/devicefarm/latest/developerguide/how-to-create-test-run.html#how-to-create-test-run-cli-step5) 和 [在 Device Farm 中创建测试运行](how-to-create-test-run.md) 上传自定义测试规范。

# AWS Device Farm 中的运行
<a name="test-runs"></a>

以下几节包含有关 Device Farm 中的运行的信息。

Device Farm 中的运行代表您的应用程序的特定版本，使用一组特定的测试，在一组特定的设备上运行。运行将生成一个报告，其中包含有关运行结果的信息。一次运行包含一个或多个任务。

**Topics**
+ [运行配置](#test-runs-configuration)
+ [运行文件保留](#test-runs-retention)
+ [运行设备状态](#test-runs-device-state)
+ [并行运行](#test-runs-parallel)
+ [设置执行超时](#test-runs-default-timeout)
+ [运行中的广告](#test-runs-ads)
+ [运行中的媒体](#test-runs-media)
+ [运行的常见任务](#test-runs-tasks)

## 运行配置
<a name="test-runs-configuration"></a>

作为运行的一部分，您可以提供 Device Farm 可用于覆盖当前设备设置的设置。其中包括纬度和经度坐标、额外数据（包含在.zip 文件中）和辅助应用程序（应在要测试的应用程序之前安装的应用程序）。在 Android 上，可以更改一些其他设置，例如区域设置和无线电状态（蓝牙、GPS、NFC 和 Wi-Fi）。

## 运行文件保留
<a name="test-runs-retention"></a>

Device Farm 将您的应用程序和文件存储 30 天，然后从其系统中删除它们。不过，您可以随时删除您的文件。

Device Farm 将您的运行结果、日志和屏幕截图存储 400 天，然后从其系统中删除它们。

## 运行设备状态
<a name="test-runs-device-state"></a>

Device Farm 总是在使设备可用于执行下一个任务之前先重启设备。

## 并行运行
<a name="test-runs-parallel"></a>

Device Farm 在设备变得可用时并行运行测试。

## 设置执行超时
<a name="test-runs-default-timeout"></a>

您可以设置一个值，以指定在让每个设备停止运行测试之前，应执行多长时间的测试运行。例如，如果您的测试需要每个设备花费 20 分钟，应为每个设备选择 30 分钟的超时值。

有关更多信息，请参阅 [在 AWS Device Farm 中设置测试运行的执行超时](how-to-set-default-timeout-for-test-runs.md)。

## 运行中的广告
<a name="test-runs-ads"></a>

我们建议您从应用程序中删除广告，然后再将它们上传到 Device Farm。我们无法保证广告会在运行期间显示。

## 运行中的媒体
<a name="test-runs-media"></a>

您可以提供媒体或其他数据来补充您的应用程序。附加的数据必须以 .zip 文件形式提供，并且大小不能超过 4 GB。

## 运行的常见任务
<a name="test-runs-tasks"></a>

有关更多信息，请参阅[在 Device Farm 中创建测试运行](how-to-create-test-run.md)和[AWS Device Farm 中的测试运行测试运行](runs.md)。

# AWS Device Farm 中的应用程序
<a name="apps"></a>

以下各部分提供了有关 Device Farm 中的应用程序行为的信息。

**Topics**
+ [分析应用程序](#test-runs-instrumenting)
+ [对运行中的应用程序重新签名](#test-runs-app-resigning)
+ [运行中难以辨认的应用程序](#test-runs-obfuscated-apps)

## 分析应用程序
<a name="test-runs-instrumenting"></a>

您无需分析您的应用程序或为 Device Farm 提供您的应用程序的源代码。Android 应用程序无需修改即可提交。必须使用 **iOS 设备**目标而非模拟器构建 iOS 应用程序。

## 对运行中的应用程序重新签名
<a name="test-runs-app-resigning"></a>

对于 iOS 应用程序，您无需向您的预置配置文件中添加任何 Device Farm UUID。Device Farm 会使用通配符配置文件替换嵌入式预置配置文件，然后重新签署该应用程序。如果您提供了辅助数据，则 Device Farm 会在 Device Farm 安装应用程序之前将辅助数据添加到应用程序的程序包中，以使辅助数据位于您的应用程序的沙盒中。重新签署应用程序会删除权限，例如应用程序组、关联域、游戏中心、HealthKit、HomeKit、无线配件配置、应用程序内购买、应用程序间音频、Apple Pay、推送通知以及 VPN 配置和控制。

对于 Android 应用程序，Device Farm 会对应用程序重新签名。这可能会破坏依赖应用程序签名的任何功能（如 Google Maps Android API），也可能会触发 DexGuard 之类的产品的防盗版或防窜改检测。

## 运行中难以辨认的应用程序
<a name="test-runs-obfuscated-apps"></a>

对于 Android 应用程序，如果应用程序难以辨认，您仍然可以使用 Device Farm 测试它 (如果您使用 ProGuard)。但是，如果您使用包含防盗版措施的 DexGuard，Device Farm 将无法对应用程序重新签名并运行测试。

# AWS Device Farm 中的报告
<a name="reports"></a>

以下部分提供有关 Device Farm 测试报告的信息。

**Topics**
+ [报告保留](#reports-retention)
+ [报告组件](#reports-components)
+ [报告中的日志](#reports-logs)
+ [报告的常见任务](#reports-tasks)

## 报告保留
<a name="reports-retention"></a>

Device Farm 将您的报告存储 400 天。这些报告包括元数据、日志、屏幕截图和性能数据。

## 报告组件
<a name="reports-components"></a>

Device Farm 中的报告包含通过和失败信息、崩溃报告、测试和设备日志、屏幕截图以及性能数据。

报告包括详细的每个设备的数据以及概要结果，例如给定问题的发生次数。

## 报告中的日志
<a name="reports-logs"></a>

报告包括 Android 测试的完整 logcat 捕获和 iOS 测试的完整设备控制台日志。

## 报告的常见任务
<a name="reports-tasks"></a>

有关更多信息，请参阅 [在 Device Farm 中查看测试报告](how-to-use-reports.md)。

# AWS Device Farm 中的会话
<a name="sessions"></a>

你可以使用 Device Farm 通过远程访问会话对安卓和 iOS 应用程序进行交互式测试。这包括在 Web 浏览器中进行手动交互以及从本地客户端对远程设备运行 Appium 测试。开发者可以在特定设备上重现其应用程序或Appium测试中的问题，以隔离和解决问题。

**Topics**
+ [支持远程访问的设备](#session-devices-supported)
+ [会话文件保留](#session-files-retention)
+ [分析应用程序](#session-instrumenting)
+ [对会话中的应用程序重新签名](#session-resigning-apps)
+ [会话中难以辨认的应用程序](#session-obfuscated-apps)

## 支持远程访问的设备
<a name="session-devices-supported"></a>

Device Farm 为许多独特的常用 Android 和 iOS 设备提供支持。可用设备的列表随着新设备进入市场而扩大。Device Farm 控制台中显示了当前可用于远程访问的 Android 和 iOS 设备的列表。有关更多信息，请参阅 [AWS Device Farm 中的设备支持Devices](devices.md)。

## 会话文件保留
<a name="session-files-retention"></a>

Device Farm 将您的应用程序和文件存储 30 天，然后从其系统中删除它们。不过，您可以随时删除您的文件。

Device Farm 会将您的会话日志和捕获的视频存储 400 天，然后从其系统中删除它们。

## 分析应用程序
<a name="session-instrumenting"></a>

您无需分析您的应用程序或为 Device Farm 提供您的应用程序的源代码。无需修改即可提交 Android 和 iOS 应用程序。

## 对会话中的应用程序重新签名
<a name="session-resigning-apps"></a>

Device Farm 会对 Android 和 iOS 应用程序重新签名。这可能会破坏依赖应用程序签名的功能。例如，适用于 Android 的 Google Maps API 取决于您的应用程序的签名。应用程序重新签名还可能触发来自安卓设备等 DexGuard 产品的反盗版或防篡改检测。

## 会话中难以辨认的应用程序
<a name="session-obfuscated-apps"></a>

对于 Android 应用程序，如果应用程序经过混淆处理，您仍然可以使用 Device Farm 对其进行测试（如果您使用）。 ProGuard但是，如果您使用 DexGuard 反盗版措施，Device Farm 将无法重新签署应用程序。