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] <permission.name> ...</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 <packageName> true 170</pre> 171 172 </li> 173 <li>Simule o despertar do aplicativo usando o seguinte comando: 174 <pre>$ adb shell am set-idle <packageName> 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