page.title=Руководство по тестированию page.image=images/cards/card-build_16x9_2x.png page.keywords=ресурсы для предварительной версии,androidm,тестирование,разрешения @jd:body <div id="qv-wrapper"> <div id="qv"> <h2>Содержание документа</h2> <ol> <li><a href="#runtime-permissions">Тестирование разрешений</a></li> <li><a href="#doze-standby">Тестирование режима «Doze» и ждущего режима для приложений</a></li> <li><a href="#ids">Автоматическое резервное копирование и идентификаторы устройств</a></li> </ol> </div> </div> <p> Android M Developer Preview предлагает вам проверить, как будут работать ваши приложения в следующей версии платформы. В ней реализован ряд изменений в API-интерфейсах и поведении системы, которые могут повлиять на работу вашего приложения, как описано в статьях <a href="{@docRoot}preview/api-overview.html">Обзор API-интерфейсов</a> и <a href="{@docRoot}preview/behavior-changes.html">Изменения в работе</a>. Если вы хотите обеспечить удобство работы пользователей, при тестировании вашего приложения в предварительной версии платформы обратите особое внимание на изменения в системе. </p> <p> В настоящем руководстве приводится порядок тестирования функций предварительной версии с помощью вашего приложения. Советуем при этом обратить особое внимание на работу следующих функций новой версии платформы, поскольку они в значительной мере повлияют на поведение вашего приложения: </p> <ul> <li><a href="#runtime-permissions">разрешения</a>; </li> <li><a href="#doze-standby">режим «Doze» и ждущий режим для приложений</a>; </li> <li><a href="#ids">автоматическое резервное копирование и идентификаторы устройств</a>.</li> </ul> <p> Дополнительные сведения о том, как настроить физические или виртуальные устройства с помощью системного образа предварительной версии платформы к тестированию, представлены в статье <a href="{@docRoot}preview/setup-sdk.html">Настройка SDK Preview</a>. </p> <h2 id="runtime-permissions">Тестирование разрешений</h2> <p> В новой модели <a href="{@docRoot}preview/features/runtime-permissions.html">разрешений</a> изменился подход к тому, каким образом пользователи смогут предоставлять разрешения для вашего приложения. Если раньше пользователь мог предоставить сразу все разрешения в процессе установки, теперь ваше приложение должно запрашивать у него отдельные разрешения во время работы. Это позволяет пользователю контролировать каждую операцию приложения, а также лучше понимать, для чего приложение запрашивает то или иное разрешение. Пользователи могут в любой момент предоставить разрешения для отдельного приложения или отозвать их. Эта новая возможность в предварительной версии платформы, вероятнее всего, повлияет на поведение вашего приложения. Некоторые из его функций могут пострадать или перестать работать. </p> <p class="caution"> Это касается работы всех приложений на новой платформе, даже тех, которые были разработаны для более ранних ее версий. Платформа обеспечивает ограниченную поддержку устаревших приложений, однако вам следует приступить к планированию перехода на новую модель разрешений уже сегодня, чтобы опубликовать обновленную версию вашего приложения к моменту официального выпуска новой платформы. </p> <h3 id="permission-test-tips">Советы по тестированию</h3> <p> Ниже представлены советы по тестированию, которые призваны помочь вам спланировать и провести тестирование вашего приложения с использованием новой модели разрешений. </p> <ul> <li>Определите текущие разрешения приложения и связанные с этим фрагменты кода.</li> <li>Протестируйте различные варианты работы пользователя со службами и данными, защищенными с помощью разрешений.</li> <li>Протестируйте различные сочетания предоставленных и отозванных разрешений.</li> <li>Воспользуйтесь инструментом {@code adb} для управления разрешениями из командной строки: <ul> <li>Получите список разрешений и их состояний по группам: <pre>adb shell pm list permissions -d -g</pre> </li> <li>Предоставьте или отзовите одно или несколько разрешений с помощью следующего синтаксиса:<br> <pre>adb shell pm [grant|revoke] <permission.name> ...</pre> </li> </ul> </li> <li>Проанализируйте работу вашего приложения со службами, использующими разрешения.</li> </ul> <h3 id="permission-test-strategy">Стратегия тестирования</h3> <p> Новая модель разрешений влияет на структуру и дизайн вашего приложения, а также на работу пользователей с приложением и предлагаемые им варианты взаимодействия с вашим продуктом. Проанализируйте, как ваше приложение использует разрешения в настоящее время, и продумайте новые варианты взаимодействия, которые хотите реализовать. В официальном выпуске платформы будет представлена поддержка совместимости, однако мы рекомендует запланировать обновление приложения, не полагаясь на эту поддержку. </p> <p> Определите круг разрешений, которые действительно необходимы для работы вашего приложения, и найдите фрагменты кода, где используются службы, защищенные разрешениями. Для этого протестируйте работу приложения на новой платформе и проанализируйте код. При тестировании следует сосредоточиться на использовании разрешений на выполнение путем изменения параметра {@code targetSdkVersion} приложения для использования предварительной версии. Дополнительные сведения представлены в статье <a href="{@docRoot}preview/setup-sdk.html#">Настройка SDK Preview</a>. </p> <p> Протестируйте работу приложения при различных сочетаниях предоставленных и отозванных разрешений, чтобы определить варианты работы пользователя, которые зависят от разрешений. В случаях, когда зависимость не явная или не логичная, подумайте, можно ли перестроить или структурировать такой вариант работы, чтобы устранить зависимость или четко обозначить, для чего требуется каждое разрешение. </p> <p> Дополнительные сведения о поведении разрешений на выполнение и тестировании, а также советы и рекомендации по данному вопросу представлены на странице <a href="{@docRoot}preview/features/runtime-permissions.html">Разрешения</a>. </p> <h2 id="doze-standby">Тестирование режима «Doze» и ждущего режима для приложений</h2> <p> Режим «Doze» и ждущий режим приложений, предназначенные для экономии энергии, ограничивают объем данных, обрабатываемых вашим приложением в фоновом режиме, когда устройство не используется или приложение неактивно. Ограничения, которые система может налагать на приложения, включают ограничение или отключение доступа к сети, приостановку выполнения фоновых задач, приостановку отправки уведомлений, игнорирование запросов на пробуждение и будильников. Чтобы гарантировать правильную работу приложения в условиях оптимизации энергопотребления, вам следует протестировать ваше приложение, смоделировав эти режимы. </p> <h4 id="doze">Тестирование работы приложения в режиме «Doze»</h4> <p>Ниже представлен порядок тестирования режима «Doze».</p> <ol> <li>Установите на физическое или виртуальное устройство системный образ M Preview.</li> <li>Подключите устройство к компьютеру для разработки и установите ваше приложение.</li> <li>Запустите ваше приложение и не закрывайте его.</li> <li>Смоделируйте переход устройства в режим «Doze», выполнив следующие команды: <pre> $ adb shell dumpsys battery unplug $ adb shell dumpsys deviceidle step $ adb shell dumpsys deviceidle -h </pre> </li> <li>Понаблюдайте за поведением приложения после возвращения устройства в обычный режим. Убедитесь, что при выходе устройства из режима «Doze» приложение должным образом возобновляет свою работу .</li> </ol> <h4 id="standby">Тестирование работы приложения в ждущем режиме</h4> <p>Ниже представлен порядок тестирования ждущего режима для приложений.</p> <ol> <li>Установите на физическое или виртуальное устройство системный образ M Preview.</li> <li>Подключите устройство к компьютеру для разработки и установите ваше приложение.</li> <li>Запустите ваше приложение и не закрывайте его.</li> <li>Смоделируйте переход приложения в ждущий режим, выполнив следующие команды: <pre> $ adb shell am broadcast -a android.os.action.DISCHARGING $ adb shell am set-idle <packageName> true </pre> </li> <li>Смоделируйте выход приложения из ждущего режима, выполнив следующую команду: <pre>$ adb shell am set-idle <packageName> false</pre> </li> <li>Понаблюдайте за поведением приложения, когда оно возобновляет свою работу. Убедитесь, что оно выходит из ждущего режима без сбоев. Обратите особое внимание на работу уведомлений и выполнение фоновых задач приложения .</li> </ol> <h2 id="ids">Автоматическое резервное копирование для приложений и идентификаторы устройств</h2> <p>Если во внутреннем хранилище вашего приложения имеются какие-либо идентификаторы устройства, такие как идентификатор Google Cloud Messaging, обязательно воспользуйтесь советами и рекомендациями, приведенными в статье <a href="{@docRoot}preview/backup/index.html">Автоматическое резервное копирование для приложений</a>,чтобы исключить расположение хранилища из списка объектов для автоматического резервного копирования. </p>