Google is committed to advancing racial equity for Black communities. See how.
Эта страница была переведа с помощью Cloud Translation API.
Switch to English

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

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

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

Разделяется или не разлагается?

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

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

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

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

  • Когда в вашем модуле мало тестов:

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

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

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

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

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

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

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

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