設定 CTS 自動化測試

執行自動化 CTS 測試前,請先準備實體環境、設定工作站,並設定要測試的裝置。

設定實體環境

某些 CTS 測試需要在 DUT 附近使用外部裝置。如要設定實體環境,請按照下列步驟操作:

  1. (選用) 如果測試裝置支援藍牙 LE,請在測試裝置的 5 公尺範圍內放置至少三個藍牙 LE 訊號,以進行藍牙 LE 掃描測試。其他規範事項如下:

    • 您不需要設定或發出任何特定內容。
    • 信標可以是任何類型,包括 iBeacon、Eddystone,甚至是模擬 BLE 信標的裝置。
  2. 將手機放在場景前方 (例如牆壁或天花板),距離等同於 DUT 的最低對焦距離。其他規範事項如下:

    • 場景必須有足夠的光線,讓測試中的感應器達到並維持 CONTROL_AE_TARGET_FPS_RANGE 中指定的每秒影格數 (FPS) 上限。
    • 這項設定會套用至 getCameraIdList 回報的所有攝影機感應器,因為測試會重複執行列出的裝置,並個別評估效能。
    • 如果 DUT 支援外接鏡頭 (例如 USB 網路攝影機),請在執行 CTS 時插入外接鏡頭。否則 CTS 測試會失敗。
  3. (選用) 如果待測物件支援全球定位系統 (GPS) 或其他全球衛星導航系統 (GNSS),請以適當的訊號強度向待測物件提供 GNSS 訊號,以便接收訊號及計算位置。其他規範事項如下:

    • GPS 必須符合 ICD-GPS-200C 規範。
    • GNSS 信號可以是任何類型,包括衛星模擬器或室外信號中繼器。
    • 您可以將 DUT 放在靠近窗戶的位置,讓 DUT 能直接接收足夠的 GNSS 衛星訊號。
  4. 請確認 Wi-Fi 網路支援 IPv4 和 IPv6、具有支援 IPv4 和 IPv6 的 DNS 的網際網路連線、支援 IP 多點傳送,且可將 DUT 視為隔離的用戶端

    如果您無法存取原生 IPv6 網路、IPv6 電信業者網路或 VPN,以便通過 IPv6 測試,請使用 Wi-Fi 存取點和 IPv6 通道。

  5. 確認 DUT 已在 Wi-Fi 介面上設定 UPBROADCASTMULTICAST 旗標。

  6. 確認 Wi-Fi 介面已指派 IPv4 和 IPv6 位址。如要檢查 Wi-Fi 介面屬性,請執行 adb shell ifconfig

  7. (選用) 如果 DUT 支援 Wi-Fi STA 或 STA 並行,請至少設定兩個 Wi-Fi 網路。這些 Wi-Fi 網路必須在不同頻帶和不同 SSID 上執行,或是在相同 SSID 和不同 BSSID 上執行。

  8. (選用) 如果測試裝置支援 Wi-Fi 封包往返時間 (RTT),請設定支援 Wi-Fi RTT 的裝置:

    1. 將 Wi-Fi RTT 裝置放在 DUT 的 40 英尺範圍內。
    2. 開啟 Wi-Fi RTT 裝置。

    以下是兩款支援 Wi-Fi RTT 的建議裝置: - Google Wifi - Compulab 的 fitlet2 存取點 (將頻寬設為 5 GHz 的 40 MHz)。

設定桌上型電腦

執行 CTS 自動化測試前,請確認您的電腦符合硬體和作業系統需求,並安裝適當的軟體,如以下各節所述。

符合硬體需求

CTS 電腦應符合下列硬體需求,或達到更高規格:

  • 64 位元 x86 系統

  • 至少 256 GB 的可用磁碟空間,以便因應 CTS 測試案例數量增加,以及 Tradefed 中 Java 堆積空間預留量增加

  • 至少 32 GB RAM

符合作業系統需求

開發機器必須執行 64 位元 Linux 發行版,並搭載 GNU C 程式庫 (glibc) 2.17 以上版本。

安裝電腦版軟體

