В 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.
Что дальше?
Ниже приведен список документов, в которых можно найти более подробную информацию:
Если вы не знакомы с архитектурой Android, прочитайте обзорную статью.
Если вы создаете устройство, совместимое с Android, ознакомьтесь с обзором программы совместимости Android.
Чтобы интегрировать инструментальные, функциональные, метрические и JAR-тесты хоста в сервис непрерывного тестирования платформы, ознакомьтесь с рабочим процессом разработки тестов.
Чтобы обнаружить уязвимости на устройствах и устранить их, ознакомьтесь с разделом Тестирование безопасности.
Чтобы узнать, как протестировать реализации HAL и ядра, ознакомьтесь со статьей Vendor Test Suite (VTS) и инфраструктура.
Чтобы протестировать приложение, прочитайте статью Основы тестирования приложений для Android и пройдите курс Продвинутая Android-разработка на Kotlin 05.1:основы тестирования, используя предоставленные примеры.
Узнайте о базовом тестировании перед отправкой, доступном с помощью хуков репозитория. Эти хуки можно использовать для запуска линтеров, проверки форматирования и запуска модульного тестирования перед продолжением, например перед загрузкой коммита. По умолчанию эти хуки отключены. Дополнительную информацию можно найти в разделе AOSP Preupload Hooks.
Подробнее о ведении журналов…
Подробнее о том, как отлаживать код платформы Android…