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 實現區分開來,後者俱有前綴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,您可以創建子類DefaultCtsPrintHelpercom.oem.cts.helpers.OemCtsPrintHelperAndroid.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 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 中的錯誤。