Google стремится продвигать расовую справедливость для черных сообществ. Смотри как.
Эта страница была переведа с помощью Cloud Translation API.
Switch to English

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

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

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

Shardable или не Shardable?

Можно пометить модуль ( 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" /> позволит использовать информацию о том, что sharding этого модуля не стоит.

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

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

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