Android Dev Summit, October 23-24: two days of technical content, directly from the Android team. Sign-up for livestream updates.

Qualidade principal do aplicativo

O usuário do Android espera aplicativos de alta qualidade. A qualidade do aplicativo influencia diretamente seu sucesso em longo prazo em termos de instalação, classificação e avaliação, participação e retenção de usuários.

Esta página ajuda a avaliar os aspectos principais da qualidade do aplicativo a partir de um conjunto compacto de critérios de qualidade e testes associados. Todos os aplicativos Android devem atender a esses critérios.

Antes de publicar seus aplicativos, teste-os novamente segundo esses critérios para garantir que funcionem bem em vários dispositivos, atendam aos padrões de navegação e projeto do Android e estejam preparados para oportunidades promocionais na Google Play Store. Seu teste irá além do que está descrito aqui. O objetivo deste documento é especificar as principais características de qualidade que todos os aplicativos devem mostrar para que possam ser abordadas nos planos de teste.

Se você está criando aplicativos para outros dispositivos Android, como tablets ou TV, há outras diretrizes de qualidade adicionais que precisam ser consideradas.

Projeto visual e interação do usuário

Esses critérios garantem que seu aplicativo forneça design visual padrão do Android e padrões de interação conforme necessário para uma experiência do usuário consistente e intuitiva.

Área ID Descrição Testes
Projeto padrão UX-B1

O aplicativo segue as diretrizes de Design para Android e usa padrões e ícones comuns de IU:

  1. O aplicativo não redefine a função esperada de um ícone do sistema (como o botão Back).
  2. O aplicativo não substitui um ícone do sistema por um ícone completamente diferente se acionar o comportamento da interface do usuário padrão.
  3. Se o aplicativo fornece uma versão personalizada de um ícone padrão do sistema, o ícone se assemelha muito ao ícone do sistema e aciona o comportamento padrão do sistema.
  4. O aplicativo não redefine nem usa incorretamente padrões da interface do usuário Android de forma que esses ícones ou comportamentos possam enganar ou confundir o usuário.
CR-all
Navegação UX-N1

O aplicativo é compatível com a navegação do botão Back do sistema padrão e não utiliza nenhum prompt personalizado do “botão Back” na tela.

CR-3
UX-N2

Todas as caixas de diálogo são descartadas usando o botão Back.

CR-3
UX-N3 Pressionar o botão Home em qualquer ponto navega para a Tela inicial do dispositivo. CR-1
Notificações UX-S1

As notificações seguem as diretrizes de Projeto para Android. Principalmente:

  1. Várias notificações são empilhadas em um único objeto de notificação, quando possível.
  2. As notificações são persistentes apenas se estiverem relacionadas a eventos contínuos (como reprodução de música ou uma chamada telefônica).
  3. As notificações não podem conter publicidade ou conteúdo não relacionado à função principal do aplicativo, a menos que o usuário tenha aceitado.
CR-11
UX-S2

O aplicativo usa notificações apenas para:

  1. Indicar uma mudança no contexto relacionada pessoalmente ao usuário (como uma mensagem em entrada) ou
  2. Expor informações/controles relacionados a um evento contínuo (como a reprodução de música ou chamada telefônica).
CR-11

Funcionalidade

Esses critérios garantem que seu aplicativo forneça o comportamento funcional esperado, com o nível de permissões adequado.

Área ID Descrição Testes
Permissões FN-P1 O aplicativo solicita apenas as permissões absolutamente mínimas necessárias para oferecer suporte às principais funcionalidades. SC-4
FN-P2

O aplicativo não solicita permissões para acessar dados privados (como Contatos ou Registro do Sistema) ou serviços que podem custar dinheiro (como Discador ou SMS), a não ser que esteja relacionado à principal capacidade do aplicativo.

Local da instalação FN-L1

O aplicativo funciona normalmente quando instalado em um cartão SD (se compatível com o aplicativo).

O suporte para instalação no cartão SD é recomendado para a maioria dos grandes aplicativos (mais de 10 MB). Veja o guia do desenvolvedor Local de instalação do aplicativo para obter mais informações sobre quais tipos de aplicativos devem ser compatíveis com a instalação no cartão SD.

