Торговая архитектура

В этом разделе описывается внутреннее устройство Tradefed и его взаимосвязь. Подробнее см. на связанных подстраницах.

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

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

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

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

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

Подробности глобальной конфигурации

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

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

Подробности хранилища ключей

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

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

Планировщик тестовых команд

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

Поставщик сборки

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

Средство для подготовки и очистки мишеней

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

Тест-бегун

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

Репортер результатов

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

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

Сборщик метрик

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

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

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

Дополнительные возможности

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

Шардинг Tradefed

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

Подробности шардинга

Использование SL4A

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

SL4A с данными Tradefed

Динамическая загрузка @option

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

Динамическая загрузка @option