View a markdown version of this page

自定义测试环境的主机 - AWS Device Farm

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

自定义测试环境的主机

Device Farm 通过使用测试主机环境支持一组带有预配置软件的操作系统。在测试执行期间,Device Farm 使用动态连接到所选被测设备的 Amazon-managed 实例(主机)。此实例已完全清除,不会在两次运行之间重复使用,并在测试运行结束后终止其生成的构件。

自定义测试环境的可用测试主机

测试主机完全由设备农场管理。下表列出了当前可用和支持的自定义测试环境的设备农场测试主机。

设备平台 测试主机 操作系统 架构 支持的设备
Android amazon_linux_2 Amazon Linux 2 x86_64

Android6 及以上

iOS macos_tahoe

macOS Tahoe(版本 26)

arm64

iOS17 到 27

iOS macos_sequoia

macOS Sequoia(版本 15)

arm64

iOS15 到 26

注意

Device Farm 会定期为设备平台添加新的测试主机,以支持更新的设备操作系统版本及其依赖关系。发生这种情况时,相应设备平台的旧测试主机将终止支持。

为自定义测试环境选择测试主机

要选择所需的测试主机,请在测试规范文件的相应和ios_test_host变量中指定 Android android_test_host 和 iOS 测试主机

您可以通过以下方式之一选择测试主机:

  1. 选择特定的主机 -您可以命名要使用的确切测试主机。

  2. 让设备农场选择 — 将测试主机设置为default,设备农场根据设备的操作系统版本选择主机。

  3. 使用备用主机 — 省略该字段,Device Farm 会将旧版测试主机指定为备用主机。不推荐使用此选项。有关更多信息,请参阅旧版 iOS 测试主机

管理测试主机是设备农场和您的共同责任。您的职责因您选择的选择类型而异。下表概述了推荐的选择类型。

选择类型 设备农场的责任 客户责任

选择特定的主机

在你命名的确切主机上运行测试,每次运行时都有一组一致的软件版本。

指定提供测试所需软件版本的主机(例如,macos_sequoia或amazon_linux_2)。将每个主要设备操作系统版本的测试规范更新到更新的主机,因为设备农场会随着时间的推移终止对旧主机的支持。

让设备农场选择

选择与设备操作系统版本兼容的主机,并将未来操作系统版本的测试路由到支持的主机。

将测试主机值设置为default。如果您的测试需要特定的软件版本,请改为明确指定主机,因为在极少数情况下,较旧版本的依赖项可能无法在较新的主机上使用。

有关与共担责任的更多信息 AWS,请参阅 AWS 网站上的责任共担模型。

选项 1:选择特定的主机

创建测试规范文件时,请在相应的android_test_hostios_test_host字段中提供确切的测试主机值。

version: 0.1 android_test_host: amazon_linux_2 ios_test_host: macos_tahoe phases: # ...

选项 2:让设备农场选择

您可以将测试主机设置为该值,default以让 Device Farm 根据被测设备的操作系统版本选择主机。

注意

目前,ios_test_hostdefault适用于。计划android_test_host在未来的版本中提供支持。

下表显示了按设备操作系统版本划分的默认主机映射。

平台 设备操作系统版本 分配的测试主机
iOS

17 到 27

macos_tahoe
iOS

15 到 16

macos_sequoia
version: 0.1 ios_test_host: default phases: # ...

操作系统版本

每台可用的测试主机都使用设备农场当时支持的操作系统的特定版本。Device Farm 会定期使用次要版本更新和安全补丁来更新操作系统。

您可以找到测试运行期间使用的确切操作系统版本,包括次要版本。为此,请将以下代码片段添加到测试规范文件的任何阶段:

phases: install: commands: # The following example prints the instance's operating system version details - |- if [[ "Darwin" == "$(uname)" ]]; then echo "$(sw_vers --productName) $(sw_vers --productVersion) ($(sw_vers --buildVersion))"; else echo "$(. /etc/os-release && echo $PRETTY_NAME) ($(uname -r))"; fi