Używanie ponownego próbowania w zestawie

Pakiet zwykle zawiera kilka modułów testowych i może mieć dość duży korpus testowy. Na przykład pakiet testów zgodności z Androidem (CTS) zawiera setki modułów i setki tysięcy przypadków testowych.

W przypadku słabej izolacji lub przejścia urządzeń w nieprawidłowy stan może się nie powieść duża liczba testów.

Funkcja ponawiania testów ma na celu rozwiązanie tych problemów: umożliwia ponawianie tylko nieudanych testów zamiast całych zestawów, aby wyeliminować niestabilność i słabą izolację. Jeśli test stale się nie udaje, ponowna próba również się nie powiedzie, a Ty otrzymasz znacznie silniejszy sygnał, że występuje prawdziwy problem.

Wdrażanie ponawiania zestawu

Ponowne przetwarzanie wyników polega na odczytaniu poprzednich wyników i ponownym uruchomieniu poprzedniego wywołania.

Głównym interfejsem sterującym ponawianiem jest ITestSuiteResultLoader, który umożliwia wczytanie poprzedniego wyniku i poprzedniej linii poleceń.

RetryRescheduler Następnie używa tych informacji, aby odtworzyć poprzednie polecenie i wypełnić niektóre filtry, aby ponownie uruchomić tylko poprzednie nieudane lub niewykonane testy.

Przykład ponowienia wykonania pakietu: CTS

Konfiguracja ponawiania w CTS jest następująca:

<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>

Dotyczy to większości pakietów, które go rozszerzają, np. VTS.

Wywoływana jest za pomocą tego kodu:

cts-tradefed run retry --retry <session>

Sesję można znaleźć, wyświetlając poprzednie wyniki w konsoli 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

Dokładna pierwotna komenda zostanie ponownie wczytana i uruchomiona z dodatkowymi filtrami. Oznacza to, że jeśli pierwotne polecenie zawierało jakieś opcje, są one również częścią ponownej próby.

Na przykład:

cts-tradefed run cts-dev -m CtsGestureTestCases

Ponowna próba powyższego działania jest zawsze powiązana z CtsGestureTestCases, ponieważ ponawiamy polecenie, które dotyczyło tylko tego elementu.

Konfigurowanie ponawiania w przypadku pakietu w stylu CTS

Aby ponowienie zadziałało, poprzednie wyniki muszą zostać wyeksportowane w formacie proto. Należy dodać te informacje:

<result_reporter class="com.android.compatibility.common.tradefed.result.suite.CompatibilityProtoResultReporter" />

Należy go dodać do konfiguracji XML głównego polecenia. W folderze wyników zostanie utworzony plik test-record.pb.

Ponowna próba CTS wczytuje dane z połączenia test-record.pb i istniejącego test_result.xml, aby przygotować wywołanie ponownej próby.