Automatyczne ponowienie testu

Test może zakończyć się niepowodzeniem z dowolnego powodu, a czasami wystarczy go ponownie uruchomić, aby uzyskać pozytywny wynik (z powodu niepewności, np. problemów z podstawową infrastrukturą). Możesz skonfigurować TradeFed tak, aby ponawiał próby automatycznie.

Głównym celem automatycznego powtarzania jest unikanie ponownego uruchamiania wszystkich testów. Powtarzane są tylko testy, które zakończyły się niepowodzeniem, co znacznie skraca czas wykonywania.

Tradefed obsługuje również wielokrotne przeprowadzanie testów w celu wykrycia niestabilności za pomocą funkcji iteracji. W takim przypadku wszystkie testy zostaną ponownie uruchomione, a jeśli którakolwiek z itacji zakończy się niepowodzeniem, test zakończy się niepowodzeniem.

Włącz automatyczne ponowne próby

Automatyczne ponowne próby są kontrolowane za pomocą obiektu RetryDecision, który udostępnia 2 opcje włączenia tej funkcji: max-testcase-run-count i retry-strategy.

max-testcase-run-count określa liczbę prób lub iteracji, które zostaną wykonane. Określa górną granicę, która zapobiega ponawianiu prób w nieskończoność. retry-strategy określa sposób ponownego próbowania; więcej informacji znajdziesz w następnych sekcjach.

Wyłączanie automatycznych prób

Użyj tej opcji:

--retry-strategy NO_RETRY

Ponowna próba w przypadku niepowodzenia

Aby ponownie spróbować nieudanych testów, użyj tych opcji:

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

Spowoduje to ponowne próby wykonania zadania, które nie powiodło się wcześniej, dopóki nie zostanie ono wykonane lub dopóki nie zostanie osiągnięta maksymalna liczba prób, zależnie od tego, co nastąpi wcześniej.

Iteracje

Aby powtórzyć testy określoną liczbę razy, możesz użyć tych opcji:

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

Jak wyglądają wyniki?

Raporty wyników domyślnie otrzymują zbiorcze wyniki wszystkich prób.

Na przykład: FailPass dla RETRY_ANY_FAILURE dadzą w wyniku skumulowane Pass, ponieważ ponowne próby pozwoliły usunąć błąd.

Raportujący mogą otrzymywać wyniki nieskumulowane. W tym celu musi rozszerzyć interfejs ISupportGranularResults, który deklaruje obsługę wyników szczegółowych (niezagregowanych).

Szczegóły implementacji

Aby włączyć automatyczne ponowne próby, aby ponownie uruchomić błędy na poziomie testu, zaimplementuj interfejs ITestFilterReceiver.

Jeśli nie możesz zaimplementować interfejsu ITestFilterReceiver, możesz zaimplementować interfejs IAutoRetriableTest, aby ręcznie kontrolować sposób ponownego uruchamiania. InstalledInstrumentationsTest to przykładowa implementacja tego interfejsu.