Modulo di supporto per l'interazione del dispositivo CTS

Per Android 11 o versioni successive, i moduli di supporto per l'interazione del dispositivo Compatibility Test Suite (CTS) consentono di personalizzare il modo in cui determinati test CTS interagiscono con l'interfaccia utente (UI) su un dispositivo specifico. Ciò significa che azioni, come la sostituzione di un elemento dell'interfaccia utente che non è coperto dal documento CDD (Android Compatibility Definition Document) o dai documenti API, possono essere eseguite mentre si continua a superare CTS.

Gli OEM che desiderano personalizzare l'interfaccia utente Android durante lo sviluppo del prodotto e devono superare il CTS potrebbero essere in grado di implementare moduli di supporto. Se utilizzi l'implementazione Android predefinita, non è necessario alcun lavoro aggiuntivo.

Implementazione di moduli di supporto

Requisiti per personalizzare l'interfaccia utente

Controlla i moduli CDD o Mainline per eventuali requisiti dell'interfaccia utente. Se l'interfaccia utente desiderata è coperta dai moduli CDD o Mainline, non è possibile personalizzarla.

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

Altrimenti, puoi personalizzare l'interfaccia utente.

Flusso di lavoro di implementazione

  1. Personalizza l'interfaccia utente secondo necessità per il tuo prodotto specifico.
  2. Designare 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, come com.[oem].cts.helpers .
    • Ogni sottoclasse OEM è 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 dei test runner.
    • Android.bp dovrebbe dichiarare android_test_helper_app con lo stesso nome del pacchetto contenuto.
    • AndroidManifest.xml per l'APK deve dichiarare una proprietà di metadati denominatainteraction interaction-helpers-prefix con il valore del prefisso della classe scelto nel punto precedente.
    • L'app dovrebbe dipendere da cts-helpers-core , cts-helpers-interfaces e com.android.cts.helpers.aosp . Se gli helper OEM implementano completamente tutte le interfacce rilevanti, allora com.android.cts.helpers.aosp è facoltativo.
  4. Imposta la proprietà ro.vendor.cts_interaction_helper_packages nell'immagine del dispositivo per includere il nome dell'APK. Se devi separare le implementazioni dell'helper su più APK, questa proprietà può contenere un elenco di pacchetti separati da due punti.
  5. Assicurati che l'APK sia disponibile nella directory testcases durante l'esecuzione di Tradefed per CTS. Se necessario, verificare che venga scelta la classe di implementazione dell'helper prevista esaminando i messaggi logcat.
  6. Facoltativo, ma altamente consigliato: invia l'implementazione dell'helper ad AOSP o rendila disponibile per test di terze parti.

Esempio di implementazione dell'helper

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

Se si personalizza l'interfaccia utente di stampa, è possibile creare com.oem.cts.helpers.OemCtsPrintHelper che crea sottoclassi DefaultCtsPrintHelper . android_test_helper_app in Android.bp è denominato com.oem.cts.helpers , che produce com.oem.cts.helpers.apk e dichiarainteraction 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 livello superiore è documentata in cts/libs/helpers/core/src/com/android/cts/helpers/ICtsDeviceInteractionHelper.java .

Per connettere il test CTS ai suoi helper, i proprietari del 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 relativo comportamento di supporto previsto è documentato in un'interfaccia definita in cts/libs/helpers/core/src/com/android/cts/helpers .

Esecuzione dei test CTS

Test senza aiutanti

A parte una proprietà, l'opzione per eseguire il test senza aiutanti non esiste in fase di esecuzione nel 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:

  • Rimuovere la proprietà ro.vendor.cts_interaction_helper_packages dal dispositivo. Ciò impedisce che gli helper vengano utilizzati interamente su quella build.
  • Rimuovi l'APK helper dalla directory testcases prima di eseguire CTS. Ciò impedisce che gli helper vengano utilizzati da qualsiasi esecuzione finché l'APK non viene ripristinato nei 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.

Vedere quanto segue per 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 costituisca una scelta di pacchetto valida per l'implementazione dell'helper dell'OEM.
  • cts-tradefed accetta un argomento device-interaction-helper:property-name che modifica temporaneamente la proprietà prevista per l'esecuzione di un test, come --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 trasmettono CTS su Android di serie. Verifica che le implementazioni dei partner superino CTS con le personalizzazioni dell'interfaccia utente. Esegui i moduli CTS che coprono l'interfaccia utente o le funzionalità personalizzate.

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

  • Un modulo CTS che interagisce con l'interfaccia utente che desideri personalizzare potrebbe non utilizzare il framework di supporto. Si prevede che i moduli CTS si convertano nel framework di supporto in base alla domanda e alle priorità del proprietario del test. Presenta le richieste di conversione nelle prime fasi del processo per garantire che la conversione rispetti i tempi previsti, 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 desideri apportare. Le funzioni di supporto dovrebbero astrarre le dipendenze dell'interfaccia utente. Se una funzione helper ha indirettamente una dipendenza dell'interfaccia utente, questa può essere trattata in modo simile ai bug in CTS.