本頁說明如何設定及執行 CTS 驗證器 (CTS-V) 主機端 Android 16 QPR2 和 Android 17 測試。主機端測試分為兩種類型:多裝置測試 (Android 17 之前推出) 和互動式測試 (Android 17 新增):
- 多裝置測試是全自動化測試。
- 互動式測試屬於半自動化測試,您必須在受測裝置 (DUT) 上執行一些手動步驟。
除了新的互動式測試外,我們也將手動測距準確度和電信測試轉換為主機端多裝置測試,且現在必須進行 Wi-Fi 連線測試。
設定主機端測試
請按照下列步驟設定主機端測試 (多裝置測試需要額外設定):
- 確認桌機符合 CTS 的作業系統需求。
- 請按照「安裝電腦軟體」一文中的步驟 2 和 5 操作,安裝並確認 adb、AAPT2 和 Python 已正確安裝在電腦上。
- Python 版本必須為 3.11 以上。如要判斷 Python 版本,請執行
python3 --version。如果版本低於 3.11,請安裝最新的 Python 正式版本。詳情請參閱python.org的「下載」專區。 - 部分測試需要主機具備 Python
venv模組。 在 Debian 和 Ubuntu 系統上,這個模組可能不會預設安裝。 如要判斷 Python 版本是否具備venv模組,請執行python3 -m venv venv。如果這個指令失敗,系統會顯示錯誤訊息。 按照提示安裝python3.x-venv套件。
- Python 版本必須為 3.11 以上。如要判斷 Python 版本,請執行
如果只執行主機端的互動式測試,請繼續進行「執行主機端測試」。不過,如要執行多裝置測試,請繼續進行「設定主機端多裝置測試」。
設定主機端多裝置測試
如要設定主機端多裝置測試,請按照下列步驟操作:
- 確認桌機符合 CTS 的作業系統需求。
請按照「安裝電腦軟體」一文的步驟 2 和 5 操作,安裝並確認 adb、AAPT2 和 Python 已正確安裝在電腦上。
- Python 版本必須為 3.11 以上。如要判斷 Python 版本,請執行
python3 --version。如果版本低於 3.11,請安裝最新的 Python 正式版本。詳情請參閱python.org的「下載」專區。 - 部分測試需要主機具備 Python
venv模組。 在 Debian 和 Ubuntu 系統上,這個模組可能不會預設安裝。 如要判斷 Python 版本是否具備venv模組,請執行python3 -m venv venv。如果這個指令失敗,系統會顯示錯誤訊息。 按照提示安裝python3.x-venv套件。
- Python 版本必須為 3.11 以上。如要判斷 Python 版本,請執行
準備兩部相符的 DUT,並分別設定 CTS-V。
前往測試類型的設定章節:
- 如要進行 NFC 測試,請參閱「設定 NFC 測試」。
- 如要進行 Wi-Fi AP 連線測試,請參閱「設定 Wi-Fi AP 連線測試」。
- 如要進行測距準確度測試,請參閱「設定測距準確度測試」。
- 如要測試 CDM 模組,請參閱「設定標準雙裝置測試」和「設定 CDM 測試」。
如果測試不在清單中,請繼續進行設定標準雙裝置測試。
設定 NFC 測試
NFC 測試會使用一個 DUT 和一個 PN532 NFC 晶片。
如要設定 NFC 測試,請按照下列步驟操作:
- 購買 PN532 NFC 晶片。建議使用多合一 PN532。
- 在 DUT 上前往「設定」應用程式。
- 啟用「NFC」。
放置 NFC 晶片:
如果是手機,請如圖 1 所示放置 DUT 的 NFC 讀取器:

