Konfigurowanie podziału na fragmenty

Na tej stronie opisano, co można dostosować w przypadku modułu pakietu (AndroidTest.xml) za pomocą dzielenia na fragmenty, aby uzyskać największą szybkość podczas ciągłego wykonywania w laboratorium. Postaramy się opisać opcje w ogólny sposób, podając uzasadnienie dla każdego z nich.

Podczas ciągłego uruchamiania zestawu w laboratorium jest on zwykle dzielony na kilka części i uruchamiany na kilku urządzeniach, aby skrócić łączny czas ukończenia. Zwykle próbuje zrównoważyć czas wykonywania poszczególnych fragmentów, aby zminimalizować całkowity czas ukończenia (czyli do momentu zakończenia ostatniego fragmentu). Jednak ze względu na charakter niektórych testów nie zawsze mamy wystarczającą ilość informacji i musimy poprosić właściciela modułu o dostosowanie niektórych ustawień.

Czy można go dzielić na fragmenty?

Aby poinformować szkielet, że moduł (AndroidTest.xml) nie powinien być dzielony, możesz oznaczyć go tagiem (<option name="not-shardable" value="true" />).

W typowym module dozwolenie na podział modułu przez mechanizm (zachowanie domyślne) jest właściwym rozwiązaniem. W niektórych przypadkach możesz jednak chcieć zmienić to zachowanie:

  • Jeśli konfiguracja modułu jest droga:

Dzielenie modułu powoduje przygotowanie (instalację pliku APK, przesłanie pliku itp.) prawdopodobnie raz na urządzenie. Jeśli konfiguracja modułu jest czasochłonna i droga oraz nie warto jej powielać w porównaniu z czasem działania testu, należy oznaczyć moduł jako nienadający się do powielenia.

  • Jeśli liczba testów w module jest niska:

Dzielenie modułu na fragmenty powoduje, że wszystkie przypadki testowe mogą być wykonywane niezależnie na różnych urządzeniach. Jest to związane z pierwszym punktem. Jeśli liczba testów jest niewielka, w niektórych fragmentach może się okazać, że jest tylko jeden test lub wcale go nie ma. W takim przypadku każdy etap przygotowania będzie dość kosztowny. Instalowanie pliku APK na potrzeby pojedynczego testu zwykle nie jest opłacalne.

Testy instrumentacji: maksymalna liczba fragmentów?

Test z instrumentacją wykonywany za pomocą AndroidJUnitTest nie ujawnia zestawowi narzędzi, ile testów jest częścią instrumentacji, dopóki nie zainstalujemy i nie uruchomimy pliku APK. Te operacje są kosztowne i nie mogą być wykonywane w momencie dzielenia na części wszystkich modułów należących do pakietu.

Zestaw narzędzi może podzielić testowanie pomiarów na zbyt dużą liczbę fragmentów, co spowoduje, że niektóre z nich będą puste. Podzielenie testu pomiarów na 5 testów w 6 fragmentach spowoduje, że 5 fragmentów będzie zawierać po 1 test, a 1 fragment nie będzie zawierać żadnego testu. Każdy z tych fragmentów wymagałby kosztownej instalacji pliku APK.

Jeśli liczba testów w pliku APK testu z instrumentacją jest niewielka, oznaczenie modułu za pomocą tagu <option name="not-shardable" value="true" /> pozwoli platformie Harness wiedzieć, że podział tego modułu nie jest opłacalny.

Usługa AndroidJUnitTest ma specjalną opcję, która umożliwia określenie maksymalnej liczby fragmentów, na które może podzielić dane:<option name="ajur-max-shard" value="5" />.

Umożliwia to określenie maksymalnej liczby fragmentacji instrumentacji niezależnie od liczby fragmentów zażądanych na poziomie wywołania. Domyślnie instrumentacja zostanie podzielona na żądaną liczbę fragmentów wywołania.

Jeśli na przykład plik APK testu z instrumentacją zawiera tylko 2 przypadki testowe, ale nadal chcesz go podzielić na fragmenty, wartość ajur-max-shard 2 zapewni, że nie utworzysz pustych fragmentów.