Skonfiguruj fragmentowanie

Ta strona opisuje, co jest możliwe, aby dostroić do modułu z łazienką ( AndroidTest.xml ) poprzez sharding i uzyskać najlepszą wydajność prędkość podczas ciągłego wykonania w laboratorium. Spróbujemy opisać opcje w sposób ogólny z uzasadnieniem użycia każdej z nich.

W przypadku ciągłego uruchamiania pakietu w laboratorium, pakiet jest zwykle dzielony na kilka urządzeń, aby skrócić całkowity czas ukończenia. Uprząż zazwyczaj próbuje zrównoważyć czas wykonania każdego fragmentu, aby zminimalizować całkowity czas ukończenia (kiedy ostatni fragment się skończy); ale ze względu na charakter niektórych testów nie zawsze mamy wystarczającą introspekcję i potrzebujemy właściciela modułu, aby dostroił pewne zachowanie.

Shardable czy nie shardable?

Jest możliwe, aby oznaczyć moduł ( AndroidTest.xml ) z <option name="not-shardable" value="true" /> powiadomić uprząż, że nie powinno być sharded.

W typowym module, pozwolenie shardowi wiązki na moduł (domyślne zachowanie) jest słuszne. Ale w niektórych przypadkach możesz chcieć zastąpić to zachowanie:

  • Gdy konfiguracja twojego modułu jest droga:

Dzielenie modułu na fragmenty powoduje, że przygotowanie (zainstaluj pakiet APK, plik push itp.) może zostać uruchomione raz na urządzenie, którego dotyczy. Jeśli konfiguracja twojego modułu jest długa i kosztowna i nie warta replikacji w porównaniu do środowiska uruchomieniowego testu, powinieneś oznaczyć swój moduł jako nieshardable.

  • Gdy liczba testów w Twoim module jest niska:

Sharding modułu powoduje, że wszystkie przypadki testowe mogą być wykonywane niezależnie na różnych urządzeniach. Odnosi się to do pierwszego punktu; jeśli twoja liczba testów jest niska, możesz skończyć z pojedynczym testem lub brakiem testu w niektórych fragmentach, co sprawiłoby, że każdy krok przygotowawczy byłby dość kosztowny. Na przykład zainstalowanie pakietu APK dla pojedynczego przypadku testowego zwykle nie jest tego warte.

Testy oprzyrządowania: Maksymalna liczba odłamków?

Instrumentacji Test uruchomiony przez AndroidJUnitTest nie wystawiać na uprzęży ile testy są częścią aparatury aż faktycznie zainstalować i uruchomić plik APK. Operacje te są kosztowne i nie można ich wykonać w czasie shardingu dla wszystkich modułów wchodzących w skład pakietu.

Uprząż może nadmiernie uszkodzić test oprzyrządowania i skończyć z kilkoma pustymi odłamkami; sharding test oprzyrządowania z pięcioma testami w sześciu shardach daje pięć shardów z jednym testem i jeden shard bez testów. Każdy z tych odłamków wymagałby kosztownej instalacji APK.

Więc gdy liczba testów w APK testu oprzyrządowanie jest niska, tagowanie moduł z <option name="not-shardable" value="true" /> pozwoliłoby uprząż wiedzieć sharding ten moduł nie jest tego warta.

AndroidJUnitTest biegacz ma specjalną opcję umożliwiającą to, aby określić maksymalną liczbę odłamków jest dozwolony do odłamek w: <option name="ajur-max-shard" value="5" /> .

Pozwala to określić maksymalną liczbę przypadków, gdy instrumentacja może zostać podzielona na fragmenty, niezależnie od liczby żądanych fragmentów na poziomie wywołania. Domyślnie Instrumentacja zostanie podzielona na liczbę fragmentów żądanych dla wywołania.

Na przykład, jeśli badanie oprzyrządowanie APK zawiera tylko dwa przypadki testowe, ale nadal chcesz go shard, o ajur-max-shard wartość 2 zapewniłby nie tworzą pustych odłamki.