圖 1. NFC 晶片位置。
如果是其他裝置類型,請將晶片放在裝置的 NFC 天線旁。
使用 USB 傳輸線將 PN532 NFC 晶片連接至測試工作站。
設定 Wi-Fi AP 連線測試
Wi-Fi 存取點 (AP) 連線測試 (CtsWifiConnectionTests) 會測試 DUT 與 AP 之間的連線。您可以透過下列兩種方式設定這些測試:
- 選項 1:使用為 CTS-V 設定的現有 Wi-Fi 網路。
- 方法 2:設定可程式化的存取點 (AP)。
如果是 Android 17,我們強烈建議使用選項 2,但並非必要。以下兩節將說明每個選項。
選項 1:使用為 CTS-V 設定的現有 Wi-Fi 網路
選項 1 需要一個位於 Wi-Fi 網路涵蓋範圍內的 Android DUT。如果 DUT 位於遮蔽盒中,且無法連線至 Wi-Fi 網路,請將 DUT 從遮蔽盒中取出。
方法 2:設定可程式化的 AP
如要設定可程式化的 AP 進行 Wi-Fi 連線測試,請按照下列步驟操作:
購買並設定 Banana Pi R3 AP。如要瞭解如何購買及設定 Banana Pi R3 AP,請參閱「設定 Banana Pi BPI-R3 AP」。
選用:如果沒有遮蔽盒,建議使用 JTP-SR101 遮蔽盒。請使用下列資訊購買這款機上盒:
東莞正聲電子科技有限公司LTD
中國廣東省東莞市寮步鎮蟠龍路博匯工業園
聯絡人:Forest Pan
電子郵件地址:forest.pan@jtpmak.cn
電話 (中國):+86 18676993556將 DUT 和 AP 連接至主機,然後放入 RF 遮蔽盒。DUT 和 AP 之間應間隔至少 10 公分。圖 2 顯示此設定:

圖 2. 防護盒中的 DUT 和 AP。
使用 SSH 確認主機可以存取 AP。
設定測距準確度測試
如何設定測距準確度測試:
將兩部相符的 Android DUT 放在同一高度,彼此相距 1 公尺,且兩部裝置背面相對,中間沒有任何阻礙。圖 3 顯示這種方向:

