Архитектура Tradefed

В этом разделе описываются внутренние компоненты Tradefed и их взаимосвязи. Подробную информацию можно найти на страницах, ссылки на которые приведены ниже.

Тестовые конфигурации

Конфигурации тестов в Tradefed описываются в формате XML. Понимание структуры конфигурации является ключом к запуску и настройке тестов.

Структура конфигураций TF

Глобальные конфигурации TF

Файл глобальной конфигурации – это специальный файл конфигурации Tradefed XML, который загружается при запуске Tradefed с помощью переменной среды TF_GLOBAL_CONFIG. Он загружает объекты, связанные с областью действия экземпляра Tradefed, которые влияют на общее поведение системы.

Сведения о глобальной конфигурации

Хранилище ключей

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

Сведения о хранилище ключей

Диспетчер устройств

Диспетчер устройств отвечает за отслеживание состояния устройств в запущенном экземпляре Tradefed. Отслеживаются такие аспекты, как статус распределения и статус подключения к интернету.

Тестирование планировщика команд

Планировщик тестовых команд в Tradefed принимает команды для запуска, связывает их с устройствами и запускает вызов теста.

Поставщик

Поставщик сборки — это первый шаг любого вызова теста. Он скачивает ресурсы, необходимые для настройки и запуска тестов (образы сборки, тестовые APK-файлы и т. д.). Также они упоминаются в объекте BuildInfo, который будет передан в тест. В объекте BuildInfo также можно указать ссылки на локальные ресурсы.

Подготовка и очистка цели

Target preparer предлагает дополнительные действия, которые можно предпринять для настройки целевого объекта в определенном состоянии, например, прошивка устройства, установка определенных свойств и подключение к Wi-Fi.

Тестировщик

Средство запуска тестов в Tradefed относится к объекту, ответственному за фактическое выполнение теста. Разные исполнители тестов по-разному управляют выполнением тестов. Например, исполнитель инструментальных тестов будет сильно отличаться от исполнителя тестов JUnit.

Отправитель жалобы на результат

Репортер результатов в Tradefed – это объект, который отправляет результаты в определенное место. Каждая реализация обычно специализируется на разных бэкэндах результатов. А репортер результатов отвечает за преобразование формата результатов Tradefed в целевой формат.

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

Сборщик показателей

Сборщик показателей – это специальный объект в Tradefed, ортогональный выполнению теста. Она позволяет собирать информацию на разных этапах жизненного цикла тестирования (например, в начале и в конце). Поскольку сборщик не связан с самим тестом, точки можно менять, добавлять и удалять, не изменяя тест.

Настройка на уровне хоста

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

Дополнительные функции

В следующих разделах описывается общее использование Tradefed, а не Tradefed. объекты.

Шардинг Tradefed

Если тестовый корпус большой или его выполнение занимает много времени, его можно разделить между несколькими устройствами. Такое разделение называется шардингом. В этом разделе рассказывается, как работает сегментирование и как его настроить.

Сведения о сегментировании

Как использовать SL4A

Tradefed поддерживает уровень скриптов для Android, SL4A, который представляет собой набор инструментов автоматизации для вызова API Android независимо от платформы.

SL4A с информацией о Tradefed

Динамическая загрузка с помощью параметра @option

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

Скачивание динамических объектов типа @option