SD-1
Áudio FN-A1 O áudio não é reproduzido quando a tela está desligada, a não ser que haja um recurso principal (por exemplo, o aplicativo é um leitor de música). CR-7
FN-A2 O áudio não é reproduzido com a tela de bloqueio, a não ser que seja um recurso principal. CR-8
FN-A3 O áudio não é reproduzido na tela inicial ou por cima de outro aplicativo, a não ser que seja um recurso principal. CR-1, CR-2
FN-A4 O áudio é reiniciado quando o aplicativo volta para o segundo plano ou indica para o usuário que a reprodução está pausada. CR-1, CR-8
Interface do usuário e gráficos FN-U1

O aplicativo oferece suporte para as orientações horizontal e vertical (se possível).

As orientações expõem basicamente os mesmos recursos e ações e preservam a igualdade funcional. Pequenas mudanças no conteúdo ou na visualização são aceitáveis.

CR-5
FN-U2

O aplicativo usa toda a tela em ambas as orientações e não cria uma caixa de texto de acordo com as mudanças de orientação.

Pequenas caixas de texto para compensar pequenas variações na geometria da tela são aceitáveis.

CR-5
FN-U3

O aplicativo lida corretamente com transições rápidas entre as orientações da tela sem problemas de renderização.

CR-5
Estado do usuário/aplicativo FN-S1

O aplicativo não deve deixar nenhum serviço em execução quando estiver em segundo plano, a não ser que esteja relacionado a um recurso principal do aplicativo.

Por exemplo, o aplicativo não deve deixar os serviços em execução para manter uma conexão de rede para notificações, para manter uma conexão Bluetooth ou para manter o GPS ativado.

CR-6
FN-S2

O aplicativo preserva e restaura corretamente o estado do usuário ou aplicativo.

O aplicativo preserva o estado do usuário ou do aplicativo ao sair do primeiro plano e evita perdas acidentais de dados devido à navegação para trás e outras mudanças de estado. Ao voltar para o primeiro plano, o aplicativo deve restaurar o estado preservado e qualquer transação significativa de estado que estava pendente, como mudanças em campos editáveis, andamento de jogos, menus, vídeos e outras seções do aplicativo ou jogo.

  1. Quando o aplicativo é reiniciado pela opção de aplicativos recentes, o aplicativo retorna o usuário exatamente para o mesmo estado que estava anteriormente.
  2. Quando o aplicativo é reiniciado depois que o dispositivo acorda de um estado de espera (bloqueado), o aplicativo retorna o usuário exatamente para o mesmo estado que estava anteriormente.
  3. Quando o aplicativo é reiniciado da Página Inicial ou Todos os Aplicativos, o aplicativo restaura seu estado o mais próximo possível do estado anterior.
  4. Ao pressionar a tecla Back, o aplicativo fornece ao usuário a opção de salvar qualquer estado do aplicativo ou usuário que seria perdido na navegação para trás.
CR-1, CR-3, CR-5

Compatibilidade, desempenho e estabilidade

Estes critérios garantem que os aplicativos forneçam compatibilidade, desempenho, estabilidade e resposta esperados pelo usuário.

Área ID Descrição Testes
Estabilidade PS-S1 O aplicativo não falha, força o fechamento, congela nem funciona de forma anormal em qualquer dispositivo. CR-all, SD-1, HA-1
Desempenho PS-P1 O aplicativo carrega rapidamente e mostra feedback na tela para o usuário (um indicador de andamento ou sugestão semelhante) se levar mais de dois segundos para carregar. CR-all, SD-1
PS-P2 Com o StrictMode habilitado (veja Teste do StrictMode abaixo), nenhuma luz vermelha (avisos de desempenho do StrictMode) estará visível ao se executar o aplicativo, incluindo durante a reprodução de jogos, animações e transições da interface do usuário ou qualquer outra parte do aplicativo. PM-1
SDK PS-T1 O aplicativo é executado na versão pública mais recente da plataforma Android sem falhar nem perder a função principal. CR-0
PS-T2 O aplicativo é direcionado ao SDK mais recente definindo o valor targetSdk para minimizar o uso de qualquer fallback de compatibilidade fornecido pela plataforma. SP-1
PS-T3 O aplicativo é compilado com o SDK mais recente, definindo o valor compileSdk. SD-1
Bateria PS-B1 O aplicativo oferece suporte adequado aos recursos de gerenciamento de energia no Android 6.0+ (Soneca e App em espera). No caso em que a funcionalidade principal é interrompida pelo gerenciamento de energia, somente aplicativos qualificados podem solicitar uma exceção. BA-1
Mídia PS-M1 A reprodução de vídeo e música é regular, sem estalos, intermitência ou outros artefatos, durante o carregamento e uso normal do aplicativo. CR-all, SD-1, HA-1
Qualidade visual PS-V1

