

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 將自訂測試環境遷移至新的 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 計劃從測試主機移除該版本時收到大量警告。

   此外，`rvm`已移除 `nvm`、` avm`、 `pyenv`和 等軟體選取工具，以支持新的` 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`變數的執行個體。

 如果您對測試主機與軟體之間的差異有任何意見回饋或問題，我們建議您透過支援案例與服務團隊聯絡。