Modulo di assistenza per l'interazione con i dispositivi CTS

Per Android 11 o versioni successive, i moduli helper di interazione con il dispositivo Compatibility Test Suite (CTS) ti consentono di personalizzare il modo in cui determinati test CTS interagiscono con l'interfaccia utente (UI) su un dispositivo specifico. Ciò significa che le azioni, come la sostituzione di un elemento UI non coperto dal Compatibility Definition Document (CDD) di Android o dalla documentazione API, possono essere eseguite superando comunque il test CTS.

Gli OEM che vogliono personalizzare l'interfaccia utente Android durante lo sviluppo del prodotto e devono superare il test CTS potrebbero essere in grado di implementare moduli helper. Se utilizzi l'implementazione Android predefinita, non sono necessarie ulteriori azioni.

Implementazione di moduli di supporto

Requisiti per personalizzare l'interfaccia utente

Controlla i moduli CDD o Mainline per eventuali requisiti dell'interfaccia utente. Se la UI desiderata è coperta dai moduli CDD o Mainline, non può essere personalizzata.

Se i test CTS che interagiscono con la UI desiderata non utilizzano il framework helper, la UI non può essere personalizzata. Collabora con il proprietario del test per convertire il modulo di test prima che l'interfaccia utente possa essere modificata.

In caso contrario, puoi personalizzare l'interfaccia utente.

Flusso di lavoro di implementazione

  1. Personalizza la UI in base alle esigenze del tuo prodotto specifico.
  2. Designa i moduli helper AOSP esistenti come sottoclassi per i moduli di test CTS che devono interagire con la UI. Sostituisci le interazioni necessarie in modo appropriato per l'interfaccia utente personalizzata. Le sostituzioni variano in base al tipo di modifiche.
    • Le sottoclassi OEM si trovano in un pacchetto OEM, ad esempio com.[oem].cts.helpers.
    • Ogni sottoclasse OEM ha un prefisso comune che la distingue dall'implementazione AOSP, che ha il prefisso Default.
  3. Crea gli helper in un APK seguendo queste convenzioni del test runner.
    • Android.bp deve dichiarare android_test_helper_app con lo stesso nome del pacchetto contenuto.
    • AndroidManifest.xml per l'APK deve dichiarare una proprietà di metadati denominata interaction-helpers-prefix con il valore del prefisso della classe scelto nel punto elenco precedente.
    • L'app deve dipendere da cts-helpers-core, cts-helpers-interfaces e com.android.cts.helpers.aosp. Se gli helper OEM implementano completamente tutte le interfacce pertinenti, com.android.cts.helpers.aosp è facoltativo.
  4. Imposta la proprietà ro.vendor.cts_interaction_helper_packages nell'immagine del dispositivo in modo da includere il nome dell'APK. Se devi separare le implementazioni dell'helper in più APK, questa proprietà può contenere un elenco di pacchetti separati da due punti.
  5. Assicurati che l'APK sia disponibile nella directory testcases quando esegui Tradefed per CTS. Se necessario, verifica che la classe di implementazione dell'helper prevista sia scelta esaminando i messaggi logcat.
  6. Facoltativo, ma vivamente consigliato: invia l'implementazione dell'helper ad AOSP o rendila disponibile per i test di terze parti.

Esempio di implementazione dell'helper

Ad esempio, CtsPrintTestCases prevede un helper con l'interfaccia definita in ICtsPrintHelper. L'implementazione AOSP è chiamata com.android.cts.helpers.aosp.DefaultCtsPrintHelper.

Se personalizzi la UI di stampa, puoi creare com.oem.cts.helpers.OemCtsPrintHelper che esegue la sottoclasse di DefaultCtsPrintHelper. android_test_helper_app in Android.bp è denominato com.oem.cts.helpers, che produce com.oem.cts.helpers.apk, e dichiara interaction-helpers-prefix come Oem in AndroidManifest.xml.

La proprietà del dispositivo ro.vendor.cts_interaction_helper_packages è impostata su com.oem.cts.helpers.

Implementazioni di riferimento

Le implementazioni di riferimento includono interfacce in cts/libs/helpers e helper AOSP predefiniti in cts/helpers. L'interfaccia di primo livello è documentata in cts/libs/helpers/core/src/com/android/cts/helpers/ICtsDeviceInteractionHelper.java.

Per connettere il test CTS ai relativi helper, i proprietari dei test possono utilizzare la definizione @Rule documentata in cts/libs/helpers/core/src/com/android/cts/helpers/DeviceInteractionHelperRule.java.

Ogni modulo CTS che utilizza il framework e il comportamento previsto dell'helper è documentato in un'interfaccia definita in cts/libs/helpers/core/src/com/android/cts/helpers.

Esecuzione dei test CTS

Test senza helper

A parte una proprietà, l'opzione per eseguire test senza helper non esiste in fase di runtime sul dispositivo, ma modifica facoltativamente il modo in cui i test CTS interagiscono con il dispositivo. Se devi eseguire CTS senza le implementazioni helper, hai due opzioni:

  • Rimuovi la proprietà ro.vendor.cts_interaction_helper_packages dal dispositivo. In questo modo, gli helper non possono essere utilizzati in quella build.
  • Rimuovi l'APK helper dalla directory testcases prima di eseguire CTS. In questo modo, gli helper non potranno essere utilizzati da nessuna esecuzione finché l'APK non verrà ripristinato alla versione testcases.

Puoi modificare le impostazioni predefinite con gli argomenti Tradefed e il controllo della proprietà ro.vendor.cts_interaction_helper_packages, da cui viene caricato l'APK helper.

Consulta di seguito i valori o gli intervalli previsti per ciascuna delle impostazioni disponibili.

  • ro.vendor.cts_interaction_helper_packages è una stringa separata da due punti contenente i nomi dei pacchetti. Può assumere qualsiasi valore che sia una scelta valida per il pacchetto per l'implementazione dell'helper dell'OEM.
  • cts-tradefed accetta un argomento device-interaction-helper:property-name che modifica temporaneamente la proprietà prevista per un'esecuzione del test, ad esempio --module-arg 'CtsPrintTestCases:{device-interaction-helper}property-name:debug.cts.hlp'. Il valore del nome della proprietà può essere qualsiasi proprietà impostata sul dispositivo. Il valore della proprietà segue le stesse limitazioni della proprietà ro.vendor.cts_interaction_helper_packages descritta sopra.

Test con personalizzazioni

Per impostazione predefinita, le implementazioni di riferimento superano il CTS su Android stock. Verifica che le implementazioni dei partner superino il CTS con le personalizzazioni dell'interfaccia utente. Esegui i moduli CTS che coprono l'interfaccia utente o le funzionalità che hai personalizzato.

Alcuni moduli o helper CTS potrebbero non supportare ancora alcune personalizzazioni.

  • Un modulo CTS che interagisce con la UI che vuoi personalizzare potrebbe non utilizzare il framework helper. È previsto che i moduli CTS vengano convertiti nel framework helper in base alla domanda e alle priorità del proprietario del test. Richiedi la conversione dei file all'inizio della procedura per assicurarti che venga pianificata, in modo simile alla richiesta di modifiche al CTS per supportare le funzionalità pianificate.
  • Le funzioni fornite da un helper esistente potrebbero non soddisfare completamente le personalizzazioni che vuoi apportare. Le funzioni helper devono astrarre le dipendenze dell'interfaccia utente. Se una funzione helper ha indirettamente una dipendenza dall'interfaccia utente, questo può essere trattato in modo simile ai bug in CTS.