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 удалите ваше приложение.