CTS 裝置互動輔助模組

針對 Android 11 以上版本,相容性測試套件 (CTS) 裝置互動輔助模組可讓您自訂特定 CTS 測試如何與特定裝置上的使用者介面 (UI) 互動。也就是說,您可以執行某些動作 (例如替換 Android 相容性定義說明文件 (CDD) 或 API 文件未涵蓋的 UI 元素),同時仍能通過 CTS。

如果原始設備製造商 (OEM) 想在產品開發期間自訂 Android UI,並需要通過 CTS,則可實作輔助模組。如果您使用預設的 Android 導入方式,則無需進行額外操作。

實作輔助模組

自訂 UI 的相關規定

請檢查 CDD 或 Mainline 模組是否有任何 UI 需求。如果所需 UI 位於 CDD 或 Mainline 模組中,您就無法自訂該 UI。

如果與所需 UI 互動的 CTS 測試未使用輔助程式架構,則無法自訂該 UI。請與測試擁有者合作,在變更 UI 前轉換測試模組。

或者,您也可以自訂使用者介面。

導入工作流程

  1. 視需要自訂特定產品的使用者介面。
  2. 將現有的 AOSP 輔助模組指定為 CTS 測試模組的子類別,以便與 UI 互動。視需要適當取代自訂 UI 的必要互動。取代內容會因變更類型而異。
    • 原始設備製造商 (OEM) 子類別位於 OEM 套件中,例如 com.[oem].cts.helpers
    • 每個 OEM 子類別都會以通用前置字串命名,以便與 AOSP 實作 (前置字串為 Default) 區分。
  3. 按照這些測試執行器慣例,將輔助程式建構為 APK。
    • Android.bp 應宣告 android_test_helper_app,其名稱與所含套件相同。
    • APK 的 AndroidManifest.xml 必須宣告名為 interaction-helpers-prefix 的中繼資料屬性,並使用先前項目符號中所選的類別前置字元的值。
    • 應用程式應依賴 cts-helpers-corects-helpers-interfacescom.android.cts.helpers.aosp。如果原始設備製造商 (OEM) 輔助程式完全導入所有相關介面,則可選用 com.android.cts.helpers.aosp
  4. 在裝置映像檔中設定 ro.vendor.cts_interaction_helper_packages 屬性,加入 APK 名稱。如果您需要在多個 APK 中分隔輔助程式實作項目,這個屬性可以包含以冒號分隔的套件清單。
  5. 執行 CTS 的 Tradefed 時,請確認 APK 可在 testcases 目錄中使用。如有需要,請檢查 Logcat 訊息,確認系統是否已選擇預期的輔助程式實作類別。
  6. 選用,但強烈建議:將輔助程式實作項目提交至 AOSP,或提供給第三方測試。

輔助程式實作範例

舉例來說,CtsPrintTestCases 會預期輔助程式具有 ICtsPrintHelper 中定義的介面。Android 開放原始碼計畫實作項目稱為 com.android.cts.helpers.aosp.DefaultCtsPrintHelper

如果您自訂列印 UI,可以建立將 DefaultCtsPrintHelper 設為子類別的 com.oem.cts.helpers.OemCtsPrintHelperAndroid.bp 中的 android_test_helper_app 名為 com.oem.cts.helpers,會產生 com.oem.cts.helpers.apk,並在 AndroidManifest.xml 中宣告 interaction-helpers-prefixOem

裝置屬性 ro.vendor.cts_interaction_helper_packages 已設為 com.oem.cts.helpers

參考實作

參考實作項目包括 cts/libs/helpers 下的介面,以及 cts/helpers 下的預設 Android 開放原始碼計畫輔助程式。頂層介面已在 cts/libs/helpers/core/src/com/android/cts/helpers/ICtsDeviceInteractionHelper.java 中記錄。

如要將 CTS 測試連結至其輔助程式,測試擁有者可以使用 cts/libs/helpers/core/src/com/android/cts/helpers/DeviceInteractionHelperRule.java 中記錄的 @Rule 定義。

每個使用此架構的 CTS 模組,以及預期的輔助行為,都會在 cts/libs/helpers/core/src/com/android/cts/helpers 下定義的介面中記錄。

執行 CTS 測試

不使用輔助程式進行測試

除了一個屬性外,裝置在執行階段時並未提供不使用輔助程式進行測試的選項,但可視需要修改 CTS 測試與裝置互動的情形。如果您需要在沒有輔助實作項目的情況下執行 CTS,可以選擇下列兩種做法:

  • 從裝置中移除 ro.vendor.cts_interaction_helper_packages 屬性。這可避免輔助程式完全用於該版本。
  • 請先從 testcases 目錄中移除輔助 APK,再執行 CTS。這樣一來,在 APK 還原為 testcases 之前,任何執行作業都不會使用輔助程式。

您可以使用 Tradefed 引數和 ro.vendor.cts_interaction_helper_packages 屬性控制項 (輔助 APK 的載入位置) 變更預設設定。

如要查看各可用設定的預期值或範圍,請參閱以下說明。

  • ro.vendor.cts_interaction_helper_packages 是包含套件名稱的字串,以冒號分隔。這個值可以是 OEM 輔助程式實作項目的有效套件選項。
  • cts-tradefed 會接受 device-interaction-helper:property-name 引數,該引數會暫時變更一次測試執行作業的預期屬性,例如 --module-arg 'CtsPrintTestCases:{device-interaction-helper}property-name:debug.cts.hlp'。屬性名稱的值可以是您在裝置上設定的任何屬性。屬性的值必須遵守上述 ro.vendor.cts_interaction_helper_packages 屬性的限制。

使用自訂項目進行測試

根據預設,參考實作項目會在原生 Android 上通過 CTS。請檢查合作夥伴實作方式是否通過 UI 自訂項目的 CTS。執行任何涵蓋您自訂 UI 或功能的 CTS 模組。

某些 CTS 模組或輔助程式可能尚不支援部分自訂項目。

  • 與您要自訂的 UI 互動的 CTS 模組可能不會使用輔助程式架構。CTS 模組應根據需求和測試擁有者的優先順序,轉換為輔助架構。請在程序初期提出轉換要求,確保轉換作業能按時完成,這與要求 CTS 變更以支援您計畫中的功能類似。
  • 現有輔助程式提供的函式可能無法完全處理您要自訂的函式。輔助函式應將 UI 依附元件抽象化。如果輔助函式間接具有 UI 依附元件,這可視為與 CTS 中的錯誤類似。