blob: 8beb0ed0ce67a80b3de3fe17139809c7ea496216 [file] [log] [blame]
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] &lt;permission.name&gt; ...</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 &lt;packageName&gt; true
</pre>
</li>
<li>Смоделируйте выход приложения из ждущего режима, выполнив следующую команду:
<pre>$ adb shell am set-idle &lt;packageName&gt; false</pre>
</li>
<li>Понаблюдайте за поведением приложения, когда оно возобновляет свою работу. Убедитесь, что оно
выходит из ждущего режима без сбоев. Обратите особое внимание на работу уведомлений и выполнение фоновых задач приложения
.</li>
</ol>
<h2 id="ids">Автоматическое резервное копирование для приложений и идентификаторы устройств</h2>
<p>Если во внутреннем хранилище вашего приложения имеются какие-либо идентификаторы устройства, такие как идентификатор Google
Cloud Messaging,
обязательно воспользуйтесь советами и рекомендациями, приведенными в статье
<a href="{@docRoot}preview/backup/index.html">Автоматическое резервное копирование для приложений</a>,чтобы исключить расположение
хранилища из списка объектов для автоматического резервного копирования. </p>