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] &lt;permission.name&gt; ...</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 &lt;packageName&gt; true
170</pre>
171
172  </li>
173  <li>Смоделируйте выход приложения из ждущего режима, выполнив следующую команду:
174    <pre>$ adb shell am set-idle &lt;packageName&gt; 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