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

Для Android 11 или более поздней версии вспомогательные модули взаимодействия с устройствами Compatibility Test Suite (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 не будет восстановлен в 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.