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

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

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

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

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

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

Тесты выполняются в режиме мгновенных приложений.

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

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

Сбои тестирования в режиме мгновенных приложений.

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

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

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

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