Usa Suite Riprova

Una suite tende a includere diversi moduli di test e può raggiungere una dimensione del corpus di test piuttosto grande. Ad esempio, il test di compatibilità Suite Android (CTS) include centinaia di moduli e centinaia di casi di migliaia di test.

Diventa possibile che una grande quantità di test fallisca a causa di uno scarso isolamento o che i dispositivi vadano in cattivo stato.

La funzione di ripetizione della suite ha lo scopo di affrontare questi casi: consente di riprovare solo gli errori anziché le suite complete per escludere instabilità e scarso isolamento. Se un test fallisce costantemente, anche il nuovo tentativo fallisce; e ottieni un segnale molto più forte che c'è un problema reale.

Riprova della suite di implementazione

La ripetizione dei risultati implica la lettura dei risultati precedenti e l'esecuzione di nuovo della chiamata precedente.

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

Il RetryRescheduler quindi utilizza queste informazioni per ricreare il comando precedente e popolare alcuni filtri al fine di ri-eseguire solo i fallimenti precedenti o test non eseguiti.

Riprova suite di esempio: 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>

Questo è applicabile alla maggior parte delle suite che si estendono, per esempio VTS ).

Sarebbe invocato tramite:

cts-tradefed run retry --retry <session>

La sessione verrebbe 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

L'esatto comando originale verrà ricaricato e rieseguito con filtri aggiuntivi. Ciò significa che se il tuo comando originale includeva alcune opzioni, anche queste sarebbero parte del nuovo tentativo.

Per esempio:

cts-tradefed run cts-dev -m CtsGestureTestCases

Il nuovo tentativo di quanto sopra sarebbe sempre delimitata a CtsGestureTestCases visto che stiamo ritentare un comando che ha coinvolto solo.

Configura il tentativo per la suite in stile CTS

Affinché il tentativo funzioni, i risultati precedenti devono essere esportati in formato proto. Occorre 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 si tradurrà in un test-record.pb file da creare nella cartella risultato.

Il tentativo CTS quindi carica i dati da una combinazione di test-record.pb e l'attuale test_result.xml per preparare l'invocazione retry.