Usare la riprova della suite

Una suite tende a includere diversi moduli di test e può raggiungere dimensioni del corpus di test piuttosto grandi. Ad esempio, la suite di test di compatibilità (CTS) di Android include centinaia di moduli e centinaia di migliaia di scenari di test.

È possibile che un gran numero di test non riesca a causa di un isolamento insufficiente o di dispositivi in uno stato non valido.

La funzionalità di ripetizione della suite è pensata per risolvere questi casi: consente di riprovare solo gli errori anziché le suite complete per escludere l'instabilità e l'isolamento insufficiente. Se un test non riesce ripetutamente, anche il tentativo non riesce e ricevi un segnale molto più forte che indica che c'è un problema reale.

Implementa il nuovo tentativo della suite

Il nuovo tentativo di risultati prevede la lettura dei risultati precedenti e la riesecuzione dell'invocazione precedente.

L'interfaccia principale che gestisce il nuovo tentativo è ITestSuiteResultLoader, che ti consente di caricare un risultato precedente e la riga di comando precedente.

RetryRescheduler utilizza queste informazioni per ricreare il comando precedente e compilare alcuni filtri per eseguire nuovamente solo i test precedenti non riusciti o non eseguiti.

Esempio di nuovo tentativo della suite: CTS

La configurazione dei tentativi in CTS è:

<configuration description="Runs a retry of a previous CTS session.">
    <object type="previous_loader" class="com.android.compatibility.common.tradefed.result.suite.PreviousResultLoader" />
    <test class="com.android.tradefed.testtype.suite.retry.RetryRescheduler" />

    <logger class="com.android.tradefed.log.FileLogger">
        <option name="log-level-display" value="WARN" />
    </logger>
</configuration>

Ciò è applicabile alla maggior parte delle suite che lo estendono, ad esempio VTS.

Verrà richiamato con:

cts-tradefed run retry --retry <session>

La sessione verrà trovata elencando i risultati precedenti nella console CTS:

cts-tf > l r
Session  Pass  Fail  Modules Complete  Result Directory     Test Plan  Device serial(s)  Build ID   Product
0        2092  30    148 of 999        2018.10.29_14.12.57  cts        [serial]          P          Pixel

Il comando originale esatto verrà ricaricato ed eseguito nuovamente con filtri aggiuntivi. Ciò significa che se il comando originale includeva alcune opzioni, anche queste fanno parte del nuovo tentativo.

Ad esempio:

cts-tradefed run cts-dev -m CtsGestureTestCases

Il nuovo tentativo di esecuzione del comando precedente è sempre associato a CtsGestureTestCases perché stiamo riprovando un comando che lo riguardava.

Configurare i nuovi tentativi per la suite in stile CTS

Affinché il nuovo tentativo funzioni, i risultati precedenti devono essere esportati in formato proto. È necessario aggiungere quanto segue:

<result_reporter class="com.android.compatibility.common.tradefed.result.suite.CompatibilityProtoResultReporter" />

Questo deve essere aggiunto alla configurazione XML del comando principale e comporta la creazione di un file test-record.pb nella cartella dei risultati.

Il nuovo tentativo di CTS carica quindi i dati da una combinazione di test-record.pb e test_result.xml esistente per preparare la chiamata di ripetizione.