View a markdown version of this page

将您的自定义测试环境迁移到新的 iOS 测试主机 - AWS Device Farm

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

将您的自定义测试环境迁移到新的 iOS 测试主机

有关可用测试主机的完整列表以及如何选择一台,请参阅自定义测试环境的主机

要将现有测试从旧主机迁移到新的 macOS 测试主机,您需要在现有测试规范文件的基础上开发新的测试规范文件。

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

教程:使用控制台迁移 iOS 测试规范文件

在本示例中,设备农场控制台将用于载入现有的 iOS 设备测试规范,以使用新的测试主机。

第 1 步:使用控制台创建新的测试规范文件

  1. 决定要使用哪个测试主机。有关可用的 iOS 测试主机列表以及如何选择主机,请参阅自定义测试环境的主机

  2. 登录 A WS 设备农场控制台

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

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

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

    2. 导航到您想要加入的测试规范文件。

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

  5. 导航回项目页面,然后单击 “创建运行”

  6. 像开始新的运行一样填写向导上的选项,但要停在 “选择测试规范” 选项。

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

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

    1. 设置ios_test_host为符合您的测试要求的测试主机。例如:

      ios_test_host: macos_tahoe
    2. 从上一步中下载的测试规范副本中,查看每份规范 phase

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

  9. 另存为文本框中输入新的文件名。

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

有关可用作参考的测试规范文件示例,请参阅中提供的示例测试规范示例

步骤 2:选择软件预安装的软件

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

例如,添加以下行以在测试环境中使用 JDK 25:

- devicefarm-cli use java 25

有关支持的可用软件的更多信息,请查看:自定义测试环境中支持的软件

第 3 步:通过软件选择工具使用 Appium 及其依赖关系

使用明确选择 Appium 版本。devicefarm-cli在macos_tahoe测试主机上,Appium 3 是默认版本:

- devicefarm-cli use appium 3 # Selects the version - appium --version # Prints the version

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

当您使用默认测试规范时,设备农场会自动选择 WebDriverAgent (WDA) 来匹配您安装的 XCUITest 驱动程序。有关此选择工作原理的更多信息,请参阅为 iOS 测试选择 WebDriverAgent 版本Appium 测试的环境变量

新测试主机和旧版测试主机之间的差异

当你编辑测试规范文件以使用新的 iOS 测试主机并从旧版测试主机过渡测试时,请注意以下关键环境差异:

  • Xcode 版本:在传统测试主机环境中,可用的 Xcode 版本基于用于测试的设备的 iOS 版本。例如,在 iOS 18 设备上进行的测试在传统主机中使用 Xcode 16,而 iOS 17 上的测试使用 Xcode 15。在新的主机环境中,所有设备都可以访问相同版本的 Xcode,从而为不同版本的设备上的测试提供了一个一致的环境。有关当前可用的 Xcode 版本的列表,请参阅支持的软件

  • 选择软件版本:在许多情况下,默认软件版本已更改,因此,如果您之前没有在旧版测试主机中明确选择软件版本,则可能需要立即使用在新测试主机中指定该版本devicefarm-cli。在绝大多数用例中,我们建议客户明确选择他们使用的软件版本。通过选择软件版本,devicefarm-cli您将获得可预测且一致的使用体验,如果 Device Farm 计划从测试主机中移除该版本,则会收到大量警告。

    此外,诸如 nvmpyenv avmrvm 之类的软件选择工具已被删除,取而代之的是新的 devicefarm-cli 软件选择系统。

  • 可用软件版本:以前预安装的软件的许多版本已被删除,并添加了许多新版本。因此,请确保在使用 devicefarm-cli 选择软件版本时,选择支持的版本列表中的版本。

  • 该工具libimobiledevice套件已被删除,取而代之的是更新/第一方工具来跟踪当前的iOS设备测试和行业标准。对于 iOS 17 及更高版本,你可以将大多数命令迁移到使用类似的 Xcode 工具,名为devicectl。有关信息devicectl,可以在安装了 Xcode 的计算机上运行xcrun devicectl help

  • 在旧版主机测试规范文件中硬编码为绝对路径的文件路径在新测试主机中很可能无法按预期工作,通常不建议将它们用于测试规范文件。我们建议您对所有测试规范文件代码使用相对路径和环境变量。有关更多信息,请查看上的主题执行自定义测试环境的最佳实践

  • 操作系统版本和架构:传统测试主机根据分配的设备使用各种 macOS 版本和 CPU 架构。因此,用户可能会注意到环境中可用的系统库存在一些差异。有关先前主机操作系统版本的更多信息,请查看旧版 iOS 测试主机

  • 对于 Appium 用户,选择的方式 WebDriverAgent 已更改为使用环境变量前缀 DEVICEFARM_APPIUM_WDA_DERIVED_DATA_PATH_V而不是旧 DEVICEFARM_WDA_DERIVED_DATA_PATH_V前缀。有关更新后的变量的更多信息,请查看Appium 测试的环境变量

  • 对于 Appium Java 用户而言,新的测试主机在其类路径中不包含任何预安装的 JAR 文件,而之前的主机包含一个用于 TestNG 框架的 JAR 文件(通过环境变量)。$DEVICEFARM_TESTNG_JAR我们建议客户将测试框架所必需的 JAR 文件打包到测试包中,并从测试规范文件中删除 $DEVICEFARM_TESTNG_JAR 变量的实例。

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