Для Android 11 и более поздних версий вспомогательные модули взаимодействия с устройствами из набора тестов совместимости (CTS) позволяют настраивать взаимодействие определённых тестов CTS с пользовательским интерфейсом (UI) на конкретном устройстве. Это означает, что такие действия, как замена элемента пользовательского интерфейса, не описанного в документе определения совместимости Android (CDD) или документации API, могут выполняться без прохождения CTS.
OEM-производители, желающие настроить пользовательский интерфейс Android в процессе разработки продукта и прошедшие сертификацию CTS, могут реализовать вспомогательные модули. Если вы используете реализацию Android по умолчанию, никаких дополнительных действий не требуется.
Реализация вспомогательных модулей
Требования к настройке пользовательского интерфейса
Проверьте модули CDD или Mainline на наличие требований к пользовательскому интерфейсу. Если требуемый пользовательский интерфейс входит в модули CDD или Mainline, то его невозможно настроить.
Если тесты CTS, взаимодействующие с желаемым пользовательским интерфейсом, не используют вспомогательный фреймворк, то этот интерфейс невозможно настроить. Перед изменением пользовательского интерфейса обратитесь к владельцу теста, чтобы преобразовать тестовый модуль.
В противном случае вы можете настроить пользовательский интерфейс.
Рабочий процесс внедрения
- Настройте пользовательский интерфейс в соответствии с потребностями вашего конкретного продукта.
- Назначьте существующие вспомогательные модули AOSP подклассами для тестовых модулей CTS, которые должны взаимодействовать с пользовательским интерфейсом. Замените необходимые взаимодействия в соответствии с настроенным пользовательским интерфейсом. Замены различаются в зависимости от типа изменений.
- Подклассы OEM находятся в пакете OEM, например
com.[oem].cts.helpers. - Каждый подкласс OEM назван с использованием общего префикса, который отличает его от реализации AOSP, которая имеет префикс
Default.
- Подклассы OEM находятся в пакете OEM, например
- Создайте вспомогательные компоненты в APK-файле, следуя этим соглашениям по запуску тестов.
-
Android.bpдолжен объявитьandroid_test_helper_appс тем же именем, что и содержащийся в нем пакет. -
AndroidManifest.xmlдля APK необходимо объявить свойство метаданных с именемinteraction-helpers-prefixсо значением префикса класса, выбранного в предыдущем пункте. - Приложение должно зависеть от
cts-helpers-core,cts-helpers-interfacesиcom.android.cts.helpers.aosp. Если OEM-помощники полностью реализуют все необходимые интерфейсы, тоcom.android.cts.helpers.aospнеобязателен.
-
- Настройте свойство
ro.vendor.cts_interaction_helper_packagesв образе устройства, чтобы включить имя APK. Если вам нужно разделить реализации вспомогательных функций между несколькими APK, это свойство может содержать список пакетов, разделенных двоеточиями. - Убедитесь, что APK-файл доступен в каталоге
testcasesпри запуске Tradefed для CTS. При необходимости проверьте, выбран ли ожидаемый класс реализации вспомогательного метода, изучив сообщения logcat. - Необязательно, но настоятельно рекомендуется: отправьте реализацию своего вспомогательного инструмента в AOSP или сделайте ее доступной для стороннего тестирования.
Пример реализации помощника
Например, CtsPrintTestCases ожидает вспомогательный метод с интерфейсом, определённым в ICtsPrintHelper . Реализация AOSP называется com.android.cts.helpers.aosp.DefaultCtsPrintHelper .
Если вы настраиваете пользовательский интерфейс печати, вы можете создать com.oem.cts.helpers.OemCtsPrintHelper , который является подклассом DefaultCtsPrintHelper . android_test_helper_app в Android.bp называется com.oem.cts.helpers , который создает com.oem.cts.helpers.apk и объявляет interaction-helpers-prefix как Oem в AndroidManifest.xml .
Свойство устройства ro.vendor.cts_interaction_helper_packages имеет значение com.oem.cts.helpers .
Референтные реализации
Референтные реализации включают интерфейсы в каталоге cts/libs/helpers и вспомогательные функции AOSP по умолчанию в каталоге cts/helpers . Интерфейс верхнего уровня документирован в файле cts/libs/helpers/core/src/com/android/cts/helpers/ICtsDeviceInteractionHelper.java .
Чтобы подключить тест CTS к его помощникам, владельцы тестов могут использовать определение @Rule , задокументированное в cts/libs/helpers/core/src/com/android/cts/helpers/DeviceInteractionHelperRule.java .
Каждый модуль CTS, использующий фреймворк и его ожидаемое вспомогательное поведение, документирован в интерфейсе, определенном в cts/libs/helpers/core/src/com/android/cts/helpers .
Проведение тестов CTS
Тестирование без помощников
За исключением одного свойства, возможность тестирования без вспомогательных функций недоступна во время выполнения на устройстве, но опционально изменяет взаимодействие тестов CTS с устройством. Если вам нужно запустить CTS без вспомогательных функций, у вас есть два варианта:
- Удалите свойство
ro.vendor.cts_interaction_helper_packagesиз устройства. Это полностью исключит возможность использования вспомогательных функций в этой сборке. - Удалите вспомогательный APK-файл из каталога
testcasesперед запуском CTS. Это предотвратит использование вспомогательных APK-файлов при других запусках до тех пор, пока APK-файл не будет восстановлен вtestcases.
Вы можете изменить настройки по умолчанию с помощью аргументов Tradefed и элемента управления свойством ro.vendor.cts_interaction_helper_packages , откуда загружается вспомогательный APK.
Ожидаемые значения или диапазоны для каждой из доступных настроек см. ниже.
-
ro.vendor.cts_interaction_helper_packages— это строка, разделённая двоеточиями, содержащая имена пакетов. Она может принимать любое значение, являющееся допустимым выбором пакета для реализации вспомогательного модуля OEM. -
cts-tradefedпринимает аргументdevice-interaction-helper:property-name, который временно изменяет ожидаемое свойство для одного тестового запуска, например--module-arg 'CtsPrintTestCases:{device-interaction-helper}property-name:debug.cts.hlp'. Значением имени свойства может быть любое свойство, заданное на устройстве. Значение свойства подчиняется тем же ограничениям, что и свойствоro.vendor.cts_interaction_helper_packages, описанное выше.
Тестирование с настройками
По умолчанию эталонные реализации проходят CTS на стандартной версии Android. Убедитесь, что партнёрские реализации проходят CTS с настройками пользовательского интерфейса. Запустите все модули CTS, охватывающие настроенный вами пользовательский интерфейс или функции.
Некоторые модули или помощники CTS могут пока не поддерживать некоторые настройки.
- Модуль CTS, взаимодействующий с пользовательским интерфейсом, который вы хотите настроить, может не использовать вспомогательный фреймворк. Ожидается, что модули CTS будут конвертироваться во вспомогательный фреймворк в зависимости от спроса и приоритетов владельца теста. Подавайте запросы на конвертацию на ранних этапах процесса, чтобы гарантировать её выполнение по графику, аналогично запросам на внесение изменений в CTS для поддержки запланированных функций.
- Функции, предоставляемые существующим вспомогательным методом, могут не полностью соответствовать вашим потребностям в настройке. Вспомогательные функции должны абстрагироваться от зависимостей пользовательского интерфейса. Если вспомогательная функция косвенно зависит от пользовательского интерфейса, это можно обрабатывать аналогично ошибкам в CTS.