Una suite tende a includere diversi moduli di test e può raggiungere dimensioni del corpus di test piuttosto elevate. Ad esempio, la suite di test di compatibilità Android (CTS) include centinaia di moduli e centinaia di migliaia di casi di test.
È possibile che un'elevata quantità di test non vada a buon fine a causa di un isolamento insufficiente o di dispositivi in uno stato non ottimale.
La funzionalità di ripetizione della suite è pensata per risolvere questi casi: consente di ripetere solo gli errori anziché le suite complete per escludere l'instabilità e l'isolamento insufficiente. Se un test non va a buon fine in modo coerente, anche il tentativo di ripetizione non va a buon fine e ricevi un segnale molto più forte che indica un problema reale.
Implementa la ripetizione della suite
La ripetizione dei risultati comporta la lettura dei risultati precedenti e la riesecuzione della chiamata precedente.
L'interfaccia principale che gestisce la ripetizione è ITestSuiteResultLoader,
che consente di caricare un risultato precedente e la riga di comando precedente.
RetryRescheduler
utilizza queste informazioni per ricreare il comando precedente e popolare alcuni filtri per ripetere solo i test precedenti non riusciti o non eseguiti.
Esempio di ripetizione della suite: CTS
La configurazione di ripetizione in CTS è la seguente:
<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 lo estendono, ad esempio VTS.
Verrà chiamato 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 e rieseguito con filtri aggiuntivi. Ciò significa che se il comando originale includeva alcune opzioni, queste fanno parte anche del tentativo di ripetizione.
Ad esempio:
cts-tradefed run cts-dev -m CtsGestureTestCases
Il tentativo di ripetizione di quanto sopra è sempre vincolato a CtsGestureTestCases perché stiamo ripetendo un comando che coinvolgeva solo questo.
Configura la ripetizione per la suite in stile CTS
Affinché la ripetizione 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 tentativo di ripetizione di CTS carica quindi i dati da una combinazione di test-record.pb e test_result.xml esistente per preparare la chiamata di ripetizione.