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

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

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

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

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

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

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

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

  1. 登录 AWS Device Farm 控制台

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

- devicefarm-cli use java 17

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

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

新的测试主机仅支持 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 版本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 变量的实例。

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