Вспомогательный модуль взаимодействия с устройством CTS

Для Android 11 и более поздних версий вспомогательные модули взаимодействия с устройствами из набора тестов совместимости (CTS) позволяют настраивать взаимодействие определённых тестов CTS с пользовательским интерфейсом (UI) на конкретном устройстве. Это означает, что такие действия, как замена элемента пользовательского интерфейса, не описанного в документе определения совместимости Android (CDD) или документации API, могут выполняться без прохождения CTS.

OEM-производители, желающие настроить пользовательский интерфейс Android в процессе разработки продукта и прошедшие сертификацию CTS, могут реализовать вспомогательные модули. Если вы используете реализацию Android по умолчанию, никаких дополнительных действий не требуется.

Реализация вспомогательных модулей

Требования к настройке пользовательского интерфейса

Проверьте модули CDD или Mainline на наличие требований к пользовательскому интерфейсу. Если требуемый пользовательский интерфейс входит в модули CDD или Mainline, то его невозможно настроить.

Если тесты CTS, взаимодействующие с желаемым пользовательским интерфейсом, не используют вспомогательный фреймворк, то этот интерфейс невозможно настроить. Перед изменением пользовательского интерфейса обратитесь к владельцу теста, чтобы преобразовать тестовый модуль.

В противном случае вы можете настроить пользовательский интерфейс.

Рабочий процесс внедрения

  1. Настройте пользовательский интерфейс в соответствии с потребностями вашего конкретного продукта.
  2. Назначьте существующие вспомогательные модули AOSP подклассами для тестовых модулей CTS, которые должны взаимодействовать с пользовательским интерфейсом. Замените необходимые взаимодействия в соответствии с настроенным пользовательским интерфейсом. Замены различаются в зависимости от типа изменений.
    • Подклассы OEM находятся в пакете OEM, например com.[oem].cts.helpers .
    • Каждый подкласс OEM назван с использованием общего префикса, который отличает его от реализации AOSP, которая имеет префикс Default .
  3. Создайте вспомогательные компоненты в 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 необязателен.
  4. Настройте свойство ro.vendor.cts_interaction_helper_packages в образе устройства, чтобы включить имя APK. Если вам нужно разделить реализации вспомогательных функций между несколькими APK, это свойство может содержать список пакетов, разделенных двоеточиями.
  5. Убедитесь, что APK-файл доступен в каталоге testcases при запуске Tradefed для CTS. При необходимости проверьте, выбран ли ожидаемый класс реализации вспомогательного метода, изучив сообщения logcat.
  6. Необязательно, но настоятельно рекомендуется: отправьте реализацию своего вспомогательного инструмента в 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.