Una suite tende a includere diversi moduli di test e può raggiungere dimensione del corpus di test. Ad esempio, la suite per il test di compatibilità Android (CTS). include centinaia di moduli e centinaia di migliaia di scenari di test.
È possibile che un numero elevato di test non vada a buon fine a causa di un isolamento scadente o il malfunzionamento dei dispositivi.
La funzionalità di ripetizione della suite è pensata per risolvere questi casi: ti consente di riprovare solo gli errori anziché le suite complete, in modo da escludere scarso isolamento. Se un test non riesce costantemente, anche il nuovo tentativo non va a buon fine. e si sente un segnale molto più forte della presenza di un problema reale.
Nuovo tentativo di implementazione della suite
Il nuovo tentativo dei risultati comporta la lettura dei risultati precedenti e l'esecuzione di chiamata precedente.
L'interfaccia principale su cui si basa 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
per eseguire nuovamente solo gli errori precedenti o i test non eseguiti.
Nuovo tentativo per la suite di esempio: CTS
La configurazione dei nuovi 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 vale per la maggior parte delle suite che la estendono, ad esempio VTS.
Verrà richiamato con:
cts-tradefed run retry --retry <session>
La sessione sarebbe 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. Questo significa che se il comando originale includeva alcune opzioni, queste parte del nuovo tentativo.
Ad esempio:
cts-tradefed run cts-dev -m CtsGestureTestCases
Il nuovo tentativo riportato sopra è sempre associato a CtsGestureTestCases
perché
stiamo ritentando un comando
che coinvolgerlo solo.
Configura nuovo tentativo 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" />
Deve essere aggiunto alla configurazione XML del comando principale
comporta la creazione di un file test-record.pb
nella cartella dei risultati.
Il nuovo tentativo CTS carica i dati da una combinazione di test-record.pb
e
test_result.xml
esistente per preparare la chiamata di nuovo.