CTS для мгновенных приложений

Instant Apps — ключевая функция 10, поэтому важно, чтобы они работали правильно. Instant Apps устанавливаются неявно, поэтому у них ограниченный набор возможностей, и они работают в более строгой изолированной среде безопасности. Из-за всепроникающей природы этих ограничений любая часть системы подвержена риску неправильной работы с Instant Apps. Тестовый поднабор CTS создается для обеспечения работы поведения, разрешенного Instant Apps. Основная идея заключается в минимизации роста размера CTS путем изоляции минимального набора тестов для переноса. Работа CTS в режиме Instant Apps означает установку тестового APK как Instant App и запуск тестов.

Ограничения мгновенного приложения

Мгновенные приложения не устанавливаются пользователем, поэтому они работают в ограниченной изолированной среде со следующими ограничениями:

  • Может иметь только определенные разрешения.
  • Невозможно увидеть другие приложения, если они не отмечены как видимые для Instant Apps.
  • Возможен доступ только к определенным системным настройкам.
  • Возможен доступ только к определенным свойствам системы.
  • Невозможно раскрыть услуги/поставщиков.
  • Может принимать и отправлять сообщения с соблюдением специальных правил для широковещательных сообщений.

Кроме того, Instant Apps должны согласиться на то, чтобы новая песочница безопасности добавляла больше ограничений. Этот широкий спектр специального поведения вокруг Instant Apps охватывает всю платформу, поэтому должен быть способ проверки того, что Instant Apps работают так, как ожидается, для всех устройств в экосистеме.

Тесты, запущенные в режиме Instant Apps

Не все модули CTS имеют тесты, применимые к Instant Apps. Если функциональность, тестируемая модулем, взаимодействует с системным сервером, то эти тесты следует запускать в режиме Instant Apps. Например, тесты OpenGL не взаимодействуют с системным сервером, поэтому нет необходимости запускать их в режиме Instant Apps, в то время как тесты доступности взаимодействуют с системным сервером, но есть необходимость запускать их в режиме Instant Apps.

Помимо определения применимых модулей, пользователям необходимо определить, какие тесты в этих модулях являются релевантными. Например, тестирование поведения, специфичного для служб, для подключаемой архитектуры (например, AccessibilityService) неприменимо для режима Instant App, поскольку Instant App не может предоставлять службы другим приложениям (включая платформу), в то время как тесты, проверяющие поведение на стороне приложения, применимы для режима Instant App. Другим примером является тест, проверяющий поведение за разрешением, которое Instant App не может содержать, и нерелевантно для режима Instant App. Существует набор тестов, которые применяются только к Instant Apps, которые проверяют правила их поведения, например, не предоставлять службы или не видеть другие приложения. Обычно они уже написаны и не требуют портирования.

Сбои в тестировании в режиме Instant Apps

Если тест не пройден, потому что он проверяет функциональность, к которой Instant Apps не может получить доступ, то он неприменим в режиме Instant Apps. Отметьте тест для запуска только в режиме Full App, аннотировав его @AppModeFull . Вы можете применить эту аннотацию к уровню класса, чтобы исключить все тесты в нем.

Если тест не пройден из-за того, что некоторые функции, доступные в приложениях Instant Apps, неисправны, сообщите об ошибке .

Поиск неисправностей

Если ваш тест не удается с Failed to install MyCtsModule.apk on DEVICE. Reason: '-116' , найдите сообщения PackageManager в logcat. Например, если там написано Can't replace Full App with Instant App: your_app , то adb сначала удалит ваше приложение.