O aplicativo exibe gráficos, textos, imagens e outros elementos da interface do usuário sem distorção, falta de clareza ou pixelização.

  1. O aplicativo fornece gráficos de alta qualidade para todos os tamanhos de tela e fatores de forma.
  2. Nenhum serrilhado nas bordas dos menus, botões e outros elementos da interface do usuário fica visível.
CR-all
PS-V2

O aplicativo exibe textos e blocos de texto de forma aceitável.

  1. A composição é aceitável em todos os fatores de forma compatíveis.
  2. Não há corte de letras ou palavras.
  3. Não há quebra de palavras visíveis dentro de botões ou ícones.
  4. Espaçamento suficiente entre o texto e os elementos ao redor.

Segurança

Esses critérios garantem que os aplicativos lidem com dados do usuário e informações pessoais com segurança.

Além desta lista de verificação, os aplicativos publicados na Google Play Store também precisam seguir as políticas de dados do usuário para proteger a privacidade dos usuários.

Área ID Descrição Testes
Dados SC-D1 Todos os dados privados são mantidos no armazenamento interno do aplicativo. SC-1
SC-D2 Todos os dados do armazenamento externo são verificados antes de serem acessados. SC-2
SC-D3

Todos os intents e transmissões seguem as práticas recomendadas de segurança.

  1. Os intents serão explícitos se o aplicativo de destino for conhecido.
  2. Os intents aplicam e usam as permissões apropriadas.
  3. Os intents que contêm dados e payload são verificadas antes do uso.
SC-D4 Nenhum dado pessoal ou confidencial do usuário fica armazenado no registro do sistema ou do aplicativo. SC-10
Componentes de aplicativo SC-P1

Somente componentes de aplicativo que compartilham dados com outros aplicativos ou que deveriam ser invocados por outros aplicativos são exportados.

Isso inclui atividades, serviços, broadcast receivers, e principalmente provedores de conteúdo.

Defina sempre o atributo android:exported explicitamente, independentemente de você exportar ou não algum dos componentes do seu aplicativo.

SC-5
SC-P2 Todos os componentes da aplicativo que compartilham conteúdo com outros aplicativos definem (e aplicam) as permissões apropriadas. Isso inclui atividades, serviços, broadcast receivers e principalmente provedores de conteúdo. SC-4
SC-P3 Todos os provedores de conteúdo que compartilham conteúdo entre seus aplicativos usam android:protectionLevel="signature". SC-3
Rede SC-N1 Todo o tráfego de rede é enviado por SSL. SC-9
SC-N2 O aplicativo declara uma configuração de segurança de rede.
SC-N3 Se o aplicativo usar os serviços do Google Play, o provedor de segurança será inicializado na inicialização do aplicativo.
Bibliotecas SC-U1 Todas as bibliotecas, dependências e SDKs estão atualizados.
WebViews SC-W1 O JavaScript está desativado em todos os WebViews (a menos que seja necessário). SC-6
SC-W2 Os WebViews só carregam conteúdo permitido, se possível. SC-8
SC-W3

Os WebViews não usam addJavaScriptInterface() com conteúdo não confiável.

No Android M e versões posteriores, os canais de mensagens em HTML podem ser usados no lugar desse recurso.

SC-7
Execução SC-E1 O aplicativo não carrega dinamicamente códigos de fora do APK.
Criptografia SC-C1 O aplicativo usa algoritmos criptográficos fortes fornecidos pela plataforma e não implementa algoritmos personalizados.
SC-C2 O aplicativo usa um gerador de números aleatórios adequadamente seguro, principalmente para inicializar chaves criptográficas.

Google Play

Esses critérios garantem que seus aplicativos estejam prontos para serem publicados no Google Play.

Área ID Descrição Testes
Políticas GP-P1 O aplicativo atende totalmente aos termos da Política de Conteúdo do Desenvolvedor do Google Play e não oferece conteúdo inadequado, não usa a propriedade intelectual ou a marca de outros e assim por diante. GP-all
GP-P2

O nível de maturidade do aplicativo está definido corretamente com base nas Diretrizes de Classificação de Conteúdo.

