Verwenden Sie Suite Retry

Eine Suite enthält 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 schlechter Isolierung fehlschlägt oder Geräte in einen schlechten Zustand geraten.

Die Suite-Wiederholungsfunktion ist für diese Fälle gedacht: Sie ermöglicht es Ihnen, nur die Fehler anstelle der vollständigen Suiten erneut zu versuchen, um Flakigkeit und schlechte Isolation auszuschließen. Wenn ein Test dauerhaft fehlschlägt, schlägt auch der Wiederholungsversuch fehl; und Sie erhalten ein viel stärkeres Signal, dass ein echtes Problem vorliegt.

Suite-Wiederholung implementieren

Die Wiederholung der Ergebnisse beinhaltet das Lesen der vorherigen Ergebnisse und das erneute Ausführen des vorherigen Aufrufs.

Die Hauptschnittstelle für die Wiederholung ist ITestSuiteResultLoader , mit der Sie ein vorheriges Ergebnis und die vorherige Befehlszeile laden können.

Der RetryRescheduler verwendet dann diese Informationen, um den vorherigen Befehl neu zu erstellen und einige Filter zu füllen, um nur die vorherigen Fehler oder nicht ausgeführten Tests erneut auszuführen.

Beispiel-Suite-Wiederholung: 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, zum Beispiel VTS ).

Es würde aufgerufen werden über:

cts-tradefed run retry --retry <session>

Die Sitzung würde durch Auflisten der vorherigen Ergebnisse in der CTS-Konsole gefunden:

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 genaue ursprüngliche Befehl 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 der Wiederholung wären.

Zum Beispiel:

cts-tradefed run cts-dev -m CtsGestureTestCases

Die Wiederholung des Obigen wäre immer an CtsGestureTestCases gebunden, da wir einen Befehl wiederholen, der nur ihn betrifft.

Konfigurieren Sie die Wiederholung für die Suite im CTS-Stil

Damit der Wiederholungsversuch 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 der XML-Konfiguration des Hauptbefehls hinzugefügt werden und führt dazu, dass eine test-record.pb Datei im Ergebnisordner erstellt wird.

Die CTS-Wiederholung lädt dann Daten aus einer Kombination aus test-record.pb und der vorhandenen test_result.xml , um den Wiederholungsaufruf vorzubereiten.