Eine Suite umfasst in der Regel mehrere Testmodule und kann eine recht große Testkorpusgröße erreichen. Beispielsweise umfasst die Android Compatibility Test Suite (CTS) Hunderte von Modulen und Hunderttausende Testfälle.
Es ist möglich, dass eine große Anzahl von Tests aufgrund einer schlechten Isolierung oder eines fehlerhaften Gerätezustands fehlschlägt.
Die Suite-Wiederholungsfunktion soll diese Fälle beheben: Sie ermöglicht es Ihnen, nur die Fehler und nicht die gesamten Suiten erneut zu versuchen, um Flakigkeit und schlechte Isolierung auszuschließen. Wenn ein Test durchgängig fehlschlägt, schlägt auch der Wiederholungsversuch fehl; und Sie erhalten ein viel stärkeres Signal, dass es sich um ein echtes Problem handelt.
Suite-Wiederholung implementieren
Der erneute Versuch der Ergebnisse umfasst das Lesen der vorherigen Ergebnisse und die erneute Ausführung des vorherigen Aufrufs.
Die Hauptschnittstelle für den Wiederholungsversuch ist ITestSuiteResultLoader
, mit der Sie ein vorheriges Ergebnis und die vorherige Befehlszeile laden können.
RetryRescheduler
verwendet diese Informationen dann, um den vorherigen Befehl neu zu erstellen und einige Filter zu füllen, um nur die vorherigen fehlgeschlagenen oder nicht ausgeführten Tests erneut auszuführen.
Beispiel für einen Suite-Wiederholungsversuch: CTS
Die Wiederholungskonfiguration in CTS ist:
<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>
Dies gilt für die meisten Suiten, die es erweitern, beispielsweise VTS .
Es würde aufgerufen werden mit:
cts-tradefed run retry --retry <session>
Die Sitzung kann durch Auflisten der vorherigen Ergebnisse in der CTS-Konsole gefunden werden:
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
Der exakte Originalbefehl wird neu geladen und mit zusätzlichen Filtern erneut ausgeführt. Das bedeutet, dass, wenn Ihr ursprünglicher Befehl einige Optionen enthielt, diese auch Teil des Wiederholungsversuchs sind.
Zum Beispiel:
cts-tradefed run cts-dev -m CtsGestureTestCases
Der Wiederholungsversuch des oben Gesagten ist immer an CtsGestureTestCases
gebunden, da wir einen Befehl wiederholen, der nur ihn betraf.
Konfigurieren Sie die Wiederholung für die Suite im CTS-Stil
Damit der erneute Versuch funktioniert, müssen die vorherigen Ergebnisse im Proto-Format exportiert werden. Folgendes muss hinzugefügt werden:
<result_reporter class="com.android.compatibility.common.tradefed.result.suite.CompatibilityProtoResultReporter" />
Dies muss zur XML-Konfiguration des Hauptbefehls hinzugefügt werden und führt dazu, dass eine test-record.pb
Datei im Ergebnisordner erstellt wird.
Der CTS-Wiederholungsversuch lädt dann Daten aus einer Kombination aus test-record.pb
und der vorhandenen test_result.xml
, um den Wiederholungsaufruf vorzubereiten.