Тестирование платформы Android

В Android Open Source Project (AOSP) есть несколько инструментов и наборов тестов для проверки различных частей реализации. Прежде чем использовать страницы в этом разделе, ознакомьтесь со следующими терминами:

Устройство, совместимое с Android
Устройство, на котором можно запускать любые сторонние приложения, написанные сторонними разработчиками с помощью Android SDK и NDK. Устройства, совместимые с Android, должны соответствовать требованиям, изложенным в перечне условий совместимости (CDD), и пройти проверку Compatibility Test Suite (CTS). Устройства, совместимые с Android, могут участвовать в экосистеме Android, которая включает потенциальное лицензирование Google Play, потенциальное лицензирование набора приложений и API Google для мобильных устройств (GMS) и использование товарного знака Android. Любой может использовать исходный код Android, но чтобы устройство считалось частью экосистемы Android, оно должно быть совместимо с этой ОС.
artifact
Журнал, связанный со сборкой, который позволяет устранять неполадки на локальном уровне.
Документ с определением совместимости (CDD)
Документ, в котором перечислены требования к программному и аппаратному обеспечению для устройства, совместимого с Android.
Compatibility Test Suite (CTS)

Бесплатный набор тестов коммерческого уровня, доступный для скачивания в виде двоичного файла или исходного кода в AOSP. CTS – это набор модульных тестов, которые можно интегрировать в ежедневный рабочий процесс. Цель CTS – выявить несовместимости и обеспечить совместимость ПО на протяжении всего процесса разработки.

CTS и тесты платформы не являются взаимоисключающими. Вот несколько общих рекомендаций:

  • Если тест проверяет правильность функций или поведения API фреймворка и должен быть принудительно выполнен для всех OEM-партнеров, он должен быть в CTS.
  • Если тест предназначен для выявления регрессий при разработке платформы, может требовать привилегированных разрешений и зависеть от деталей реализации (как в AOSP), то это должен быть тест платформы.
Google для мобильных устройств (GMS)

Набор приложений и API Google, которые можно предустановить на устройства.

GoogleTest (GTest)

Фреймворк для тестирования и имитации на C++. Обычно двоичные файлы GTest обращаются к уровням абстракции более низкого уровня или выполняют необработанный IPC для различных системных служб. Подход к тестированию с помощью GTest обычно тесно связан с тестируемым сервисом. CTS содержит фреймворк GTest.

инструментальный тест

Специальная среда выполнения тестов, запускаемая командой am instrument, в которой целевой процесс приложения перезапускается и инициализируется с базовым контекстом приложения, а в виртуальной машине процесса приложения запускается поток инструментации. CTS содержит инструментальные тесты.

Logcat

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

logging

Использование журнала для отслеживания событий компьютерной системы, например ошибок. Ведение журналов в Android – сложный процесс, поскольку в инструменте Logcat сочетаются разные стандарты.

postsubmit test

Тест Android, который выполняется, когда в общую ветку ядра добавляется новый патч. Если ввести aosp_kernel в качестве частичного названия ветки, вы увидите список веток ядра с доступными результатами. Например, результаты для android-mainline можно найти на странице https://ci.android.com/builds/branches/aosp_kernel-common-android-mainline/grid.

Тестирование перед отправкой

Тест, используемый для предотвращения сбоев в общих ядрах.

Федерация торговли

Также называется Tradefed. Это платформа для непрерывного тестирования, предназначенная для запуска тестов на устройствах Android. Например, Tradefed используется для запуска тестов Compatibility Test Suite и Vendor Test Suite.

Vendor Test Suite (VTS)

Набор функций для тестирования Android, продвижения процесса разработки на основе тестирования и автоматизации тестирования уровня абстрагирования оборудования (HAL) и ядра ОС.

Типы тестов платформы

Платформенный тест обычно взаимодействует с одним или несколькими сервисами системы Android или уровнями HAL, проверяет функциональность тестируемого объекта и подтверждает правильность результатов тестирования. Тестирование платформы может:

  • (Тип 1) API фреймворка, использующие фреймворк Android. В частности, могут использоваться следующие API:
    • Общедоступные API для сторонних приложений
    • Скрытые API, предназначенные для приложений с особыми правами доступа, например системные API или частные API (@hide, protected или package private).
  • (Тип 2) Вызов системных сервисов Android с помощью необработанных прокси-серверов Binder или IPC напрямую.
  • (Тип 3) Взаимодействовать напрямую с HAL с помощью низкоуровневых API или интерфейсов IPC.

Тесты типов 1 и 2 обычно являются инструментальными, а тесты типа 3 – GTest.

Что дальше?

Ниже приведен список документов, в которых можно найти более подробную информацию: