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 模組在完成前以過於積極的方式回報為模組完成。因此,即使部分裝置發生問題,系統仍會回報 Modules Done 數字,而非所有測試案例都已完成。新的測試套件會採取較保守的做法,在發生問題時回報的「未執行」測試數量會較多。
模組執行至完成時,在下列情況下,報表會在最近一次叫用 (done="false") 中回報「Module Not Done」:
- 模組的測試執行作業因裝置連線問題而中斷。
- 並未執行模組的所有預期測試。
使用其他篩選選項 (使用
-r/--retry
選項) 重試,例如:- --include-filter
- --exclude-filter
- -t/--test (重試時不支援此選項)
- --retry-type 失敗
- --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),新報表中會標示「Module Done」。
例外狀況
- 由於 Linux/OS 對引數的限制,CtsNNAPITestCases 有已知問題。您可以直接透過
run cts -m CtsNNAPITestCases
重新執行模組。
如何避免在公司防火牆後方準備測驗時失敗?
所有自動化測試套件都會在執行階段嘗試下載 CTS 媒體檔案或業務邏輯檔案。在許多企業環境中,防火牆和 Proxy 是常見的情況,這會導致測試準備作業失敗。執行下列指令行或將其新增至 .profile (在 Ubuntu 上)。
export JAVA_TOOL_OPTIONS='-Djava.net.useSystemProxies=true'
我需要有 SIM 卡才能使用安全元件嗎?
測試是否需要 SIM 卡取決於測試裝置是否支援該功能。
- 如果裝置「不需要」支援存取安全元素的 Android 應用程式 (無論是位於 UICC 中 (電信業者) 或內嵌於裝置中的安全元素),您可以設定 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 進行權杖資料分割時,螢幕鎖定畫面上的橘色 SIM 卡會?
測試 SIM 卡時,系統會因 SIM 卡已鎖定而無法啟動測試案例。在執行具備符記分割功能的 CTS 之前,請先停用 **SIM 卡鎖定設定中的「鎖定 SIM 卡」。