Trade Federation (Tradefed или TF) – это фреймворк для непрерывного тестирования, предназначенный для запуска тестов на устройствах Android. Например, Tradefed используется для запуска Compatibility Test Suite (CTS) и Vendor Test Suite (VTS).
Trade Federation – это приложение на языке Java, которое работает на главном компьютере и взаимодействует с одним или несколькими устройствами Android с помощью ddmlib (библиотеки, лежащей в основе DDMS) через adb.
Ниже перечислены некоторые из основных функций TF, а также пара примеров использования. Если вы хотите сразу приступить к работе, перейдите на страницу Начало работы.
Функции
- модульная, гибкая и масштабируемая архитектура;
- имеет встроенную поддержку для запуска различных типов тестов Android: инструментированных, uiautomator, нативных/gtest, JUnit на основе хоста и т. д.
- обеспечивает надежность и механизмы восстановления поверх adb;
- поддерживает планирование и выполнение тестов на нескольких устройствах параллельно;
Актуальную информацию о том, как запускать существующие тесты, например инструментальные, можно найти в разделе Тестирование с помощью TF.
Примеры использования
Благодаря модульности Trade Federation легко интегрируется в среды с существующими инфраструктурами сборки, тестирования и отчетности. Ниже мы перечислим несколько примеров использования, в которых Tradefed может обеспечить эффективные и масштабируемые методы тестирования.
Для начала полезно рассмотреть потенциальные сценарии использования с точки зрения вопроса "какие части можно изменять, а какие статичны?". Например, производитель устройства может изменить фреймворк, систему и оборудование, но не может повлиять на существующие приложения. Разработчик приложения может изменять его, но у него мало возможностей контролировать большинство аспектов системы или фреймворка.
Поэтому у каждого объекта в каждом варианте использования будут разные цели тестирования и разные варианты действий в случае сбоя. Несмотря на эти различия, Trade Federation может помочь сделать каждый из этих процессов тестирования эффективным, гибким и масштабируемым.
Производитель устройства
OEM-производитель создает аппаратное обеспечение и часто настраивает систему и фреймворки Android для оптимальной работы на этом оборудовании. Производитель оригинального оборудования может стремиться к достижению этих целей, сохраняя стабильность и производительность на уровне оборудования и системы, а также обеспечивая совместимость с существующими приложениями.
Производитель устройства может реализовать модуль прошивки, который будет выполняться на этапе настройки целевого устройства жизненного цикла. Этот модуль будет полностью контролировать устройство в течение периода выполнения, что позволит ему принудительно перевести устройство в загрузчик, выполнить прошивку, а затем принудительно перезагрузить устройство в режим пользовательского пространства. В сочетании с модулем, который подключается к системе непрерывной сборки, это позволит OEM-производителю тестировать устройство по мере внесения изменений во встроенное ПО на уровне системы и фреймворки на уровне Java.
После полной загрузки устройства OEM сможет использовать существующие тесты на основе JUnit или написать новые, чтобы проверить нужные функции. Наконец, они могут написать один или несколько модулей для отправки отчетов о результатах, чтобы связать их с существующими хранилищами результатов тестирования или отправлять результаты напрямую (например, по электронной почте).
Разработчик приложений
Разработчик приложений создает приложение, которое должно хорошо работать на разных версиях платформы и разных устройствах. Если проблема возникает на определенной версии платформы и/или устройстве, единственное решение – добавить обходной путь и двигаться дальше. Для крупных разработчиков тестирование может быть частью непрерывного процесса сборки. Для небольших компаний это может быть периодический или ручной процесс.
Большинство разработчиков приложений будут использовать модули тестовой установки APK, которые уже существуют в TF. Существует версия, которая устанавливает приложения из локальной файловой системы, а также версия, которая может устанавливать APK-файлы, скачанные из сервиса сборки. Важно отметить, что последняя версия будет продолжать работать должным образом с произвольно большим количеством экземпляров TF, работающих на одном хост-компьютере.
Поскольку TF хорошо работает с несколькими устройствами, классифицировать результаты тестирования по типу устройства, на котором оно проводилось, не составит труда. Таким образом, TF может создавать двумерную (или многомерную) матрицу совместимости для каждой сборки приложения.
Сервис тестирования
Например, тестовый сервис может позволять разработчикам приложений отправлять приложения и запускать тесты на устройствах, оснащенных инструментами измерения энергопотребления, чтобы определить, сколько энергии расходует приложение. Это отличается от двух предыдущих вариантов использования тем, что создатель сервиса не контролирует устройства или приложения, которые запускаются.
Поскольку Trade Federation может запустить любой класс Java, реализующий простой интерфейс IRemoteTest, написать драйверы, которые могут координировать работу внешнего оборудования с тестовым сценарием, выполняемым на устройстве, не составит труда. Сам драйвер может создавать потоки, отправлять запросы на другие серверы или выполнять любые другие необходимые действия. Кроме того, простота и универсальность интерфейса отчетов о результатах ITestInvocationListener означает, что произвольные результаты тестирования (включая, например, числовые показатели мощности) также легко представить в стандартном конвейере отчетов о результатах.