1page.title=Руководство по тестированию 2page.image=images/cards/card-build_16x9_2x.png 3page.keywords=ресурсы для предварительной версии,androidm,тестирование,разрешения 4 5@jd:body 6 7<div id="qv-wrapper"> 8 <div id="qv"> 9 <h2>Содержание документа</h2> 10 <ol> 11 <li><a href="#runtime-permissions">Тестирование разрешений</a></li> 12 <li><a href="#doze-standby">Тестирование режима «Doze» и ждущего режима для приложений</a></li> 13 <li><a href="#ids">Автоматическое резервное копирование и идентификаторы устройств</a></li> 14 </ol> 15 </div> 16</div> 17 18<p> 19 Android M Developer Preview предлагает вам проверить, как будут работать ваши приложения в следующей версии 20платформы. В ней реализован ряд изменений в API-интерфейсах и поведении системы, 21которые могут повлиять на работу вашего приложения, как описано в статьях <a href="{@docRoot}preview/api-overview.html">Обзор 22API-интерфейсов</a> и <a href="{@docRoot}preview/behavior-changes.html">Изменения в работе</a>. Если вы хотите обеспечить удобство работы пользователей, при тестировании 23вашего приложения в предварительной версии платформы 24 обратите особое внимание на изменения в системе. 25</p> 26 27<p> 28 В настоящем руководстве приводится порядок тестирования функций предварительной версии с помощью вашего приложения. Советуем при этом обратить особое внимание 29на работу следующих функций новой версии платформы, поскольку они в значительной мере повлияют на поведение 30вашего приложения: 31</p> 32 33<ul> 34 <li><a href="#runtime-permissions">разрешения</a>; 35 </li> 36 <li><a href="#doze-standby">режим «Doze» и ждущий режим для приложений</a>; 37 </li> 38 <li><a href="#ids">автоматическое резервное копирование и идентификаторы устройств</a>.</li> 39</ul> 40 41<p> 42 Дополнительные сведения о том, как настроить физические или виртуальные устройства с помощью системного образа предварительной версии платформы 43к тестированию, представлены в статье <a href="{@docRoot}preview/setup-sdk.html">Настройка SDK Preview</a>. 44</p> 45 46 47<h2 id="runtime-permissions">Тестирование разрешений</h2> 48 49<p> 50 В новой модели <a href="{@docRoot}preview/features/runtime-permissions.html">разрешений</a> 51изменился подход к тому, каким образом пользователи смогут предоставлять разрешения для вашего приложения. Если раньше пользователь мог предоставить сразу все 52разрешения в процессе установки, теперь ваше приложение должно запрашивать у него отдельные разрешения 53во время работы. Это позволяет пользователю контролировать каждую операцию приложения, а также 54лучше понимать, для чего приложение запрашивает то или иное разрешение. Пользователи могут в любой момент 55предоставить разрешения для отдельного приложения или отозвать их. Эта новая 56возможность в предварительной версии платформы, вероятнее всего, повлияет на поведение вашего приложения. Некоторые из его функций могут 57пострадать или перестать работать. 58</p> 59 60<p class="caution"> 61 Это касается работы всех приложений на новой платформе, даже тех, которые были разработаны для более ранних ее версий. 62 Платформа обеспечивает ограниченную поддержку устаревших приложений, однако вам следует приступить к 63планированию перехода на новую модель разрешений уже сегодня, чтобы 64опубликовать обновленную версию вашего приложения к моменту официального выпуска новой платформы. 65</p> 66 67 68<h3 id="permission-test-tips">Советы по тестированию</h3> 69 70<p> 71 Ниже представлены советы по тестированию, которые призваны помочь вам спланировать и провести тестирование вашего приложения с использованием новой 72модели разрешений. 73</p> 74 75<ul> 76 <li>Определите текущие разрешения приложения и связанные с этим фрагменты кода.</li> 77 <li>Протестируйте различные варианты работы пользователя со службами и данными, защищенными с помощью разрешений.</li> 78 <li>Протестируйте различные сочетания предоставленных и отозванных разрешений.</li> 79 <li>Воспользуйтесь инструментом {@code adb} для управления разрешениями из командной строки: 80 <ul> 81 <li>Получите список разрешений и их состояний по группам: 82 <pre>adb shell pm list permissions -d -g</pre> 83 </li> 84 <li>Предоставьте или отзовите одно или несколько разрешений с помощью следующего синтаксиса:<br> 85 <pre>adb shell pm [grant|revoke] <permission.name> ...</pre> 86 </li> 87 </ul> 88 </li> 89 <li>Проанализируйте работу вашего приложения со службами, использующими разрешения.</li> 90</ul> 91 92<h3 id="permission-test-strategy">Стратегия тестирования</h3> 93 94<p> 95 Новая модель разрешений влияет на структуру и дизайн вашего приложения, а также на 96работу пользователей с приложением и предлагаемые им варианты взаимодействия с вашим продуктом. Проанализируйте, как ваше приложение использует разрешения в настоящее время, 97и продумайте новые варианты взаимодействия, которые хотите реализовать. В официальном выпуске 98платформы будет представлена поддержка совместимости, однако мы рекомендует запланировать обновление приложения, не полагаясь 99на эту поддержку. 100</p> 101 102<p> 103 Определите круг разрешений, которые действительно необходимы для работы вашего приложения, и найдите фрагменты 104кода, где используются службы, защищенные разрешениями. Для этого протестируйте работу приложения на новой 105платформе и проанализируйте код. При тестировании следует сосредоточиться на использовании 106разрешений на выполнение путем изменения параметра {@code targetSdkVersion} приложения для использования предварительной версии. Дополнительные 107сведения представлены в статье <a href="{@docRoot}preview/setup-sdk.html#">Настройка SDK Preview</a>. 108</p> 109 110<p> 111 Протестируйте работу приложения при различных сочетаниях предоставленных и отозванных разрешений, чтобы определить варианты работы пользователя, 112которые зависят от разрешений. В случаях, когда зависимость не явная или не логичная, подумайте, можно ли 113перестроить или структурировать такой вариант работы, чтобы устранить зависимость или четко обозначить, 114для чего требуется каждое разрешение. 115</p> 116 117<p> 118 Дополнительные сведения о поведении разрешений на выполнение и тестировании, а также советы и рекомендации по данному вопросу представлены на странице 119<a href="{@docRoot}preview/features/runtime-permissions.html">Разрешения</a>. 120 121</p> 122 123 124<h2 id="doze-standby">Тестирование режима «Doze» и ждущего режима для приложений</h2> 125 126<p> 127 Режим «Doze» и ждущий режим приложений, предназначенные для экономии энергии, ограничивают объем данных, обрабатываемых вашим приложением в фоновом режиме, 128когда устройство не используется или приложение неактивно. Ограничения, 129которые система может налагать на приложения, включают ограничение или отключение доступа к сети, 130приостановку выполнения фоновых задач, приостановку отправки уведомлений, игнорирование запросов на пробуждение и будильников. Чтобы гарантировать 131правильную работу приложения в условиях оптимизации энергопотребления, вам следует протестировать ваше приложение, 132смоделировав эти режимы. 133</p> 134 135<h4 id="doze">Тестирование работы приложения в режиме «Doze»</h4> 136 137<p>Ниже представлен порядок тестирования режима «Doze».</p> 138 139<ol> 140<li>Установите на физическое или виртуальное устройство системный образ M Preview.</li> 141<li>Подключите устройство к компьютеру для разработки и установите ваше приложение.</li> 142<li>Запустите ваше приложение и не закрывайте его.</li> 143<li>Смоделируйте переход устройства в режим «Doze», выполнив следующие команды: 144 145<pre> 146$ adb shell dumpsys battery unplug 147$ adb shell dumpsys deviceidle step 148$ adb shell dumpsys deviceidle -h 149</pre> 150 151 </li> 152 <li>Понаблюдайте за поведением приложения после возвращения устройства в обычный режим. Убедитесь, что при выходе устройства из режима «Doze» приложение 153должным образом возобновляет свою работу .</li> 154</ol> 155 156 157<h4 id="standby">Тестирование работы приложения в ждущем режиме</h4> 158 159<p>Ниже представлен порядок тестирования ждущего режима для приложений.</p> 160 161<ol> 162 <li>Установите на физическое или виртуальное устройство системный образ M Preview.</li> 163 <li>Подключите устройство к компьютеру для разработки и установите ваше приложение.</li> 164 <li>Запустите ваше приложение и не закрывайте его.</li> 165 <li>Смоделируйте переход приложения в ждущий режим, выполнив следующие команды: 166 167<pre> 168$ adb shell am broadcast -a android.os.action.DISCHARGING 169$ adb shell am set-idle <packageName> true 170</pre> 171 172 </li> 173 <li>Смоделируйте выход приложения из ждущего режима, выполнив следующую команду: 174 <pre>$ adb shell am set-idle <packageName> false</pre> 175 </li> 176 <li>Понаблюдайте за поведением приложения, когда оно возобновляет свою работу. Убедитесь, что оно 177выходит из ждущего режима без сбоев. Обратите особое внимание на работу уведомлений и выполнение фоновых задач приложения 178.</li> 179</ol> 180 181<h2 id="ids">Автоматическое резервное копирование для приложений и идентификаторы устройств</h2> 182 183<p>Если во внутреннем хранилище вашего приложения имеются какие-либо идентификаторы устройства, такие как идентификатор Google 184Cloud Messaging, 185обязательно воспользуйтесь советами и рекомендациями, приведенными в статье 186<a href="{@docRoot}preview/backup/index.html">Автоматическое резервное копирование для приложений</a>,чтобы исключить расположение 187хранилища из списка объектов для автоматического резервного копирования. </p> 188