Na tej stronie opisujemy, jakie elementy można dostroić do modułu pakietu (AndroidTest.xml
) przez fragmentację, aby uzyskać najlepszą szybkość podczas ciągłego wykonywania w module. Postaramy się opisać opcje w ogólny sposób, podając uzasadnienie ich stosowania.
Podczas ciągłego uruchamiania zestawu w laboratorium jest on zwykle dzielony na części i wykonywane 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 pewnych ustawień.
Czy można go dzielić na fragmenty?
Możesz oznaczyć moduł (AndroidTest.xml
) tagiem <option name="not-shardable" value="true" />
, aby poinformować zespół, że nie powinien być podzielony na fragmenty.
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 współdzielenia.
- 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 przypadku testowego zwykle nie jest opłacalne.
Testy instrumentacji: maksymalna liczba fragmentów?
Test z instrumentacją wykonywany za pomocą AndroidJUnitTest nie ujawnia narzędziu testowania, 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 więc liczba testów w pakiecie APK do testów z instrumentami jest niewielka, dodanie tagu <option name="not-shardable" value="true" />
do modułu pozwoli w ten sposób dowiedzieć się, że fragmentowanie nie jest tego warte.
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 tyle fragmentów, ile zostało zażądanych w wywołaniu.
Jeśli na przykład plik APK testu z instrumentacją zawiera tylko 2 przypadki testowe, ale nadal chcesz go dzielić na fragmenty, wartość ajur-max-shard
2
zapewni, że nie będziesz tworzyć pustych fragmentów.