Automatischer Testwiederholungsversuch

Ein Test kann aus verschiedenen Gründen fehlschlagen. Manchmal reicht es aus, den Test noch einmal auszuführen, damit er erfolgreich ist (z. B. aufgrund von Problemen in der zugrunde liegenden Infrastruktur). Sie können Tradefed so konfigurieren, dass Wiederholungsversuche automatisch durchgeführt werden.

Der Hauptzweck der automatischen Wiederholung besteht darin, zu vermeiden, dass alle Tests noch einmal ausgeführt werden. Stattdessen werden nur die fehlgeschlagenen Tests noch einmal ausgeführt, was zu erheblichen Einsparungen bei der Ausführungszeit führt.

Tradefed unterstützt außerdem das mehrfache Ausführen von Tests, um instabile Vorgänge über die Iterationen-Funktion zu erkennen. In diesem Fall werden alle Tests noch einmal ausgeführt und der Test schlägt fehl, wenn eine der Iterationen fehlschlägt.

Automatische Wiederholung aktivieren

Die automatische Wiederholung wird über das RetryDecision-Objekt gesteuert. Es bietet zwei Optionen zum Aktivieren der Funktion: max-testcase-run-count und retry-strategy.

max-testcase-run-count bestimmt die Anzahl der Wiederholungen oder Iterationen, die versucht werden. Es wird eine Obergrenze festgelegt, um endlose Wiederholungen zu vermeiden. retry-strategy bestimmt, wie der Vorgang wiederholt wird. Weitere Informationen finden Sie in den folgenden Abschnitten.

Automatische Wiederholung deaktivieren

Verwenden Sie die folgende Option:

--retry-strategy NO_RETRY

Fehlgeschlagene Wiederholungsversuche

Sie haben folgende Möglichkeiten, fehlgeschlagene Tests noch einmal auszuführen:

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

Der Vorgang wird wiederholt, bis der Fehler nicht mehr auftritt oder die maximale Anzahl von Wiederholungen erreicht ist, je nachdem, was zuerst eintritt.

Iterationen

Wenn Sie Tests für eine bestimmte Zeitspanne noch einmal ausführen möchten, können Sie die folgenden Optionen verwenden:

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

Wie sehen die Ergebnisse aus?

Ergebnisreporter erhalten standardmäßig aggregierte Ergebnisse für alle Versuche.

Beispiel: Ein Fail und ein Pass für RETRY_ANY_FAILURE führen zu einem aggregierten Pass, da der Fehler beim erneuten Versuch behoben werden konnte.

Die Reporter können die nicht aggregierten Ergebnisse erhalten. Dazu muss die ISupportGranularResults-Oberfläche erweitert werden, die die Unterstützung der detaillierten (nicht aggregierten) Ergebnisse deklariert.

Implementierungsdetails

Wenn Sie die automatische Wiederholung aktivieren möchten, um Fehler auf Testfallebene noch einmal auszuführen, implementieren Sie ITestFilterReceiver.

Wenn Sie ITestFilterReceiver nicht implementieren können, können Sie IAutoRetriableTest implementieren, um die Wiederholung manuell zu steuern. InstalledInstrumentationsTest ist eine Beispielimplementierung dieser Schnittstelle.