Modulo di assistenza per l'interazione con i dispositivi CTS

Per Android 11 o versioni successive, i moduli helper per l'interazione con i dispositivi del 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 dell'interfaccia utente non coperto dal Compatibility Definition Document (CDD) di Android o dalla documentazione dell'API, possono essere eseguite superando comunque il CTS.

I produttori di apparecchiature originali (OEM) che vogliono personalizzare l'interfaccia utente di Android durante lo sviluppo del prodotto e devono superare il CTS potrebbero essere in grado di implementare moduli helper. Se utilizzi l'implementazione predefinita di Android, non sono necessari ulteriori interventi.

Implementazione dei moduli helper

Requisiti per personalizzare l'interfaccia utente

Controlla il CDD o i moduli Mainline per verificare la presenza di requisiti dell'interfaccia utente. Se l'interfaccia utente desiderata è coperta dal CDD o dai moduli Mainline, non può essere personalizzata.

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

In caso contrario, puoi personalizzare l'interfaccia utente.

Flusso di lavoro di implementazione

  1. Personalizza l'interfaccia utente in base alle esigenze del tuo prodotto specifico.
  2. Assegna i moduli helper AOSP esistenti come sottoclassi per i moduli di test CTS che devono interagire con l'interfaccia utente. Sostituisci le interazioni necessarie in modo appropriato per l'interfaccia utente personalizzata. Le sostituzioni variano a seconda del tipo di modifiche.
    • Le sottoclassi OEM si trovano in un pacchetto OEM, ad esempio com.[oem].cts.helpers.
    • Ogni sottoclasse OEM viene denominata con 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 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 degli 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 è denominata com.android.cts.helpers.aosp.DefaultCtsPrintHelper.

Se personalizzi l'interfaccia utente di stampa, puoi creare com.oem.cts.helpers.OemCtsPrintHelper che sottoclassi 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 le interfacce in cts/libs/helpers e gli 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 collegare 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 dell'helper previsto è 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 i 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 degli helper, hai due opzioni:

  • Rimuovi la proprietà ro.vendor.cts_interaction_helper_packages dal dispositivo. In questo modo, gli helper non verranno utilizzati completamente in questa build.
  • Rimuovi l'APK dell'helper dalla directory testcases prima di eseguire CTS. In questo modo, gli helper non verranno utilizzati da nessuna esecuzione finché l'APK non viene ripristinato in 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 dell'helper.

Di seguito sono riportati 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 valido per la scelta del 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 di 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 restrizioni 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 l'interfaccia utente 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. Invia le richieste di conversione all'inizio della procedura per assicurarti che la conversione venga pianificata, in modo simile alla richiesta di modifiche 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 dell'interfaccia utente, può essere trattata in modo simile ai bug in CTS.