本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
自訂測試環境的主機
Device Farm 透過使用測試主機環境,支援一組具有預先設定軟體的作業系統。在測試執行期間,Device Farm 會利用 Amazon 受管執行個體 (主機),以動態方式連線至待測的所選裝置。此執行個體會在執行之間完全清除且不重複使用,並在測試執行結束後以其產生的成品終止。
適用於自訂測試環境的測試主機
測試主機完全由 Device Farm 管理。下表列出適用於自訂測試環境的目前可用和支援的 Device Farm 測試主機。
| 裝置平台 | 測試主機 | 作業系統 | Architecture(s) | 支援的裝置 |
|---|---|---|---|---|
| Android | amazon_linux_2 | Amazon Linux 2 | x86_64 |
Android 6 及更高版本 |
| iOS | macos_tahoe |
macOS Tahoe (26 版) |
arm64 |
iOS 17 到 27 |
| iOS | macos_sequoia |
macOS Sequoia (版本 15) |
arm64 |
iOS 15 到 26 |
注意
Device Farm 會定期為裝置平台新增測試主機,以支援較新的裝置作業系統版本及其相依性。發生這種情況時,個別裝置平台的較舊測試主機會終止支援。
選取自訂測試環境的測試主機
若要選取所需的測試主機,請在測試規格檔案的適當 android_test_host和 ios_test_host變數中指定 Android 和 iOS 測試主機。 測試規格語法
您可以透過下列其中一種方式選取測試主機:
-
選取特定主機 – 您指定要使用的確切測試主機。
-
讓 Device Farm 選擇 – 您將測試主機設定為
default,而 Device Farm 會根據裝置的作業系統版本來挑選主機。 -
使用備用主機 – 您省略 欄位,而 Device Farm 會將舊版測試主機指派為備用主機。不建議使用此選項。如需更多資訊,請參閱舊版 iOS 測試主機。
管理測試主機是 Device Farm 與您共同的責任。您的責任會根據您選擇的選擇類型而有所不同。下表摘要說明建議的選取類型。
| 選擇類型 | Device Farm 的責任 | 客户的責任 |
|---|---|---|
|
對您指定的確切主機執行測試,每次執行時都有一組一致的軟體版本。 |
指定提供測試所需軟體版本的主機 (例如 macos_sequoia或 amazon_linux_2)。將您的測試規格更新為每個主要裝置作業系統版本的較新主機,因為 Device Farm 會隨著時間結束對較舊主機的支援。 |
|
|
選取與裝置的作業系統版本相容的主機,並將未來作業系統版本的測試路由到支援的主機。 |
將測試主機值設定為 |
如需與 共同責任的詳細資訊 AWS,請參閱 AWS 網站上的共同責任模型
選項 1:選取特定主機
當您建立測試規格檔案時,請在對應的 android_test_host或 ios_test_host 欄位中提供確切的測試主機值。
範例
version: 0.1 android_test_host:amazon_linux_2ios_test_host:macos_tahoephases: # ...
選項 2:讓 Device Farm 選擇
您可以將測試主機設定為 值default,讓 Device Farm 根據待測裝置的作業系統版本選取主機。
注意
目前, ios_test_host僅適用於 default 。未來版本android_test_host預計支援 。
下表顯示裝置作業系統版本的預設主機映射。
| 平台 | 裝置作業系統版本 | 指派的測試主機 |
|---|---|---|
| iOS | 17 到 27 |
macos_tahoe |
| iOS | 15 到 16 |
macos_sequoia |
範例
version: 0.1 ios_test_host: default phases: # ...
作業系統版本
每個可用的測試主機都會使用 Device Farm 當時支援的特定作業系統版本。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