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 分割功能會將測試案例靜態指派給測試中的裝置 (DUT),如下所示:
- 指令:run cts
- Android 8.1 以下版本的設定: /tools/cts-tradefed/res/config/cts.xml
TF 區塊功能會動態將測試案例指派給可用的 DUT,如下所示:
- 指令:run cts
- Android 9 的設定: /platform/test/suite_harness/+/pie-cts-dev/tools/cts-tradefed/res/config/cts-suite.xml
支援多個 ABI 的裝置應具備哪些功能?
裝置必須針對聲稱支援的每種 ABI 模式,通過所有 CTS 和 CTS Verifier 測試。因此,您必須為特定 ABI 執行應用程式。針對多個 ABI 的規範如下:
- 針對 CTS 和 CTS 驗證工具,每個架構都有 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") 中回報「Module Not Done」:
- 模組的測試執行作業因裝置連線問題而中斷。
- 並未執行模組的所有預期測試。
使用其他篩選選項 (使用
-r/--retry
選項) 重試,例如:- --include-filter
- --exclude-filter
- -t/--test (重試時不支援此選項)
- --retry-type 失敗
- --subplan
如要取得這些模組的 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 媒體檔案或業務邏輯檔案。在許多企業環境中,防火牆和 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 卡」。