Automatyczne ponawianie testu

Test może się nie powieść z dowolnego powodu, a czasami wystarczy go ponownie uruchomić, aby zakończył się sukcesem (z powodu niepewnych wyników, np. problemów z infrastrukturą bazową). Możesz skonfigurować Tradefed tak, aby automatycznie przeprowadzał ponowne próby.

Głównym celem automatycznego ponawiania jest uniknięcie ponownego uruchamiania wszystkich testów. Ponownie uruchamiane są tylko testy, które zakończyły się niepowodzeniem, co pozwala znacznie skrócić czas wykonywania.

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

Włącz automatyczne ponawianie próby

Automatyczne ponawianie jest kontrolowane przez obiekt RetryDecision, który udostępnia 2 opcje włączenia tej funkcji: max-testcase-run-countretry-strategy.

max-testcase-run-count określa liczbę ponownych prób lub iteracji, które zostaną podjęte. Ustawia górną granicę, aby uniknąć ponawiania w nieskończoność. retry-strategy decyduje o tym, jak ponowić próbę. Więcej informacji znajdziesz w kolejnych sekcjach.

Wyłączanie automatycznych ponownych prób

Skorzystaj z tej opcji:

--retry-strategy NO_RETRY

Ponawianie nieudanych prób

Aby ponowić testy, które zakończyły się niepowodzeniem, skorzystaj z tych opcji:

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

Będzie to ponawiać próbę do momentu, aż się powiedzie lub osiągnie maksymalną liczbę ponownych prób, w zależności od tego, co nastąpi wcześniej.

Iteracje

Aby ponownie uruchomić testy określoną liczbę razy, możesz użyć tych opcji:

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

Jak wyglądają wyniki?

Osoby zgłaszające wyniki domyślnie będą otrzymywać zbiorcze wyniki wszystkich prób.

Na przykład FailPass dla RETRY_ANY_FAILURE spowodują zagregowanie Pass, ponieważ ponowienie próby pozwoliło usunąć błąd.

Osoby generujące raporty mogą otrzymywać wyniki niezagregowane. W tym celu muszą rozszerzyć interfejs ISupportGranularResults, który deklaruje obsługę szczegółowych (niezagregowanych) wyników.

Szczegóły implementacji

Aby włączyć automatyczne ponawianie prób w przypadku nieudanych testów na poziomie przypadku testowego, zaimplementuj interfejs ITestFilterReceiver.

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