

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

# 将您的自定义测试环境迁移到新的 iOS 测试主机
<a name="ios-host-migration"></a>

 要将现有测试从旧版主机迁移到新的 macOS 测试主机，您需要根据先前存在的测试规范文件开发新的测试规范文件。

 推荐的方法是从所需测试类型的示例测试规范文件开始，然后将相关命令从旧的测试规范文件迁移到新的测试规范文件中。这使您可以利用新主机的示例测试规范的新功能和优化，同时重复使用现有代码片段。

**Topics**
+ [教程：使用控制台迁移 iOS 测试规范文件](#ios-host-migration-console-tutorial)
+ [新测试主机和旧版测试主机之间的差异](#ios-host-migration-differences)

## 教程：使用控制台迁移 iOS 测试规范文件
<a name="ios-host-migration-console-tutorial"></a>

 在此示例中，Device Farm 控制台将用于载入现有 iOS 设备测试规范，以使用新的测试主机。

### 步骤 1：使用控制台创建新的测试规范文件
<a name="ios-host-migration-console-tutorial-step1"></a>

1. 登录 [AWS Device Farm 控制台](https://console.aws.amazon.com/devicefarm)。

1. 导航到包含您的自动化测试的 Device Farm 项目。

1. 下载一份您希望加入的现有测试规范的副本。

   1. 单击 “项目设置” 选项，然后导航到 “**上传**” 选项卡。

   1. 导航到您要使用的测试规范文件。

   1. 单击 “**下载**” 按钮制作此文件的本地副本。

1. 返回到 “项目” 页面，然后单击 “**创建”、“运行**”。

1. 填写向导上的选项，就像开始新的运行一样，但**在 “选择测试规范**” 选项处停下来。

1. 使用默认选择的 iOS 测试规范，单击 “**创建测试规范**” 按钮。

1. 修改文本编辑器中*默认*选择的测试规范。

   1.  如果尚不存在，请使用以下命令修改测试规范文件以选择新主机：

      ```
      ios_test_host: macos_sequoia
      ```

   1. 从上一步中下载的测试规范副本中，查看每份规范` phase`。

   1.  将旧测试规范阶段的命令复制到新测试规范的每个相应阶段，忽略与安装或选择 Java、Python、Node.js、Ruby、Appium 或 Xcode 相关的命令。

1.  在**另存为**文本框中输入新的文件名。

1.  单击 “**另存为新**内容” 按钮以保存您的更改。

 有关可用作参考的测试规范文件的示例，请参阅中提供的示例[测试规范示例](custom-test-environment-test-spec.md#custom-test-environment-test-spec-example)。

### 第 2 步：选择软件预安装的软件
<a name="ios-host-migration-console-tutorial-step2"></a>

 在新的测试主机中，使用名`devicefarm-cli`为的新标准化版本管理工具选择预安装的软件版本。现在，推荐使用此工具来使用我们在测试主机上提供的各种软件。

 例如，您可以添加以下行来使用不同的 JDK 17 测试环境：

```
- devicefarm-cli use java 17
```

 有关可用软件支持的更多信息，请查看：[自定义测试环境中支持的软件](custom-test-environments-hosts-software.md)。

### 第 3 步：通过软件选择工具使用 Appium 及其依赖项
<a name="ios-host-migration-console-tutorial-step3"></a>

 新的测试主机仅支持 Appium 2.x 及更高版本。请使用明确选择 Appium 版本`devicefarm-cli`，同时移除传统工具，例如。` avm`例如：

```
# This line using 'avm' should be removed
# - avm 2.3.1

# And the following lines should be added
- devicefarm-cli use appium 2 # Selects the version
- appium --version            # Prints the version
```

所选的 Appium 版本预`devicefarm-cli`装了适用于 iOS 的驱动程序 XCUITest 的兼容版本。

 此外，你还需要更新测试规范才能使用，` DEVICEFARM_APPIUM_WDA_DERIVED_DATA_PATH_V9`而不是` DEVICEFARM_WDA_DERIVED_DATA_PATH`。新的环境变量指向 WebDriverAgent 9.x 的预构建版本，这是 Appium 2 测试支持的最新版本。

欲了解更多信息，请查看[为 iOS 测试选择 WebDriverAgent 版本](test-types-appium.md#test-types-appium-select-wda)和[Appium 测试的环境变量](custom-test-environment-variables.md#custom-test-environment-variables-appium)。

## 新测试主机和旧版测试主机之间的差异
<a name="ios-host-migration-differences"></a>

 在编辑测试规范文件以使用新的 iOS 测试主机并从旧版测试主机过渡测试时，请注意以下主要环境差异：
+  **Xcode 版本：**在旧版测试主机环境中，可用的 Xcode 版本基于用于测试的设备的 iOS 版本。例如，在 iOS 18 设备上进行的测试在旧版主机上使用 Xcode 16，而在 iOS 17 上进行的测试则使用 Xcode 15。在新的主机环境中，所有设备都可以访问相同版本的 Xcode，从而为不同版本的设备上的测试提供了一致的环境。有关当前可用的 Xcode 版本的列表，请参阅[支持的软件](custom-test-environments-hosts-software.md)。
+  **选择软件版本：**在许多情况下，默认软件版本已更改，因此，如果您之前没有在旧版测试主机中明确选择软件版本，则可能需要使用立即在新测试主机中指定该版本[`devicefarm-cli`](custom-test-environments-hosts-software-cli.md)。在绝大多数用例中，我们建议客户明确选择他们使用的软件版本。通过选择软件版本，`devicefarm-cli`您将获得可预测且一致的使用体验，并且如果 Device Farm 计划从测试主机中删除该版本，则会收到大量警告。

   此外，诸如 `nvm`、`pyenv`、` avm` 和 `rvm` 之类的软件选择工具已被删除，取而代之的是新的 ` devicefarm-cli` 软件选择系统。
+  **可用的软件版本：**以前预安装的软件的许多版本已被删除，并添加了许多新版本。因此，请确保在使用 `devicefarm-cli` 选择软件版本时，选择[支持的版本列表](custom-test-environments-hosts-software.md)中的版本。
+  **该工具`libimobiledevice`套件已被删除**，转而使用较新的/第一方工具来跟踪当前的iOS设备测试和行业标准。对于 iOS 17 及更高版本，你可以迁移大部分命令以使用类似的 Xcode 工具，名为`devicectl`。有关信息`devicectl`，可以在安装了 Xcode 的计算机上运行`xcrun devicectl help`。
+  **在旧版主机测试规范文件中硬编码**为绝对路径的文件路径很可能无法在新测试主机中按预期工作，并且通常不建议将其用于测试规范文件。我们建议您对所有测试规范文件代码使用相对路径和环境变量。有关更多信息，请查看上的主题[执行自定义测试环境的最佳实践](custom-test-environments-best-practices.md)。
+  **操作系统版本和架构：**传统测试主机根据分配的设备使用各种 macOS 版本和 CPU 架构。因此，用户可能会注意到环境中可用的系统库存在一些差异。有关先前主机操作系统版本的更多信息，请查看[旧版 iOS 测试主机](custom-test-environments-hosts-ios.md#legacy-ios-host)。
+  **对于 Appium** 用户，选择的方式 WebDriverAgent 已更改为使用环境变量前缀，` DEVICEFARM_APPIUM_WDA_DERIVED_DATA_PATH_V`而不是旧` DEVICEFARM_WDA_DERIVED_DATA_PATH_V`的前缀。有关更新后的变量的更多信息，请查看[Appium 测试的环境变量](custom-test-environment-variables.md#custom-test-environment-variables-appium)。
+  **对于 Appium Java** 用户，新的测试主机的类路径中不包含任何预安装的 JAR 文件，而之前的主机包含一个 TestNG 框架的 JAR 文件（通过环境变量）。`$DEVICEFARM_TESTNG_JAR`我们建议客户将测试框架所必需的 JAR 文件打包到测试包中，并从测试规范文件中删除 `$DEVICEFARM_TESTNG_JAR` 变量的实例。

 如果您从软件角度对测试主机之间的差异有任何反馈或疑问，我们建议您通过支持案例与服务团队联系。