Для Android 11 и выше вспомогательные модули взаимодействия устройств в рамках пакета тестов совместимости (CTS) позволяют настраивать взаимодействие определенных тестов CTS с пользовательским интерфейсом (UI) на конкретном устройстве. Это означает, что такие действия, как замена элемента 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из описания устройства. Это полностью предотвратит использование вспомогательных функций в данной сборке. - Перед запуском CTS удалите вспомогательный APK-файл из каталога
testcases. Это предотвратит использование вспомогательных файлов в любых запусках до тех пор, пока APK-файл не будет восстановлен вtestcases.
Вы можете изменить настройки по умолчанию с помощью аргументов Tradefed и свойства ro.vendor.cts_interaction_helper_packages , откуда загружается вспомогательный APK-файл.
Ниже приведены ожидаемые значения или диапазоны для каждого из доступных параметров.
-
ro.vendor.cts_interaction_helper_packages— это строка, разделённая двоеточиями, содержащая имена пакетов. Она может принимать любое значение, являющееся допустимым вариантом пакета для реализации вспомогательного модуля от производителя оборудования. -
cts-tradefedпринимает аргументdevice-interaction-helper:property-name, который временно изменяет ожидаемое свойство для одного запуска теста, например,--module-arg 'CtsPrintTestCases:{device-interaction-helper}property-name:debug.cts.hlp'. Значение свойства name может быть любым свойством, которое вы установили на устройстве. Значение свойства подчиняется тем же ограничениям, что и свойствоro.vendor.cts_interaction_helper_packagesописанное выше.
Тестирование с использованием пользовательских настроек
По умолчанию эталонные реализации проходят проверку CTS на стандартном Android. Убедитесь, что партнерские реализации проходят проверку CTS с учетом настроек пользовательского интерфейса. Запустите те модули CTS, которые охватывают пользовательский интерфейс или функции, которые вы настроили.
Некоторые модули или вспомогательные функции CTS могут пока не поддерживать определенные настройки.
- Модуль CTS, взаимодействующий с настраиваемым вами пользовательским интерфейсом, может не использовать вспомогательную структуру. Ожидается, что модули CTS будут переходить на вспомогательную структуру в зависимости от спроса и приоритетов ответственного за тестирование. Подавайте запросы на преобразование на ранних этапах процесса, чтобы гарантировать включение преобразования в график, аналогично запросам на изменения в CTS для поддержки запланированных функций.
- Функции, предоставляемые существующими вспомогательными функциями, могут не в полной мере удовлетворять вашим потребностям в настройке. Вспомогательные функции должны абстрагироваться от зависимостей пользовательского интерфейса. Если вспомогательная функция косвенно зависит от пользовательского интерфейса, это можно рассматривать аналогично ошибкам в CTS.