Настроить шардинг

Эта страница описывает то , что можно настроить для ванной модуля ( AndroidTest.xml ) через сегментирование и получить лучшие скоростные характеристики при непрерывном выполнении в лаборатории. Мы попытаемся описать варианты в общей манере с рациональным использованием каждого из них.

При непрерывном запуске набора в лаборатории он обычно разделяется на несколько устройств, чтобы сократить общее время выполнения. Обвязка обычно пытается сбалансировать время выполнения каждого осколка, чтобы минимизировать общее время завершения (когда завершается последний осколок); но из-за характера некоторых тестов у нас не всегда достаточно самоанализа, и нам нужно, чтобы владелец модуля настроил какое-то поведение.

Разделяемый или не шардабельный?

Можно пометить модуль ( AndroidTest.xml ) с <option name="not-shardable" value="true" /> , чтобы уведомить упряжь , что она не должна быть sharded.

В типичном модуле правильное решение - позволить жгуту сегментировать ваш модуль (поведение по умолчанию). Но в некоторых случаях вы можете захотеть переопределить это поведение:

  • Когда установка вашего модуля стоит дорого:

Разделение модуля приводит к подготовке (установка APK, push-файл и т. Д.), Возможно, запускаемой один раз для каждого задействованного устройства. Если настройка вашего модуля долгая и дорогая и не стоит тиражирования по сравнению со средой выполнения теста, вам следует пометить свой модуль как не подлежащий сегментированию.

  • Когда количество тестов в вашем модуле невелико:

Разделение модуля приводит к тому, что все тестовые примеры могут выполняться независимо на разных устройствах. Это относится к первому пункту; если у вас мало тестов, вы можете закончить с одним тестом или без теста в некоторых шардах, что сделало бы любой этап подготовки довольно дорогостоящим. Например, установка APK для одного тестового примера обычно не стоит того.

Инструментальные тесты: максимальное количество осколков?

Приборостроение тест работает через AndroidJUnitTest не подвергать жгут сколько испытаний являются частью приборов , пока мы на самом деле не установить и запустить APK. Эти операции являются дорогостоящими и не могут быть выполнены во время сегментирования для всех модулей, входящих в комплект.

Обвязка может перегружать инструментальный тест и в конечном итоге получить несколько пустых осколков; разделение инструментального теста с пятью тестами на шесть сегментов дает пять сегментов с одним тестом и один сегмент без тестов. Для каждого из этих сегментов потребуется дорогостоящая установка APK.

Поэтому , когда число испытаний в тестовом приборостроение APK низкое, мечения модуля с <option name="not-shardable" value="true" /> позволит Жгутому знать сегментирование , что модуль не стоит.

AndroidJUnitTest бегун имеет специальную опцию , позволяющую ему указать максимальное количество осколков оно разрешено осколок в: <option name="ajur-max-shard" value="5" /> .

Это позволяет указать максимальное количество сегментов инструментария независимо от количества сегментов, запрошенных на уровне вызова. По умолчанию инструментарий будет разделен на количество сегментов, запрошенных для вызова.

Например, если тест приборов APK содержит только два тестовых , но вы все еще хотите шард его, имея ajur-max-shard значение 2 будет гарантировать , что Вы не создаете пустые черепки.