Fragmentacja testowa

Jeśli korpus testowy jest duży lub czas wykonywania jest długi, oferujemy możliwość podziału testów na kilka urządzeń: fragmentacja.

Fragmentacja ma wymagania wstępne dla biegu testowego na potrzeby obsługi fragmentacji.

Większość głównych uczestników testu już obsługuje fragmentację, więc nie ma dodatkowych co jest wymagane. Obsługują już one fragmentację: testy z instrumentacją, testów po stronie hosta, GTest.

W ramach Tradefed obsługujemy 2 rodzaje fragmentacji: lokalne i rozproszone. Łączy je podobieństwo między nimi, więc na tej stronie opisujemy wspólne właściwości potem poznać specyfikę każdego z nich.

Właściwości wspólne

Obie formy fragmentacji przyjmują te same właściwości co uczestnicy testu: fragmenty muszą być niezależne i deterministyczne. Pierwszym krokiem w obu fragmentach jest aby utworzyć pełną, uporządkowaną listę testów, a następnie podzielić je na w różnych grupach/fragmentach.

Formularze do fragmentowania różnią się przede wszystkim sposobem wykonywania testów. Więcej informacji znajdziesz w sekcjach poniżej.

Fragmentacja lokalna

Fragmentacja lokalna oznacza wszystkie urządzenia biorące udział w wykonaniu podzielonego na fragmenty są połączone z tym samym hostem fizycznym.

Realizacja

Fragmentacja lokalna korzysta ze wszystkich urządzeń połączonych z tym samym przez utworzenie puli testów, które należy wykonać, testów odpytywania urządzeń, gdy są one bezpłatne (tzn. wykonuje się to w ramach poprzedniego testu). Pozwala to zoptymalizować wykorzystanie urządzenia. Inna nazwa to: fragmentowanie dynamiczne.

Opcje

--shard-count XX

Fragmentacja rozproszona

Fragmentacja rozproszona oznacza wszystkie urządzenia biorące udział w wykonaniu polecenia podzielone na fragmenty wywołania mogą występować w dowolnym miejscu i być połączone z różnymi hostów.

Realizacja

Dzielenie rozproszone następuje podczas tworzenia listy testów, a zawartość każdy fragment wykonuje tylko aktualnie żądany fragment. A więc wszystkie rozproszone fragmenty najpierw tworzą tę samą listę, a następnie wykonują w jednym podzbiorze, co skutkuje wykonaniem wszystkich testów.

Główną właściwością tego formularza są fragmenty, których w ogóle nie znamy i mogą przestać działać niezależnie.

Główną wadą jest to, że długość fragmentu nie musi być zrównoważona po prostu ponieważ nie możemy przewidzieć z wyprzedzeniem czasu działania każdego testu w każdym fragmencie. Rozkład obejmuje mniej więcej taką samą liczbę przypadków testowych we wszystkich fragmentach.

Opcje

--shard-count XX --shard-index XX

Fragmentacja tokenów

Fragmentacji tokenów można używać tylko w ramach fragmentacji lokalnej. Flaga to nie działa w przypadkach użycia fragmentacji nielokalnych. Czasami jedno z urządzeń udział w fragmentacji gromadzi specjalne zasoby, których inni nie mają, takie jak karta SIM Niektóre testy mogą działać tylko wtedy, gdy dostępne są te specjalne zasoby. w przeciwnym razie się nie uda.

W takich przypadkach rozwiązaniem jest fragmentacja tokenów. Moduły testowe mogą: zadeklarować w dokumencie AndroidTest.xml, jakich specjalnych zasobów potrzebuje, Tradefed kieruje testy do urządzenia z zasobem.

Konfiguracja XML

<option name="config-descriptor:metadata" key="token" value="SIM_CARD" />

Wartość value tokena zgadza się z kodem Tradefed TokenProperty. i jest powiązana z modułem obsługi w TokenProviderHelper

Umożliwia to uruchamianie modułów testowych na urządzeniach, które prawidłowo i wykonaj testy.

Co zrobić, jeśli nie można przeprowadzić testu na żadnym urządzeniu?

Jeśli żadne dostępne urządzenia nie mają zasobu pasującego do modułu testowego, Moduł testowy zakończył się niepowodzeniem i został pominięty, bo nie może zostać prawidłowo wykonany.

Jeśli na przykład moduł testowy żąda uruchomienia karty SIM, ale żadne urządzenie nie ma SIM, moduł testowy ulega awarii.

Implementacja

Prześlij tę flagę funkcji do głównego wiersza poleceń Tradefed:

--enable-token-sharding