

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

# 将测试从标准测试环境迁移到自定义测试环境
<a name="custom-test-environment-migration"></a>

在 AWS Device Farm 中，您可以从标准测试执行模式切换到自定义执行模式。迁移主要涉及两种不同的执行模式：

1. **标准模式**：此测试执行模式主要用于为客户提供精细的报告和完全托管的环境。

1. **自定义模式**：此测试执行模式专为不同的用例而构建，这些用例需要更快的测试运行、提升和转换能力、并能实现与本地环境的平衡，以及实时视频流。

有关 Device Farm 中标准模式和自定义模式的更多信息，请参阅 [AWS Device Farm 中的测试环境](test-environments.md)和 [AWS Device Farm 中的自定义测试环境](custom-test-environments.md)。

## 迁移时的注意事项
<a name="considerations-when-migrating"></a>

本节列出了迁移到自定义模式时需要考虑的一些重要用例：

1. **速度**：在标准执行模式下，Device Farm 使用特定框架的打包说明解析您已打包并上传的测试的元数据。解析会检测软件包中的测试数量。之后，Device Farm 将分别运行每项测试，并分别显示每项测试的日志、视频和其他结果构件。但是，这会稳步增加总 end-to-end测试执行时间，因为服务端有测试和结果工件的预处理和后处理。

   相比之下，自定义执行模式不会解析您的测试包；这意味着无需对测试或结果构件进行预处理和最少的后期处理。这会使总 end-to-end执行时间接近您的本地设置。测试的执行格式与在本地计算机上运行时的格式相同。测试结果与您在本地获得的结果相同，可在任务执行结束时下载。

1. **自定义或灵活性**：标准执行模式解析您的测试包以检测测试数量，然后分别运行每个测试。请注意，不能保证测试会按照您指定的顺序运行。因此，需要特定执行顺序的测试可能无法按预期运行。此外，无法自定义主机环境或传递以某种方式运行测试所需的配置文件。

   相比之下，自定义模式允许您配置主机环境，包括安装其他软件、将筛选条件传递给测试、传递配置文件以及控制测试执行设置。它通过一个 yaml 文件（也称为 testspec 文件）来实现这一点，您可以通过向其中添加 shell 命令来修改该文件。此 yaml 文件被转换为在测试主机上执行的 shell 脚本。您可以保存多个 yaml 文件，并在安排运行时根据需要动态选择一个。

1. **直播视频和日志**：标准和自定义执行模式均可为您提供测试所需的视频和日志。但是，在标准模式下，只有在测试完成后才能获得测试的视频和预定义日志。

   相比之下，自定义模式为您提供测试视频和客户端日志的实时流。此外，您还可以在测试结束时下载视频和其他构件。

**提示**  
如果您的用例至少涉及上述因素之一，我们强烈建议您切换到自定义执行模式。

## 迁移步骤
<a name="migrating-to-custom"></a>

要从标准模式迁移到自定义模式，请执行以下操作：

1. 登录 AWS 管理控制台 并打开 Device Farm 控制台，网址为[https://console.aws.amazon.com/devicefarm/](https://console.aws.amazon.com/devicefarm/)。

1. 选择您的项目，然后启动新的自动化运行。

1. 上传您的应用程序（或选择 `web app`），选择您的测试框架类型，上传您的测试包，然后在“`Choose your execution environment`”参数下选择选项以`Run your test in a custom environment`。

1. 默认情况下，将显示 Device Farm 的示例测试规范文件以供您查看和编辑。此示例文件可用作在[自定义环境模式下](https://docs.aws.amazon.com/devicefarm/latest/developerguide/custom-test-environments.html)试用测试的起点。然后，在控制台确认测试运行正常后，您可以更改与 Device Farm 的任何 API、CLI 和管道集成，以便在安排测试运行时使用此测试规范文件作为参数。有关如何添加测试规范文件作为运行参数的信息，请参阅我们的《API 指南》中有关 `ScheduleRun` API 的 `testSpecArn` 参数部分。[https://docs.aws.amazon.com/devicefarm/latest/APIReference/API_ScheduleRun.html](https://docs.aws.amazon.com/devicefarm/latest/APIReference/API_ScheduleRun.html)

## Appium 框架
<a name="custom-test-environment-migration-appium"></a>

在自定义测试环境中，Device Farm 不会在 Appium 框架测试中插入或覆盖任何 Appium 功能。您必须在测试规范 YAML 文件或测试代码中指定测试的 Appium 功能。

## Android Instrumentation
<a name="custom-test-environment-migration-instrumentation"></a>

您不需要执行任何更改，即可将 Android Instrumentation 测试迁移到自定义测试环境。

## iOS XCUITest
<a name="custom-test-environment-migration-xcuitest"></a>

您无需进行更改即可将 iOS XCUITest 测试移至自定义测试环境。