Użyj pakietu ponownie

Pakiet zwykle zawiera kilka modułów testowych i może osiągnąć dość duży rozmiar korpusu testowego. Na przykład pakiet testów zgodności systemu Android (CTS) zawiera setki modułów i setki tysięcy przypadków testowych.

Może się zdarzyć, że duża liczba testów zakończy się niepowodzeniem z powodu słabej izolacji lub nieprawidłowego stanu urządzeń.

Funkcja ponawiania prób pakietu ma na celu rozwiązanie takich przypadków: umożliwia ponawianie prób tylko w przypadku niepowodzeń zamiast pełnych zestawów, aby wykluczyć niestabilność i słabą izolację. Jeśli test stale kończy się niepowodzeniem, ponowna próba również kończy się niepowodzeniem; i otrzymujesz znacznie silniejszy sygnał, że istnieje prawdziwy problem.

Zaimplementuj ponowną próbę pakietu

Ponowna próba uzyskania wyników polega na odczytaniu poprzednich wyników i ponownym uruchomieniu poprzedniego wywołania.

Głównym interfejsem sterującym ponowną próbą jest ITestSuiteResultLoader , który umożliwia załadowanie poprzedniego wyniku i poprzedniego wiersza poleceń.

Następnie RetryRescheduler wykorzystuje te informacje do odtworzenia poprzedniego polecenia i wypełnienia niektórych filtrów, aby ponownie uruchomić tylko poprzednie błędy lub niewykonane testy.

Przykładowa ponowna próba pakietu: CTS

Konfiguracja ponownej próby w CTS to:

<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ą, na przykład VTS .

Zostałoby wywołane za pomocą:

cts-tradefed run retry --retry <session>

Sesję można znaleźć, wyświetlając listę poprzednich wyników 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ładne oryginalne polecenie zostanie ponownie załadowane i uruchomione z dodatkowymi filtrami. Oznacza to, że jeśli oryginalne polecenie zawierało pewne opcje, są one również częścią ponownej próby.

Na przykład:

cts-tradefed run cts-dev -m CtsGestureTestCases

Ponowienie powyższego jest zawsze powiązane z CtsGestureTestCases , ponieważ ponawiamy wykonanie polecenia, które dotyczyło tylko tego.

Skonfiguruj ponawianie prób dla pakietu w stylu CTS

Aby ponowna próba zadziałała, poprzednie wyniki muszą zostać wyeksportowane w formacie proto. Należy dodać, co następuje:

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

Należy to dodać do konfiguracji XML głównego polecenia, co skutkuje utworzeniem pliku test-record.pb w folderze wynikowym.

Ponowna próba CTS ładuje następnie dane z kombinacji pliku test-record.pb i istniejącego test_result.xml , aby przygotować wywołanie ponownej próby.