GP-1
GP-P3

O aplicativo oferece suporte adequado aos recursos de gerenciamento de energia no Android 6.0+ (Soneca e App em espera). No caso em que a funcionalidade principal é interrompida pelo gerenciamento de energia, somente aplicativos qualificados podem solicitar uma exceção. Consulte Suporte para outros casos de uso em Soneca e App em espera.

GP-4
Página de detalhes do aplicativo GP-D1

O gráfico do recurso do aplicativo segue as diretrizes destacadas nesta postagem do blog. Certifique-se de que:

  1. A lista de aplicativos inclui um gráfico de recursos de alta qualidade.
  2. O gráfico de recursos não contém imagens do dispositivo, capturas de tela ou textos pequenos que estarão ilegíveis quando reduzidos e exibidos em um tamanho de tela menor do que aquele destinado para o aplicativo.
  3. O gráfico de recursos não se assemelha a um anúncio.
GP-1, GP-2
GP-D2 As capturas de tela e vídeos do aplicativo não mostram ou referenciam dispositivos que não sejam Android. GP-1
GP-D3 As capturas de tela ou vídeos não representam o conteúdo e experiência do seu aplicativo de forma enganosa.
Suporte do usuário GP-X1 Os erros comuns relatados pelo usuário na guia Avaliações da página do Google Play são resolvidos se forem reproduzíveis e ocorrerem em vários dispositivos diferentes. Se ocorrer um erro em alguns dispositivos apenas, tente resolvê-los se esses dispositivos forem particularmente populares ou novos. GP-1

Definir um ambiente de teste

Para avaliar a qualidade do aplicativo, defina um hardware ou ambiente emulador adequado para teste.

O ambiente de teste ideal deve incluir um pequeno número de dispositivos de hardware reais que representam os principais fatores de forma e as combinações de hardware/software atualmente disponíveis para o consumidor. Não é necessário testar todos os dispositivos disponíveis no mercado — em vez disso, concentre-se em um pequeno número de dispositivos representativos, usando um ou dois modelos por fator de forma.

Se não puder obter dispositivos de hardware reais para testar, defina dispositivos virtuais (AVDs) para representar os fatores de forma mais comuns e combinações de hardware/software.

Para ir além do teste básico, adicione mais dispositivos, mais fatores de forma ou novas combinações de hardware/software em seu ambiente de teste. Pode-se aumentar o número ou a complexidade de testes e os critérios de qualidade.

Procedimentos de teste

Estes procedimentos de testes ajudam a descobrir vários tipos de problemas de qualidade no aplicativo. É possível combinar os testes ou integrar grupos de testes nos seus planos de teste. Veja as seções acima para referências que associam critérios a esses procedimentos de teste.

Tipo Teste Descrição
Conjunto principal CR-0

Navegue por todas as partes do aplicativo — todas as telas, caixas de diálogo, configurações e fluxos do usuário.

  1. Se o aplicativo permitir edição ou criação de conteúdo, reprodução de jogos ou mídia, certifique-se de inserir esses fluxos para criar ou modificar conteúdo.
  2. Ao executar o aplicativo, realize mudanças temporárias na conectividade de rede, função da bateria, GPS ou disponibilidade de localização, carregamento do sistema e assim por diante.
CR-1 Em cada tela do aplicativo, pressione a tecla Início do dispositivo e reinicie o aplicativo da tela Todos os Aplicativos.
CR-2 Em cada tela do aplicativo, alterne para outro aplicativo em execução e volte para o aplicativo em teste usando a opção de troca entre Aplicativos Recentes.
CR-3 Em cada tela do aplicativo (e diálogos), pressione o botão Back.
CR-5 Em cada tela do aplicativo, gire o dispositivo entre a orientação vertical e horizontal pelo menos três vezes.
CR-6 Alterne para outro aplicativo para enviar o aplicativo de teste para o segundo plano. Vá para Settings e verifique se o aplicativo de teste está executando qualquer serviço enquanto está em segundo plano. No Android 4.0 e posterior, acesse a tela Apps e localize o aplicativo na guia "Running”.
CR-7 Pressione o botão liga/desliga para colocar o dispositivo em espera e pressione o botão de energia novamente para ligar a tela.
CR-8 Defina o dispositivo para bloqueado quando o botão liga/desliga for pressionado. Pressione o botão liga/desliga para colocar o dispositivo em espera e pressione-o novamente para ligar a tela e desbloquear o dispositivo.
CR-9 Para dispositivos com teclados virtuais, exiba e oculte o teclado pelo menos uma vez. Para dispositivos com teclados externos, conecte o dispositivo à entrada do teclado.
CR-10 Para dispositivos com uma porta de monitor externa, conecte o monitor externo.
CR-11 Acione e observe na gaveta de notificações todos os tipos de notificações que o aplicativo pode exibir. Expanda as notificações onde aplicável (Android 4.1 e superior) e toque em todas as ações disponíveis.
Instalação do cartão SD SD-1