如要安裝適合 CTS 的電腦版軟體,請按照下列步驟操作:

  1. 安裝 FFmpeg 5.1.3 以上版本的套件。

  2. 請安裝最新版的 Android Debug Bridge (adb)Android Asset Packaging Tool (AAPT2),並將這些工具的位置新增至電腦的系統路徑:

    1. 請按照 SDK Manager 說明文件開頭的操作說明安裝 sdkmanager 指令列工具。下載指令列工具的連結位於 Android Studio 下載頁面底部的「僅限指令列工具」部分。
    2. 更新系統路徑,加入新安裝的 sdkmanager 位置。
    3. 使用 sdkmanager 安裝最新的 platform-toolsbuild-tools 套件。這些套件包含 ADB 和 AAPT2。如要進一步瞭解如何安裝套件,請參閱「安裝套件」。
    4. 更新路徑,納入新安裝的 ADB 和 AAPT2 工具的位置。
    5. 確認 adb 和 AAPT2 位於路徑中。
  3. 安裝適當版本的 Java Development Kit (JDK)

  4. (選用) 如果是 Android 13 以上版本,請安裝 virtualenv。如要進行多裝置測試,就必須使用 virtualenv 工具。

  5. 如要確認已安裝 Python,請輸入 python3。畫面上應會顯示 Python 版本和日期,表示 Python 已正確安裝。

  6. Compatibility Test Suite 下載項目下載並開啟符合裝置 Android 版本和裝置支援的所有應用程式二進位介面 (ABI) 的 CTS 套件。

  7. 下載並開啟最新版本的 CTS 媒體檔案。媒體檔案包含 Big Buck Bunny 的影片片段,該片段受版權保護,版權所有人為 Blender Foundation,並依據 Creative Commons Attribution 3.0 授權條款授權使用。

  8. (選用) 首次執行 CTS 時,系統會動態下載一些 Mainline 相關的 CTS 檔案。視網路速度而定,這項下載作業會讓 CTS 執行時間延長 10 分鐘以上。

    為避免這項額外的 CTS 執行時間,您可以在執行 CTS 前下載 Mainline 相關的 CTS 檔案。如要瞭解如何下載 Mainline 相關 CTS 檔案,請參閱「下載 Mainline 相關 CTS 檔案」。

準備 DUT

設定桌上型電腦後,您必須設定及調整 DUT。

設定 DUT

如何設定 DUT:

  1. 請確認 DUT 是根據代號、標記和版本號碼中已知相容的使用者版本 (Android 4.0 以上版本) 執行系統映像檔,並使用 user 變化版本。如要進一步瞭解建構變化版本,請參閱「選擇目標」。

  2. 如果 DUT 搭載 Android 13 以上版本,請確認該版本的 ro.product.first_api_level 已設為裝置在商業上推出時所採用的 API 級別。如要設定這個值,請對 device.mk 檔案進行下列變更:

    PRODUCT_SHIPPING_API_LEVEL := 21
    

    某些 CTS 規定取決於裝置最初出貨時所附帶的版本。舉例來說,如果裝置原本隨附較早的版本,可能就不會納入系統規定的範圍,因為該規定適用於隨後版本的裝置。如需有效的 API 級別值,請參閱「產品代號、標記和版本號碼」一文。如要進一步瞭解 ro.product.first_api_level,請參閱「供應商 API 級別」。

    如為 Android 10 以下版本,請參閱「設定 CTS (Android 開放原始碼計畫 10 以下版本)」一文。

  3. 如果裝置支援 APEX 套件管理功能:

    1. 下載適用於特定 Android 版本和硬體架構的 APEX 墊片套件。「shim packages」表格左側的兩個欄提供套件的下載連結。
    2. 將下載的套件複製到 /system/apex
    3. 將檔案重新命名為 com.android.apex.cts.shim.apex
  4. 如果裝置不支援 APEX 套件管理功能:

    1. 下載適用於特定 Android 版本和硬體架構的 APEX 墊片套件。「shim packages」表格中的右側兩欄提供套件的下載連結。
    2. CtsShim.apk 複製到 /system/app/
    3. CtsShim.apk 重新命名為 CtsShimPrebuilt.apk
    4. CtsShimPriv.apk 複製到 /system/priv-app/
    5. CtsShimPriv.apk 重新命名為 CtsShimPrivPrebuilt.apk
  5. 如果裝置回報多個安全元素:

    1. 下載 google-cardlet.cap
    2. 將下載的檔案複製到 /data/uicc/cardlets/
  6. 如果裝置回報多個安全元素,請將範例小程式安裝在 DUT 的嵌入式安全元素 (eSE) 或 DUT 使用的 SIM 卡中。詳情請參閱「安全元件的 CTS 測試」。

  7. 如果裝置沒有內建螢幕,請將螢幕連接至裝置。

  8. 如果裝置有記憶卡插槽,請插入空白的 SD 卡。請使用支援超高速 (UHS) 匯流量的 SD 卡 (SDHC 或 SDXC 容量),或是速度等級 10 以上的卡片,確保可以通過 CTS。

  9. 如果裝置有 SIM 卡插槽,請將已啟用的 SIM 卡插入每個插槽。如果裝置支援 SMS,則每張 SIM 卡都必須填入專屬的電話號碼欄位。搭載 Android 12 以上版本的裝置,所有 SIM 卡都必須支援儲存縮寫撥號 (ADN)。含有電信專用檔案 (DFTelecom) 的 GSM 和 USIM 卡片符合這項規定。

  10. 請確認裝置的 SIM 卡具有符合「準備 UICC」一文所述規定的 CTS 電信業者權限。

