Вспомогательный модуль 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.