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 Sharding 和 TF Sharding 是完全不同的測試計劃,由不同的測試基礎設施程式碼庫提供支援。雖然不同版本的運行命令相同,但分片結果的行為有所不同。 CTS Sharding 將測試案例靜態分配給被測設備 (DUT),如下所示:

TF Sharding 將測試案例動態分配給可用的 DUT,如下所示:

  • 命令:運行cts
  • Android 9 的設定: /platform/test/ suite_harness/+/pie-cts-dev/tools/cts-tradefed/res/config/cts-suite.xml

對支援多個 ABI 的設備有何期望?

該設備必須通過其聲稱支援的每種 ABI 模式的所有 CTS 和 CTS 驗證程序測試。因此,有必要針對特定 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"):

  • 此模組的測試運行因設備連接問題而中斷。
  • 並未執行該模組的所有預期測試運行。
  • 使用附加過濾選項重試(使用選項-r/--retry ),例如:

    • --包括過濾器
    • --排除過濾器
    • -t/--test(重試尚不支援選項)
    • --重試類型失敗
    • --子計劃

若要取得這些模組的「模組完成」 (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 媒體檔案或業務邏輯檔案。在許多企業環境中,防火牆和代理商是典型的,這使得測試準備失敗。執行以下行或將其新增至 .profile(在 Ubuntu 上)。

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

CTS for Secure Element 是否需要 SIM 卡?

測試是否需要SIM卡取決於測試設備是否支援該功能。

  • 如果您的裝置不需要支援存取安全元素的 Android 應用程式(無論是在行動網路營運商(電信業者)分發的UICC (例如SIM 卡)中還是嵌入在裝置中),您可以將HIDL 清單配置為不包含android.hardware.secure_element HAL 元素。在這種情況下, android.se.omapi.SEService.getReaders() API 報告空列表,CTS 測試自動通過並報告 CTS 通過。
  • 如果您的裝置確實需要支援存取任一安全元件(無論是在行動網路營運商(電信業者)分發的UICC (例如SIM 卡)中還是嵌入在裝置中)的Android 應用程序,您需要正確實施安全元件並對其進行測試內部。安全元素的 CTS 測試概述如何準備執行 CTS 測試,以確保 Android 9 中新增的android.se.omapi API 套件正常運作。我們也建議您自行執行其他測試,因為 CTS 測試覆蓋率很小。

在哪裡可以獲得 CTS for Secure Element 的 SIM 卡?

您可以聯絡您首選的 SIM 供應商。

為什麼Orange SIM在使用令牌分片執行CTS期間會出現在鎖定畫面狀態?

測試用例未啟動,因為測試 SIM 卡已鎖定。在執行帶有令牌分片的 CTS 之前,請在 **SIM 卡鎖定設定中停用鎖定 SIM 卡