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

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

OEM-производители, которые хотят настроить Android UI во время разработки продукта и которым необходимо пройти 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.