圖 3. 裝置螢幕方向。
使用 USB 傳輸線將兩部裝置連接至桌上型電腦。
設定標準雙裝置測試
預設的雙裝置設定:
- 將兩個相符的 Android DUT 放在相距約 20 公分的位置。
強烈建議:將兩部裝置都放入遮蔽盒。遮蔽盒可提升測試穩定性,並讓您更輕鬆地偵錯測試失敗問題。
如要進行電信測試,每個 DUT 都必須有 SIM 卡和行動網路訊號。如果 DUT 位於遮蔽盒中,則必須將蜂巢式訊號耦合至該盒。否則,請將裝置移出遮蔽盒。
選用:設定 OTA 封包嗅探器,進行 Wi-Fi 除錯。
設定 CDM 測試
test_permissions_sync() 測試案例的行為會因執行測試的裝置建構類型而異。OEM 必須同時測試可偵錯 (userdebug 或 eng) 和不可偵錯 (user) 的建構版本,且兩者都必須通過測試。
豁免資格
權限同步 API 實作的 CDD 條款僅要求能夠透過安全管道在裝置之間順利傳輸資料。由於安全管道實作並非 CDD 相容性規定,因此如果選擇不支援 CDM 權限同步功能,即可在無法偵錯 (使用者) 的建構版本中略過這項測試。
測試必須在可偵錯的建構版本中通過,不得有例外狀況。
在無法偵錯的建構版本上測試的必要條件
如未獲得豁免,請確認您符合下列先決條件。
安全管道會使用 AVF (AttestationVerificationFramework) 驗證硬體的可靠性。雙方產生的認證都包含自身的幾項資訊,可驗證系統是否遭到未經授權的變更。AVF 會在驗證程序中檢查下列狀態:
- 裝置可連上網際網路
- 裝置使用已驗證的啟動程序,且建構版本必須以發布金鑰簽署,而非開發人員金鑰
- 裝置已鎖定系統啟動載入程式。如需詳細操作說明,請參閱鎖定系統啟動載入程式。
- OS、主要啟動和主要供應商修補程式層級在 12 個月內。請勿使用超過一年的舊版
- 裝置驗證是由供應商核准的根憑證之一所支援。在
vendor_required_attestation_certificates.xml資源疊加層中指定信任的根憑證。
執行主機端測試
部分多裝置測試 (例如 NFC 測試) 需要額外設定。如果測試需要額外設定,系統會分別執行各項測試。如要執行不需要額外設定的測試,可以將測試分組執行。
在測試工作站上,從解壓縮 CTS-V zip 封裝的目錄啟動
cts-v-host控制台:./android-cts-verifier/android-cts-v-host/tools/cts-v-host-tradefed在 DUT 上的 CTS-V 應用程式中,按一下「Host-side Tests」。 圖 4 顯示 CTS-V 應用程式中的主機端測試:
圖 4. CTS-V 應用程式中的主機端測試。
畫面會顯示測試主機端多裝置測試模組清單。
在 CTS-V 主機控制台中,使用下列指令執行多裝置測試,該測試使用標準雙裝置設定:
run cts-v-host-multidevice-default測試結果會顯示在 DUT 上 CTS-V 應用程式的每個測試模組下方。標示為綠色的測試已通過,標示為紅色的測試則失敗。
圖 5 顯示 CtsCompanionDeviceManager 測試的結果範例:
圖 5. CTS-V 應用程式中的主機端多裝置測試結果。
在 CTS-V 主機控制台中,使用下列指令執行互動式測試:
run cts-v-host-interactive測試結果會顯示在 DUT 上 CTS-V 應用程式的每個測試模組下方。標示為綠色的測試已通過,標示為紅色的測試則失敗。
針對需要額外設定的每項測試,請使用下列指令分別執行測試:
run cts-v-host -m test_module_name舉例來說,如要執行 NFC 測試,請使用下列指令:
run cts-v-host -m CtsNfcHceMultiDeviceTestCases測試結果會顯示在 DUT 上 CTS-V 應用程式的每個測試模組下方。標示為綠色的測試已通過,標示為紅色的測試則失敗。
執行 Wi-Fi AP 連線測試
你可以透過下列兩種方式執行 Wi-Fi AP 連線測試:
- 選項 1:使用為 CTS-V 設定的現有 Wi-Fi 網路。
- 方法 2:設定可程式化的 AP。
選項 1:使用為 CTS-V 設定的現有 Wi-Fi 網路
如要在現有 Wi-Fi 網路上執行 Wi-Fi AP 連線測試,請按照下列步驟操作:
編輯測試平台設定檔 (
WifiConnectionTestbed.yaml)。這個檔案位於 CTS-Verifier 解壓縮的目錄中。例如:./android-cts-verifier/android-cts-v-host/testcases/CtsWifiConnectionTests/x86_64/connection/WifiConnectionTestbed.yaml將
wifi_ssid和wifi_password欄位的值變更為 Wi-Fi 網路的 SSID 和密碼。以下範例顯示這些設定的位置:TestBeds: - Name: WifiConnectionTestbed Controllers: AndroidDevice: '*' TestParams: use_programmable_ap: False wifi_ssid: WIFI-SSID wifi_password: WIFI-PASSWORD在 CTS-V 主機控制台中,執行下列指令:
run cts-v-host -m CtsWifiConnectionTests
方法 2:使用可程式化 AP 執行
如要在可程式化 AP 上執行 Wi-Fi AP 連線測試,請按照下列步驟操作:
編輯測試平台設定檔 (
WifiConnectionTestbed.yaml)。這個檔案位於 CTS-Verifier 解壓縮的目錄中。例如:./android-cts-verifier/android-cts-v-host/testcases/CtsWifiConnectionTests/x86_64/connection/WifiConnectionTestbed.yaml根據本機 SSH 設定,將
hostname的值變更為 AP 的 IP 位址。如要找出 IP 位址,請參閱「找出存取點的 IP 位址」。以下範例顯示hostname設定的位置:TestBeds: - Name: WifiConnectionTestbed Controllers: AndroidDevice: '*' # Specify settings for the AP. OpenWrtDevice: - hostname: AP-IP skip_init_reboot: True TestParams: use_programmable_ap: True在 CTS-V 主機控制台中,執行下列指令:
run cts-v-host -m CtsWifiConnectionTests
執行 USB 主機端測試
Android 17 包含 USB CTS-V 主機端測試,需要透過 Wi-Fi 執行 adb。
部分 USB 測試需要使用 CTS-V 主機存取 SystemAPI,這些 API 具有一般 CTS-V 應用程式無法存取的權限。這些測試不需要連接線,且必須透過 Wi-Fi 使用 adb。
如果 DUT 支援在 UsbPort.java 中回報連接埠合作夥伴 BC 1.2 類型或 USB 電源設定檔,則必須使用下列 Type-C 配件:
- USB Type-C Power Delivery (PD) 充電器
- USB 電池充電 1.2 (BC 1.2) 標準下游連接埠 (SDP)。這些連接埠只能為 DUT 提供 500 mA 或 900 mA,常見於外部集線器的 USB 連接埠。
- USB BC 1.2 充電下游連接埠 (CDP)。這些連接埠可為 DUT 提供 1.5 安培的電流和資料。筆電或電腦上的 Type-C 連接埠很可能就是 CDP。
- USB BC 1.2 專用充電埠 (DCP)。這些連接埠可為 DUT 提供 1.5 安培的電流,但不會傳輸資料。這份清單中的 USB Type-C PD 充電器可能為 DCP。
使用
adb透過 Wi-Fi 連接 DUT。如需設定詳情,請參閱「透過 Wi-Fi 連線至裝置」。從所有 USB 連接埠拔除裝置。如果裝置在執行測試指令時連接任何 USB 主機或配件,測試就會失敗。
執行下列測試指令:
run cts-v-host -m CtsUsbTypecTestCases
測試完成後,結果會顯示在 CTS-V 應用程式的「Host-side tests」(主機端測試) 下方,如下圖所示:
圖 6. CTS-V 應用程式中的主機端 USB 測試。
圖 7. 主機端 USB CTS-V 應用程式中的 CtsUsbTypecTestCases 套件。
排解多裝置測試問題
本節說明如何排解常見問題。
在 CtsTelecomTest 期間無法取得電話號碼
如果收到「Failed to get phone number for <serial>」錯誤訊息,請按照下列步驟操作:
確認每個 DUT 都已安裝 SIM 卡。
如果錯誤仍未解決,可能是因為 SIM 卡不支援自動擷取號碼,因此您必須在指令中明確提供電話號碼。
舉例來說,如果 DUT 1 (序號
17011FDEE0002N,電話號碼555-0000) 和 DUT 2 (序號R3CN90YNAR,電話號碼555-1111),請將下列引數附加至run cts-v-host指令:--module-arg CtsTelecomTest:dut_serial:17011FDEE0002N \ --module-arg CtsTelecomTest:dut_phone_number:555-0000 \ --module-arg CtsTelecomTest:ref_phone_number:555-1111
在 CtsMultiDeviceGenericRangingAccuracyTests 期間,伺服器沒有回應
如果收到下列錯誤訊息,表示測試應用程式可能在特定裝置上凍結或遭終止,這是因為 OEM 專屬的背景程序管理所致:
mobly.snippet.errors.ProtocolError: <AndroidDevice|Initiator> No response from server. Check the device logcat for crashes.
如要解決這個問題,請停用背景限制,或將下列套件加入允許清單:
| 套件 | 顯示名稱 |
|---|---|
com.google.snippet.uwb |
CtsUwbSnippetApp |
com.google.snippet.ranging |
CtsRangingSnippetApp |
com.google.snippet.bluetooth |
CtsBluetoothMultiDeviceSnippetApp |
com.google.android.mobly.snippet.bundled |
androidx.multidex.MultDexApplication |
修正 NFC 測試期間「GetFirmwareVersion」沒有回應的問題
如果在執行多重裝置測試時收到 verify_firmware_version RuntimeError: No response
for GetFirmwareVersion 訊息,表示測試無法存取 PN532 NFC 板。
如要修正這個問題,請找出主機上 PN532 NFC 板使用的序列路徑 (例如 dev/ttyUSB1),然後在控制台中使用 --module-arg 引數手動指定該路徑:
run cts-v-host -m CtsNfcHceMultiDeviceTestCases --module-arg CtsNfcHceMultiDeviceTestCases:pn532_serial_path:/dev/ttyUSB1
修正 NFC 測試期間的「交易失敗」錯誤訊息
如果所有 NFC 測試案例都收到 Transaction failed, check device logs for more
information. 訊息,可能是因為 DUT 的 NFC 晶片無法偵測到 PN532。
如果有多部裝置連線至主機,且部分裝置未放置 PN532,系統可能選取了錯誤的 DUT。詳情請參閱「設定 NFC 測試」。
如要修正這個問題,請採取下列任一做法:
使用
-s標記,在主機端測試指令中設定正確的 DUT 序號。從主機中斷所有非 DUT 裝置的連線。