Nuovo tentativo di test automatico

Un test potrebbe non andare a buon fine per qualsiasi motivo e a volte è sufficiente eseguirlo nuovamente per superarlo nuovamente (a causa di irregolarità, ad esempio a causa di problemi dell'infrastruttura sottostante). Puoi configurare TradeFed in modo che esegua il nuovo tentativo automaticamente.

Lo scopo del nuovo tentativo automatico è evitare di eseguire nuovamente tutti i test, ma solo quelli non riusciti, con un conseguente risparmio sui tempi di esecuzione.

Tradefed supporta anche l'esecuzione di test più volte per rilevare la variabilità tramite la funzionalità di iterazioni. In questo caso, tutti i test verranno eseguiti nuovamente e il test non andrà a buon fine se una delle iterazioni non va a buon fine.

Attivare il nuovo tentativo automatico

Il nuovo tentativo automatico viene controllato tramite l'oggetto RetryDecision, che offre due opzioni per attivare la funzionalità: max-testcase-run-count e retry-strategy.

max-testcase-run-count determina il numero di nuovi tentativi o iterazioni che verranno effettuati. Imposta un limite superiore per evitare nuovi tentativi all'infinito. retry-strategy determina la decisione su come riprovare. Per ulteriori dettagli, consulta le sezioni seguenti.

Disattivare il nuovo tentativo automatico

Utilizza la seguente opzione:

--retry-strategy NO_RETRY

Nuovi tentativi in caso di errori

Per riprovare a eseguire i test non riusciti, utilizza le seguenti opzioni:

--retry-strategy RETRY_ANY_FAILURE --max-testcase-run-count X

Il fallimento verrà riprovato finché non viene superato o finché non viene raggiunto il numero massimo di tentativi, a seconda di quale condizione si verifica per prima.

Iterazioni

Per eseguire nuovamente i test per un certo periodo di tempo, possono essere utilizzate le seguenti opzioni:

--retry-strategy ITERATIONS --max-testcase-run-count X

Come appaiono i risultati?

Per impostazione predefinita, i reporter dei risultati riceveranno i risultati aggregati di tutti i tentativi.

Ad esempio, un Fail e un Pass per RETRY_ANY_FAILURE daranno un Pass aggregato poiché il nuovo tentativo è riuscito a correggere l'errore.

È possibile che i reporter ricevano i risultati non aggregati. Per farlo, devono estendere l'interfaccia ISupportGranularResults che dichiara il supporto per i risultati granulari (non aggregati).

Dettagli di implementazione

Per consentire al nuovo tentativo automatico di ripetere gli errori a livello di test case, implementa ITestFilterReceiver.

Se non riesci a implementare ITestFilterReceiver, puoi implementare IAutoRetriableTest per controllare manualmente il funzionamento della riesecuzione. InstalledInstrumentationsTest è un'implementazione di esempio di questa interfaccia.