Repita o Conjunto Principal com o aplicativo instalado no cartão SD do dispositivo (se suportado pelo aplicativo).

Para mover o aplicativo para o cartão SD, use Settings > App Info > Move to SD Card.

Aceleração de hardware HA-1

Repita o Conjunto de Aplicações Principal com a aceleração de hardware habilitada.

Para a aceleração de hardware habilitada para forçamento (onde suportado pelo dispositivo), adicione hardware-accelerated="true" ao <application> no manifesto do aplicativo e recompile.

Desempenho e estabilidade SP-1 Revise o arquivo de manifesto do Android e crie a configuração para garantir que o aplicativo seja compilado de acordo com o SDK mais recente disponível (targetSdk e compileSdk).
Monitoramento de desempenho PM-1

Repita o Conjunto Principal com o perfil StrictMode habilitado conforme descrito abaixo.

Preste muita atenção à coleta de lixo e seu impacto na experiência do usuário.

Bateria BA-1

Repita o Conjunto principal em ciclos de Soneca e App em espera.

Preste muita atenção a alarmes, cronômetros, notificações, sincronizações etc. Consulte Testes de Soneca e App em espera para ver os requisitos e as orientações.

Segurança SC-1 Revise todos os dados mantidos no armazenamento externo.
SC-2 Analise como os dados carregados a partir do armazenamento externo são gerenciados e processados.
SC-3 Revise todos os provedores de conteúdo definidos no arquivo de manifesto do Android para obter informações apropriadas protectionLevel.
SC-4 Revise todas as permissões exigidas pelo aplicativo para o arquivo de manifesto, o tempo de execução e as configurações do aplicativo (Settings > App Info) no dispositivo.
SC-5 Revise todos os componentes de aplicativo definidos no arquivo de manifesto do Android para o estado de exportação apropriado. A propriedade de exportação precisa ser definida explicitamente para todos os componentes.
SC-6 Revise a Configuração de segurança de rede do aplicativo, garantindo que não haja falhas na verificação de código da configuração.
SC-7 Para cada WebView, navegue até uma página que requer JavaScript.
SC-8 Para cada WebView, tente navegar para sites e conteúdo que estão fora do seu controle.
SC-9 Declare uma configuração de segurança de rede que desative o cancelamento do uso de tráfego de texto e depois execute o aplicativo.
SC-10 Execute o aplicativo e use toda a funcionalidade principal, enquanto observa o registro do dispositivo. Nenhuma informação privada do usuário deve ser registrada.
Google Play GP-1 Faça login no Google Play Developer Console para analisar seu perfil de desenvolvedor, descrição do aplicativo, capturas de tela, gráfico de recursos, classificação do conteúdo e feedback do usuário.
GP-2 Faça o download do gráfico de recursos e capturas de tela e reduza-os para corresponder ao tamanho de tela nos dispositivos e fatores de forma destinados.
GP-3 Analise todos os ativos gráficos, mídia, textos, bibliotecas de código e outro conteúdo no pacote do aplicativo ou de download do arquivo de extensão.
GP-4 Revise Suporte para outros casos de uso em Soneca e App em espera.
Pagamentos GP-4 Navegue em todas as telas do seu aplicativo e insira todos os fluxos de compra no aplicativo.

Teste com o StrictMode

Para teste de desempenho, recomendamos habilitar o StrictMode no aplicativo e usá-lo para verificar operações no thread principal e outros threads que podem afetar o desempenho, os acessos de rede, as leituras/gravações de arquivo e assim por diante.

Você pode definir uma política de monitoramento por thread usando StrictMode.ThreadPolicy.Builder e ativar todo o monitoramento com suporte no ThreadPolicy usando detectAll().

Não deixe de ativar a notificação visual das violações de política para a ThreadPolicy usando penaltyFlashScreen().