Modulo di aiuto per l'interazione con il dispositivo CTS

Per Android 11 o versioni successive, i moduli di assistenza per l'interazione con il dispositivo 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 contemplata dal documento Android Compatibility Definition Document (CDD) o dalla documentazione delle API, possono essere eseguite durante la trasmissione del CTS.

Gli 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 di assistenza. Se utilizzi l'implementazione predefinita di Android, non è necessario alcun intervento aggiuntivo.

Implementazione di moduli di supporto

Requisiti per personalizzare l'UI

Controlla i moduli CDD o Mainline per verificare eventuali requisiti UI. Se l'interfaccia utente che ti interessa è coperta dai moduli CDD o Mainline, non può essere personalizzata.

Se i test CTS che interagiscono con l'interfaccia utente desiderata non utilizzano il framework di helper, l'interfaccia utente non può essere personalizzata. Collabora con il proprietario del test per convertire il modulo di test prima che sia possibile 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. Designa i moduli di assistenza 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 in base al tipo di modifiche.
    • Le sottoclassi OEM si trovano in un pacchetto OEM, ad esempio 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 per i runner di test.
    • 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 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 viene eseguito Tradefed for CTS. Se necessario, verifica che sia stata scelta la classe di implementazione dell'helper prevista esaminando i messaggi di 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 di un 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 personalizzi l'interfaccia utente di stampa, puoi creare com.oem.cts.helpers.OemCtsPrintHelper che è una 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 le interfacce in cts/libs/helpers e gli annunci di assistenza 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 previsto dell'helper è documentato in un'interfaccia definita in cts/libs/helpers/core/src/com/android/cts/helpers.

Esecuzione di test CTS

Test senza assistenti

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 di helper, hai due opzioni:

  • Rimuovi la proprietà ro.vendor.cts_interaction_helper_packages dal dispositivo. In questo modo, gli aiuti non vengono utilizzati completamente nella build.
  • Rimuovi l'APK helper dalla directory testcases prima di eseguire CTS. In questo modo, gli helper non possono essere 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 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 che sia una scelta di pacchetti valida per l'implementazione dell'helper dell'OEM.
  • cts-tradefed accetta un argomento device-interaction-helper:property-name che cambia 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 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 i CTS con personalizzazioni dell'interfaccia utente. Esegui i moduli CTS che coprono l'interfaccia utente o le funzionalità che hai personalizzato.

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

  • Un modulo CTS che interagisce con l'interfaccia utente che vuoi personalizzare potrebbe non utilizzare il framework di assistenza. I moduli CTS dovrebbero essere convertiti nel framework di supporto 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 UI. Se una funzione di supporto ha indirettamente una dipendenza dall'interfaccia utente, questo può essere trattato in modo simile ai bug in CTS.