設定 DUT

請按照下列步驟設定 DUT,以便與 CTS 搭配使用。

在 DUT 上:

  1. 將裝置恢復原廠設定。

  2. 將裝置語言設為英文 (美國)

  3. 如果裝置支援自訂預設字型,請確認預設的 sans-serif 字型系列已設為 Roboto

  4. 如果裝置上有 GPS、Wi-Fi 或行動網路功能,請啟用位置設定。

  5. 連線至支援 IPv6 的 Wi-Fi 網路,可將 DUT 視為隔離的用戶端,並具有網際網路連線。如要瞭解隔離的用戶端,請參閱「設定實體環境」。

  6. 確認未設定解鎖圖案或密碼。

  7. 啟用 USB 偵錯功能:

    1. 依序前往「設定」>「關於手機」,然後輕觸「版本號碼」七次。「開發人員選項」會顯示在「系統」設定類別中。

    2. 輕觸「USB 偵錯」

    如要在 Android 10 以下版本啟用 USB 偵錯功能,請參閱「設定 CTS (AOSP 10 以下版本)」。

  8. 將時間設為 12 小時制。

  9. 啟用「開發人員選項」>「保持喚醒」

  10. 停用 USB 應用程式驗證功能:

    1. 前往「開發人員選項」

    2. 輕觸「透過 USB 驗證應用程式」

  11. 在 Android 13 以上版本中,啟用模擬數據機:

    1. 前往「開發人員選項」

    2. 輕觸「允許模擬數據機」

    這項設定適用於特定的電話測試。

在電腦上:

  1. 啟動瀏覽器,並關閉任何啟動或設定畫面。

  2. 使用 USB 傳輸線將 DUT 連接至桌上型電腦。

  3. 如果系統提示您接受 RSA 金鑰,以便透過這部電腦進行偵錯,請按一下「允許 USB 偵錯」

  4. 使用可供使用者存取的提示 (非隱藏) 設定,將 Roboto2 設為無襯線字型。

  5. 將 CTS 媒體檔案複製到 DUT:

    1. 前往 (cd) 下載媒體檔案並解壓縮的路徑。
    2. 變更檔案權限:

      chmod u+x copy_media.sh
      
    3. 複製檔案:

      • 如要複製解析度為 720x480 的短片,請執行以下命令:

        ./copy_media.sh 720x480
      • 如果不確定最大解析度,請複製所有檔案:

        ./copy_media.sh all
      • 如果有多個 DUT,請在結尾新增特定裝置的序列選項 (-s)。舉例來說,如要將解析度最高為 720x480 的內容複製到序號為 1234567 的裝置,請執行以下指令:

        ./copy_media.sh 720x480 -s 1234567

下載 Mainline 相關 CTS 檔案

如要下載 Mainline 相關的 CTS 檔案,請按照下列步驟操作:

  1. 如要取得裝置上的 Android API 級別,請執行以下命令:

    adb shell getprop ro.build.version.sdk
    
  2. 按照 download_mcts.sh 指令碼中的操作說明,下載 Mainline CTS 檔案。

    下載作業至少需要 10 分鐘,視網路速度而定。

遮罩套件

下表列出各個裝置版本和架構可用的套件:

裝置版本 套件 (如果 APEX 支援) 套件 (如果不支援 APEX)
ARM x86 ARM x86
Android 15 15-arm-release android15-x86-release android15-arm-CtsShim.apk

android15-arm-CtsShimPriv.apk

android15-x86-CtsShim.apk

android15-x86-CtsShimPriv.apk

Android 14 android14-arm-release android14-x86-release android14-arm-CtsShim.apk

android14-arm-CtsShimPriv.apk

android14-x86-CtsShim.apk

android14-x86-CtsShimPriv.apk

Android 13 android13-arm-release android13-x86-release android13-arm-CtsShim.apk

android13-arm-CtsShimPriv.apk

android13-x86-CtsShim.apk

android13-x86-CtsShimPriv.apk

Android 12 android12-arm-release android12-x86-release android12-arm-CtsShim.apk

android12-arm-CtsShimPriv.apk

android12-x86-CtsShim.apk

android12-x86-CtsShimPriv.apk

Android 11 android11-arm-release android11-x86-release android11-arm-CtsShim.apk

android11-arm-CtsShimPriv.apk

android11-x86-CtsShim.apk

android11-x86-CtsShimPriv.apk

Android 10 android10-release android10-arm-CtsShim.apk

android10-arm-CtsShimPriv.apk

android10-x86-CtsShim.apk

android10-x86-CtsShimPriv.apk

Android 9、O 和 O-MR1 arm-CtsShim.apk

arm-CtsShimPriv.apk

x86-CtsShim.apk

x86-CtsShimPriv.apk

後續步驟

閱讀完這份文件後,請繼續執行自動化 CTS 測試