CTS 常見問題

Android 相容性計畫是維持 Android 生態系統正面評價的關鍵。CTS 是確保相容性品質的關鍵工具。Android 團隊會持續改良 CTS 工具和測試涵蓋範圍。定期新增測試案例可大幅提升相容裝置的品質。

一般問題

本節提供一般 CTS 常見問題。

CTS 會測試哪些項目?

CTS 測試會檢查所有支援的 Android 強型別 API 是否存在,以及行為是否正確。CTS 也會測試其他非 API 系統行為,例如應用程式生命週期和效能。

如何取得 CTS 授權?

CTS 採用與大部分 Android 相同的 Apache 軟體授權 2.0。

編解碼器是否通過 CTS 驗證?

可以。CTS 會驗證所有必要轉碼器。

測驗相關問題

本節提供常見問題,協助您更有效率地執行 CTS 測試。

CTS 分片和 TF 分片有何不同?

CTS 分片和 TF 分片是完全不同的測試計畫,採用不同的測試基礎架構程式碼庫。雖然不同版本的執行指令相同,但分片結果的行為不同。CTS Sharding 會將測試案例靜態指派給受測裝置 (DUT),方式如下:

TF Sharding 會動態將測試案例指派給可用的 DUT,方式如下:

支援多個 ABI 的裝置應具備哪些功能?

裝置必須通過所有 CTS 和 CTS 驗證器測試,才能聲稱支援各個 ABI 模式。因此,您必須為特定 ABI 執行應用程式。多個 ABI 的規範如下:

  • 對於 CTS 和 CTS Verifier,每個架構都有 ARM 和 x86 版本。每個都可以支援 32 位元或 64 位元模式。
  • 如果是 CTS 測試,裝置必須支援 ARM 和 x86,且必須分別執行並通過 ARM 和 x86 CTS 測試。

請參閱 CDD 3.3.1。應用程式二進位檔介面,瞭解 ABI 的 CDD 需求。

只在主要 ABI (例如 64 位元) 上執行測試,是否足以縮短測試執行時間?

。Android 應用程式會使用自己的 32 位元或 64 位元執行階段。 32 位元和 64 位元之間的實際機器碼、程式碼路徑和狀態都不同。如果略過其中一種模式,您只會涵蓋裝置 ABI 的 50%。

為什麼有這麼多測試案例回報為「未執行」?

請檢查「已完成的模組」數量,而非「未執行」數量。

在舊版中,CTS 模組完成前會過於積極地回報為「模組完成」。因此,即使部分裝置發生問題,系統仍會回報「完成的模組」數量,且未完成所有測試案例。新版測試架構較為保守,發生問題時會回報更多「未執行」測試。

模組執行完畢後,報表會在下列情況中,於最近一次的呼叫 (done="false") 中回報「Module Not Done」(模組未完成)

  • 裝置連線問題導致模組測試中斷。
  • 並未對模組執行所有預期測試。
  • 使用其他篩選選項 (使用選項 -r/--retry) 重新嘗試,例如:

    • --include-filter
    • --exclude-filter
    • -t/--test (重試時尚未支援此選項)
    • --retry-type failed
    • --subplan

如要取得這些模組的「模組完成」狀態 (done="true"),請針對最近的呼叫重試下列項目:

run retry --retry <session_id> for Android 9 and later versions
run cts --retry <session_id> for Android 8.1 and previous versions

如果執行模組時未發生上述任何問題 (即使剩餘測試次數為 0),新版報告會將該模組標示為「模組完成」

例外狀況

  • 由於 args 的 Linux/OS 限制,CtsNNAPITestCases 有已知問題。您可以透過 run cts -m CtsNNAPITestCases 直接重新執行模組,且不會影響其他模組。

如何避免測試準備工作在公司防火牆後方失敗?

所有自動化測試套件都會在執行階段嘗試下載 CTS 媒體檔案或業務邏輯檔案。在許多公司環境中,防火牆和 Proxy 是很常見的配置,這會導致測試準備失敗。執行下列指令行,或將其新增至 .profile (Ubuntu)。

export JAVA_TOOL_OPTIONS='-Djava.net.useSystemProxies=true'

我是否需要 SIM 卡才能執行 CTS for Secure Element?

測試是否需要 SIM 卡,取決於測試裝置是否支援該功能。

  • 如果裝置不需要支援 Android 應用程式存取安全元素 (無論是行動網路業者 (電信業者) 分發的 UICC (例如 SIM 卡),還是內建於裝置中),您可以設定 HIDL 資訊清單,不納入 android.hardware.secure_element HAL 元素。在這種情況下,android.se.omapi.SEService.getReaders() API 會回報空白清單,而 CTS 測試會自動通過,並回報 CTS 通過。
  • 如果裝置需要支援 Android 應用程式存取安全元件 (位於行動網路業者 (電信業者) 分發的 UICC (例如 SIM 卡) 或內建於裝置中),您必須正確實作安全元件,並在內部進行測試。安全元件的 CTS 測試:說明如何準備執行 CTS 測試,確保 Android 9 中新增的 android.se.omapi API 套件可正常運作。此外,由於 CTS 測試涵蓋範圍有限,我們建議您自行執行額外測試。

哪裡可以取得安全元件 CTS 測試用的 SIM 卡?

你可以聯絡偏好的 SIM 卡供應商。

使用權杖分片執行 CTS 時,為什麼鎖定畫面上會顯示 Orange SIM 卡?

測試案例不會啟動,因為測試 SIM 卡已鎖定。 在執行 CTS (含權杖分片) 前,請先在「SIM 卡鎖定設定」中停用「鎖定 SIM 卡」