CTS 設備交互助手模塊

對於 Android 11 或更高版本,相容性測試套件 (CTS) 裝置互動式幫助程式模組可讓您自訂某些 CTS 測試與特定裝置上的使用者介面 (UI) 互動的方式。這意味著可以在仍通過 CTS 的同時完成操作,例如取代Android 相容性定義文件 (CDD)或 API 文件未涵蓋的 UI 元素。

想要在產品開發過程中自訂 Android UI 並需要通過 CTS 的 OEM 或許可以實現幫助程式模組。如果您使用預設的 Android 實現,則不需要任何額外的工作。

實施幫助模組

客製化 UI 的要求

檢查 CDD 或 Mainline 模組是否有任何 UI 需求。如果所需的 UI 被 CDD 或 Mainline 模組覆蓋,則無法自訂該 UI。

如果與所需 UI 互動的 CTS 測試不使用幫助程式框架,則無法自訂該 UI。在更改 UI 之前,與測試所有者合作轉換測試模組。

否則,您可以自訂 UI。

實施工作流程

  1. 根據您的特定產品的需求自訂 UI。
  2. 將現有的 AOSP 幫助程式模組指定為需要與 UI 互動的 CTS 測試模組的子類別。為自訂 UI 適當替換必要的互動。替換根據更改的類型而有所不同。
    • OEM 子類別位於 OEM 套件中,例如com.[oem].cts.helpers
    • 每個 OEM 子類別都使用一個公共前綴來命名,該前綴將其與 AOSP 實作區分開來,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. 確保執行 Tradefed for CTS 時 APK 在testcases目錄中可用。如果需要,請透過檢查 logcat 訊息來確認已選擇預期的幫助程式實作類別。
  6. 可選,但強烈建議:將您的幫助器實作提交給 AOSP 或使其可用於第三方測試。

幫助程式實作範例

例如, CtsPrintTestCases需要一個具有ICtsPrintHelper中定義的介面的幫助程式。 AOSP 實作稱為com.android.cts.helpers.aosp.DefaultCtsPrintHelper

如果自訂列印 UI,則可以建立com.oem.cts.helpers.OemCtsPrintHelper作為DefaultCtsPrintHelper子類別。 Android.bp中的android_test_helper_app被命名為com.oem.cts.helpers ,它會產生com.oem.cts.helpers.apk ,並在AndroidManifest.xml中將interaction-helpers-prefix宣告為Oem

設備屬性ro.vendor.cts_interaction_helper_packages設定為com.oem.cts.helpers

參考實現

參考實作包含cts/libs/helpers下的介面和cts/helpers下的預設 AOSP 幫助器。頂級介面記錄在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屬性。這可以防止在該構建上完全使用助手。
  • 在執行 CTS 之前,從testcases目錄中刪除幫助程式 APK。這可以防止在 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 中的錯誤類似地處理。