Android 兼容性計劃是維持 Android 生態系統積極反饋的關鍵驅動力。 CTS是保證量表兼容質量的關鍵工具。 Android 團隊不斷完善 CTS 工具和測試覆蓋率。定期添加測試用例對兼容設備的質量有顯著提升。
本文提供常見問題解答以更有效地運行 CTS 測試。
CTS Sharding 和 TF Sharding 有什麼區別?
CTS Sharding 和 TF Sharding 是完全不同的測試計劃,由不同的測試基礎設施代碼庫提供支持。雖然不同版本的運行命令相同,但分片結果的行為不同。 CTS Sharding 將測試用例靜態分配給被測設備 (DUT),如下所示:
- 命令:運行cts
- Android 8.1 及更低版本的配置: /tools/cts-tradefed/res/config/cts.xml
TF Sharding 動態地將測試用例分配給可用的 DUT,如下所示:
- 命令:運行cts
- Android 9 的配置:/platform/test/suite_harness/+/pie-cts-dev/tools/cts-tradefed/res/config/ cts-suite.xml
支持多個 ABI 的設備有什麼期望?
設備必須通過它聲稱支持的每種 ABI 模式的所有 CTS/驗證程序。因此,有必要為特定的 ABI 執行應用程序。多個 ABI 的指南如下:
- 對於 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 之間是不同的。如果你跳過一種模式,你只覆蓋了 50% 的設備 ABI。
為什麼有這麼多測試用例報告為未執行?
您應該檢查Module Done編號而不是Not Executed編號。
在舊版本中,CTS 模塊在完成之前被報告為Module Done過於激進。因此,即使某些設備出現問題,也沒有完成所有測試用例就報告了Modules Done編號。新的測試工具更加保守,並在出現問題時報告更多的未執行測試。
模塊運行到完成在報告中的最近調用中報告模塊未完成(done="false") 在以下期間:
- 模塊的測試運行因設備連接問題而中斷。
- 並未執行該模塊的所有預期測試運行。
使用其他過濾選項重試(使用選項
-r/--retry
),例如:- --include-filter
- --排除過濾器
- -t/--test(重試時尚不支持該選項)
- --重試類型失敗
- --子計劃
要獲得這些模塊的Module Done (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 個測試)執行的模塊在新報告中被標記為Module Done 。
例外
- 由於 linux/OS 對 args 的限制,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 通過。 - 如果您的設備確實需要支持訪問安全元素的 Android 應用程序——無論是在移動網絡運營商(運營商)分發的UICC (例如 SIM 卡)中還是嵌入在設備中——您需要正確實施安全元素並對其進行測試內部。安全元素的 CTS 測試概述瞭如何準備運行 CTS 測試以確保 Android 9 中添加的android.se.omapi API 包正常運行。我們還建議您自行執行其他測試,因為 CTS 測試覆蓋率極低。
我在哪裡可以獲得 CTS for Secure Element 的 SIM 卡?
您可以聯繫您首選的 SIM 供應商。
為什麼在使用令牌分片的 CTS 執行期間,Orange SIM 在鎖定屏幕上?
測試用例沒有啟動,因為測試 SIM 卡被鎖定。在使用令牌分片執行 CTS 之前,禁用“SIM 卡鎖定設置”中的“鎖定 SIM 卡”選項。