

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

# AWS Device Farm 中的限制
<a name="limits"></a>

**Topics**
+ [服务限制](#service-limits)
+ [文件限制](#file-limits)
+ [API 限制](#api-limits)
+ [Appium 端点限制](#appium-endpoint-limits)
+ [自定义环境变量限制](#custom-environment-variable-limits)

## 服务限制
<a name="service-limits"></a>
+  您可以包括在测试运行中的设备数量没有限制。但是，在测试运行期间 Device Farm 将同时测试的设备数上限为 5。该数字可以根据要求增加，并由服务团队根据具体情况进行评估。
+ 您可以安排的运行次数没有限制。请注意，这些运行最多只能排队 24 小时。
+  远程访问会话的持续时间有 150 分钟的硬性限制。
+  自动测试运行的持续时间有 150 分钟的硬性限制。
+  包括您账户中待处理的排队任务在内的最大数量为 250。这是一个软性限制。
+  您在测试运行中可以包含的设备数量没有限制。在任何给定时间，您可以在其中并行运行测试的设备（作业）数量等于您的账户级并发度。Device Farm 中用于计量的默认账户级别并发度为 5。
+ 根据使用案例，计量并发限制可按需提升至特定阈值。非计量用途的默认账户级别并发度等于您为该平台订阅的插槽数量。

   有关默认计量并发限制或一般配额的更多信息，请参阅[配额](https://docs.aws.amazon.com/general/latest/gr/devicefarm.html)页面。
+ 不使用[自定义测试环境](custom-test-environments.md)的自动化运行中最多只能有 250 个单独的测试用例。否则，可能会跳过运行。

## 文件限制
<a name="file-limits"></a>
+  您可以上传的应用程序的最大文件大小为 4 GB。请注意，我们目前不接受适用于 Android 的 .aab 格式文件。
+  在测试运行期间，Device Farm 自动生成的视频的最大大小为 1 GB。任何超过此大小的视频，超出此部分的所有剩余视频内容都将被截断。客户仍可以使用自己的视频录制解决方案（如果有），并将其存储在 Device Farm 的托管存储外部。
+  在测试运行期间，Device Farm 自动生成的设备日志（Android 上的 logcat 或 iOS 上的 syslog）的最大大小为 1 GB。任何超过此大小的日志，超出此部分的所有剩余日志都将被截断。如果日志超过 1 GB，客户可以将这些日志存储在 Device Farm 的托管存储外部。
+  Device Farm 的自定义环境模式客户构件的最大累积大小为 1 GB。如果您的构件超过此大小，则所有构件都将不可用。
+  如果测试运行期间生成的所有构件的累积大小超过 4 GB，则系统可能会丢弃某些构件（包括视频、设备日志和客户构件）。

## API 限制
<a name="api-limits"></a>
+  Device Farm 按照令牌存储桶算法对 API 调用速率进行节流。例如，假设创建一个存放令牌的存储桶。一个令牌代表一个事务，一次 API 调用会用掉一个令牌。令牌以固定速率（例如每秒 10 个令牌）添加到存储桶中，存储桶的容量有上限（例如 100 个令牌）。请求或程序包到达时，必须从存储桶中获取令牌才能被处理。如果有足够的令牌，则系统会通过请求并移除令牌。如果没有足够的令牌，则请求要么延迟，要么被丢弃，具体取决于实现情况。

   在 Device Farm 中，算法的实现方式如下：
  +  **Burst API 请求数**是服务在指定客户账户 ID 中针对指定 API 能够响应的最大请求数。换句话说，这就是存储桶的容量。只要存储桶中还有令牌，您就可以多次调用 API，并且每个请求会消耗一个令牌。
  +  **Transactions-per-second (TPS) 速率**是可以执行您的 API 请求的最低速率。换句话说，这就是存储桶每秒重填令牌的速率。例如，如果某个 API 的突发数为 10，但 TPS 为 1，则可以立即调用它 10 次。但是，存储桶只能以每秒 1 个令牌的速度重新获得令牌，除非您停止调用 API 让存储桶重填令牌，否则系统将节流为每秒 1 个调用。

 以下是 Device Farm 的费率 APIs：
+  对于 List an APIs d Get，**Burst API 请求**容量为`50`，**Transactions-per-second (TPS) 速率为**`10`。
+  对于所有其他请求 APIs，**Burst API 请求**容量为`10`，**Transactions-per-second (TPS) 速率为**`1`。

## Appium 端点限制
<a name="appium-endpoint-limits"></a>

以下限制适用于所有 Appium 端点会话。有关如何最好地处理限制的问题和指导，请提交支持案例。
+ 每个 Appium 命令的执行时长限制为 4 分钟，之后该命令就会超时。
+ 该端点接受的输入有效载荷大小不超过 20MB，并允许输出有效载荷大小不超过 20MB。任何输入或输出大小大于此值的请求都将收到 WebDriver 错误消息`'unsupported operation'`。
+ 请求按照收到的顺序在设备上按顺序执行。因此，我们强烈建议按顺序发送命令，并在发送新命令之前等待每个命令的响应。也就是说，某些 Appium 服务器命令可以并行发送，特别是：
  + [获取状态](https://appium.io/docs/en/2.19/commands/base-driver/#getstatus)
  + [获取会话](https://appium.io/docs/en/2.19/commands/base-driver/#getsessions)
+ 该端点目前不支持该[WebDriver BiDi 协议](https://appium.io/docs/en/2.19/guides/caps/#bidi-protocol-support)。
+ 该端点不支持 Appium 插件或除 XCUITest 和 UIAutomator2 驱动程序之外的驱动程序。
+ 通过远程访问会话创建请求，最多可以将 3 个应用程序用作辅助应用程序。也就是说，在会话期间使用 [https://docs.aws.amazon.com/devicefarm/latest/APIReference/API_InstallToRemoteAccessSession.html](https://docs.aws.amazon.com/devicefarm/latest/APIReference/API_InstallToRemoteAccessSession.html)API 可以安装的应用程序数量没有限制。

## 自定义环境变量限制
<a name="custom-environment-variable-limits"></a>

以下限制适用于所有自定义环境变量。有关如何最好地处理限制的问题和指导，请提交支持案例。
+ 在给定的 Device Farm 项目或运行中，最多可以配置 32 个变量。
+ 变量名称的长度不能超过 256 个字符。
+ 变量名受所施加的限制的约束`bash`。也就是说，它们必须仅包含字母数字和下划线字符，并且不能以数字开头。
+ 以开头的`$DEVICEFARM_`变量名保留供内部服务使用。
+ 变量值的长度不能超过 256 个字符。
+ 环境变量不能用于在测试规范文件中配置测试主机计算选择。