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

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

Ограничения приложения с мгновенным запуском

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

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

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

Тесты, выполняемые в режиме Instant Apps

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

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

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

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

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

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

Если ваш тест не пройден с ошибкой «Не удалось установить MyCtsModule.apk на УСТРОЙСТВО». Причина: «-116» , найдите сообщения PackageManager в logcat. Например, если написано « Невозможно заменить полное приложение мгновенным приложением: your_app» , сначала adb удалите ваше приложение.