1page.title=Guia de teste
2page.image=images/cards/card-build_16x9_2x.png
3page.keywords=previewresources,androidm,testing,permissions
4
5@jd:body
6
7<div id="qv-wrapper">
8  <div id="qv">
9    <h2>Neste documento</h2>
10      <ol>
11        <li><a href="#runtime-permissions">Teste de permissões</a></li>
12        <li><a href="#doze-standby">Teste de soneca e aplicativo em espera</a></li>
13        <li><a href="#ids">Identificadores de dispositivo e backup automático</a></li>
14      </ol>
15  </div>
16</div>
17
18<p>
19  O Android M Developer Preview fornece uma oportunidade de garantir que os aplicativos funcionem
20 na próxima versão da plataforma. Esta prévia inclui um número de mudanças de comportamento e APIs que podem
21 ter impacto no aplicativo, como descrito em <a href="{@docRoot}preview/api-overview.html">Visão geral da API
22</a> e <a href="{@docRoot}preview/behavior-changes.html">Mudanças de comportamento</a>. No teste
23 do aplicativo com a prévia, há algumas alterações de sistema específicas em que você deve se concentrar
24 para garantir que os usuários tenham uma boa experiência.
25</p>
26
27<p>
28  Este guia descreve quais recursos de prévia testar e como testá-los com o aplicativo. Você deve
29 priorizar o teste destes recursos de prévia específicos, devido ao grande impacto potencial no
30 comportamento do aplicativo:
31</p>
32
33<ul>
34  <li><a href="#runtime-permissions">Permissões</a>
35  </li>
36  <li><a href="#doze-standby">Soneca e aplicativo em espera</a>
37  </li>
38  <li><a href="#ids">Identificadores de dispositivo e backup automático</a></li>
39</ul>
40
41<p>
42  Para obter mais informações sobre como configurar dispositivos físicos ou virtuais com uma imagem do sistema de prévia
43 para teste, consulte <a href="{@docRoot}preview/setup-sdk.html">Configuração do Preview SDK</a>.
44</p>
45
46
47<h2 id="runtime-permissions">Teste de permissões</h2>
48
49<p>
50  O novo modelo de <a href="{@docRoot}preview/features/runtime-permissions.html">permissões</a>
51 altera a maneira que as permissões são alocadas ao aplicativo pelo usuário. Em vez de conceder todas as permissões
52 durante o procedimento de instalação, o aplicativo deve pedir ao usuário permissões individuais
53 em tempo de execução. Para os usuários, este comportamento fornece um controle mais granular sobre as atividades de cada aplicativo, bem
54 como um melhor contexto para entender o porquê do aplicativo estar solicitando uma permissão específica. Os usuários
55 podem conceder ou revogar as permissões concedidas a um aplicativo individualmente a qualquer momento. É provável que este recurso
56 da prévia tenha um impacto no comportamento do aplicativo e pode impedir que alguns
57 dos recursos do aplicativo funcionem, ou funcionem em um estado degradado.
58</p>
59
60<p class="caution">
61  Esta alteração afeta todos os aplicativos em execução na nova plataforma, mesmo aqueles que não são destinados
62 para a versão nova da plataforma. A plataforma fornece um comportamento de compatibilidade limitado para aplicativos legados. No entanto,
63 você deve começar a planejar a migração do aplicativo para o novo modelo de permissões agora, com o objetivo
64 de publicar uma versão atualizada do aplicativo no lançamento oficial da plataforma.
65</p>
66
67
68<h3 id="permission-test-tips">Dicas de teste</h3>
69
70<p>
71  Use as seguintes dicas de teste para ajudar você a planejar e executar os testes do aplicativo com o novo
72 comportamento de permissões.
73</p>
74
75<ul>
76  <li>Identifique as permissões atuais do aplicativo e os caminhos de código relacionados.</li>
77  <li>Teste o fluxo de usuário entre serviços protegidos por permissão e dados.</li>
78  <li>Teste com várias combinações de permissões revogadas/concedidas.</li>
79  <li>Use a ferramenta {@code adb} para gerenciar as permissões da linha de comando:
80    <ul>
81      <li>Liste as permissões e o status por grupos:
82        <pre>adb shell pm list permissions -d -g</pre>
83      </li>
84      <li>Conceda ou revogue uma ou mais permissões usando a seguinte sintaxe:<br>
85        <pre>adb shell pm [grant|revoke] &lt;permission.name&gt; ...</pre>
86      </li>
87    </ul>
88  </li>
89  <li>Analise o aplicativo para encontrar os serviços que usam permissões.</li>
90</ul>
91
92<h3 id="permission-test-strategy">Estratégia de teste</h3>
93
94<p>
95  A mudança de permissões afeta a estrutura e o projeto do aplicativo, bem como
96 a experiência dos usuários e os fluxos fornecidos a eles. Você deve avaliar o uso das permissões atuais
97 do aplicativo e começar a planejar novos fluxos que deseja oferecer. O lançamento oficial
98 da plataforma fornece comportamento de compatibilidade, mas deve-se planejar a atualização do aplicativo e
99 não confiar nestes comportamentos.
100</p>
101
102<p>
103  Identifique as permissões que o aplicativo realmente precisa e usa e, em seguida, encontre os vários caminhos
104 de código que usam os serviços protegidos por permissões. É possível fazer isto por meio de uma combinação de
105 testes na nova plataforma e análise de códigos. Nos testes, você deve se concentrar em usar
106 as permissões em tempo de execução alterando {@code targetSdkVersion} do aplicativo para a versão da prévia. Para
107 obter mais informações, consulte <a href="{@docRoot}preview/setup-sdk.html#">Configuração do Preview SDK</a>.
108</p>
109
110<p>
111  Teste com várias combinações de permissões revogadas e concedidas para destacar os fluxos de usuário
112que dependem de permissões. Onde uma dependência não for óbvia ou lógica, considere
113refatorar ou compartimentalizar este fluxo para eliminar a dependência ou para esclarecer por que
114a permissão é necessária.
115</p>
116
117<p>
118  Para obter mais informações sobre o comportamento das permissões em tempo de execução, de testes e de melhores práticas, consulte a página
119 <a href="{@docRoot}preview/features/runtime-permissions.html">Permissões</a> do Developer
120 Preview.
121</p>
122
123
124<h2 id="doze-standby">Teste de soneca e aplicativo em espera</h2>
125
126<p>
127  Os recursos de economia de energia de aplicativo em espera e soneca limitam a quantidade de processamento de segundo plano que o aplicativo
128 pode realizar quando um dispositivo está no estado ocioso ou enquanto não está em foco. As
129 restrições que o sistema pode impor nos aplicativos inclui acesso a rede limitado ou restrito,
130 tarefas de segundo plano suspensas, notificações suspensas, solicitações de soneca ignoradas e despertadores. Para garantir
131 que o aplicativo se comportará adequadamente com essas otimizações de economia de energia, deve-se testá-lo
132 simulando estes estados de baixa energia.
133</p>
134
135<h4 id="doze">Testar o aplicativo com Soneca</h4>
136
137<p>Para testar a Soneca com o aplicativo:</p>
138
139<ol>
140<li>Configure um dispositivo de hardware ou virtual com uma imagem do sistema M Preview.</li>
141<li>Conecte o dispositivo à máquina de desenvolvimento e instale o aplicativo.</li>
142<li>Execute o aplicativo e deixe-o ativo.</li>
143<li>Simule o dispositivo acessando o modo Soneca executando os seguintes comandos:
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>Observe o comportamento do aplicativo quando o dispositivo é reativado. Certifique-se de que
153 ele se recupere corretamente quando o dispositivo sai do modo Soneca.</li>
154</ol>
155
156
157<h4 id="standby">Testar o aplicativo no modo de espera</h4>
158
159<p>Para testar o modo de espera do aplicativo:</p>
160
161<ol>
162  <li>Configure um dispositivo de hardware ou virtual com uma imagem do sistema M Preview.</li>
163  <li>Conecte o dispositivo à máquina de desenvolvimento e instale o aplicativo.</li>
164  <li>Execute o aplicativo e deixe-o ativo.</li>
165  <li>Simule o aplicativo acessando o modo de espera executando os seguintes comandos:
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>Simule o despertar do aplicativo usando o seguinte comando:
174    <pre>$ adb shell am set-idle &lt;packageName&gt; false</pre>
175  </li>
176  <li>Observe o comportamento do aplicativo quando ele é despertado. Certifique-se de que ele se recupere corretamente
177 do modo de espera. Particularmente, deve-se verificar se as notificações e os trabalho de segundo plano
178 do aplicativo continuam a funcionar como o esperado.</li>
179</ol>
180
181<h2 id="ids">Backup automático para aplicativos e identificadores específicos do dispositivo</h2>
182
183<p>Caso o aplicativo esteja persistindo qualquer identificador específico do dispositivo, como o ID de registro do Google
184Cloud Messaging, no armazenamento interno,
185certifique-se de seguir as práticas recomendadas para excluir o local de armazenamento
186do backup automático, como descrito em <a href="{@docRoot}preview/backup/index.html">Backup automático
187para aplicativos</a>. </p>
188