O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Principais critérios de qualidade do app

Última atualização: 10 de fevereiro de 2021

Esta checklist define um conjunto dos principais critérios de qualidade e testes associados para ajudar você a avaliar a qualidade do seu app. Alguns critérios podem passar despercebidos e os testes ajudam você a se lembrar de incluí-los no planejamento.

A checklist destaca o nível de qualidade mínimo que todos os apps precisam ter. Seus testes provavelmente irão além do que está descrito aqui.

Cada item na checklist de qualidade tem um ID exclusivo que pode ser útil na comunicação com sua equipe.

Experiência visual

Seu app precisa ter padrões de interação e design visual do Android, conforme apropriado, para oferecer uma experiência do usuário consistente e intuitiva.

Área ID Testes Descrição
Navegação VX-N1 CR-3 O app é compatível com a navegação padrão pelo botão "Voltar" e não usa nenhuma solicitação personalizada desse botão na tela.
VX-N2 CR-3 O app é compatível com a navegação por gestos para voltar / ir para a tela inicial.
VX-N3 CR-1
CR-3
CR-5

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

O app preserva o estado do usuário ou do aplicativo ao sair do primeiro plano e evita perdas acidentais de dados devido à navegação de retorno e a outras mudanças de estado.

Ao voltar para o primeiro plano, o app precisa restaurar o estado preservado e qualquer transação de estado significativa que estava pendente. Isso inclui, por exemplo, mudanças em campos editáveis, progresso em jogos, menus, vídeos e outras seções do app ou jogo.

  1. Quando o app é retomado pelo seletor de apps "Recentes", ele retorna o usuário exatamente para o mesmo estado em que estava no último uso.
  2. Quando o app é reiniciado depois que o dispositivo é ativado de um estado de suspensão (bloqueado), ele retorna o usuário exatamente para o mesmo estado em que estava no último uso.
  3. Quando o app é reiniciado pela tela inicial ou em "Todos os apps", ele precisa executar uma das seguintes ações, dependendo do tempo decorrido desde o último uso:
    • Se o app tiver sido usado pela última vez há poucos minutos, restaure o estado dele para que fique o mais próximo possível do anterior.
    • Se mais tempo se passou desde que o app foi usado pela última vez, tente restaurá-lo para que fique o mais próximo possível do estado anterior ou abra-o na tela inicial ou em outro estado padrão.
Notificações VX-S1 CR-9

As notificações seguem as diretrizes do Material Design (link em inglês). Especificamente, as seguintes:

  1. As notificações não são usadas para fazer promoção cruzada ou publicidade de outro produto, já que isso é estritamente proibido pela Play Store.
  2. Defina corretamente os canais de notificação conforme as práticas recomendadas, em vez de exibir todas as notificações de um único canal.
  3. Selecione a prioridade de notificação correta (link em inglês).
  4. Várias notificações são empilhadas em um único grupo de notificações, quando possível.
  5. Defina tempos limite para as notificações, quando apropriado.
  6. As notificações são persistentes apenas se estiverem relacionadas a eventos contínuos, como a reprodução de música (mais informações na seção Funcionalidade) ou uma chamada telefônica.
VX-S2 CR-9

Para apps de mensagens / sociais e conversas:

  1. Use as notificações MessagingStyle para conversas.
  2. Ofereça compatibilidade com a ação de resposta direta.
  3. Ofereça compatibilidade com atalhos de conversa e implemente as práticas recomendadas para conseguir a melhor classificação de compartilhamento direto.
  4. Ofereça compatibilidade com balões.
IU e gráficos VX-U1 CR-5 O app é compatível com as orientações de paisagem e retrato, se possível.

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

VX-U2 CR-5 O app usa toda a tela em ambas as orientações e não cria um efeito letterbox para compensar as mudanças de orientação.

Um leve efeito letterbox para compensar pequenas variações na geometria da tela é aceitável.

VX-U3 CR-5 O app gerencia corretamente transições rápidas entre as orientações da tela sem problemas de renderização ou perda de estado.
Qualidade visual VX-V1 CR-all

O app exibe gráficos, textos, imagens e outros elementos da IU sem distorção, desfoque ou pixelização perceptível.

  1. O app precisa usar drawables vetoriais sempre que possível.
  2. O app tem gráficos de alta qualidade para todos os tamanhos e formatos de tela.
  3. Nenhum serrilhado nas bordas dos menus, botões e outros elementos da IU fica visível.
VX-V2 CR-all

O app exibe textos e blocos de texto de forma aceitável para cada um dos idiomas disponíveis.

  1. A composição é aceitável em todos os formatos.
  2. Não há corte de letras ou palavras.
  3. Não há quebras de palavras inadequadas dentro de botões ou ícones.
  4. Há espaço suficiente entre o texto e os elementos ao redor dele.
VX-V3 CR-all O conteúdo do app e todo o conteúdo da Web mencionados pelo app são compatíveis com o tema escuro.

Funcionalidade

O app precisa implementar o comportamento funcional esperado.

Área ID Testes Descrição
Áudio FN-A1 CR-1
CR-8
O áudio é retomado quando o app volta para o primeiro plano ou há uma indicação para o usuário de que a reprodução está pausada.
FN-A2 CR-1
CR-2
CR-8
Se a reprodução de áudio for um dos recursos principais, o app precisa ser compatível com a reprodução em segundo plano.
FN-A3 CR-0

Quando o usuário inicia a reprodução de áudio, o app precisa executar uma das seguintes ações em até um segundo:

  1. Começar a tocar o áudio
  2. Fornecer um indicador visual de que os dados de áudio estão sendo preparados
FN-A4 CR-0 O app precisa solicitar a seleção de áudio quando a reprodução for iniciada e abandonar essa seleção quando a reprodução for interrompida.
FN-A5 CR-0 O app precisa gerenciar as solicitações de outros apps para a seleção de áudio. Por exemplo, um app pode reduzir o volume da reprodução quando outro inicia uma fala.
Mídia FN-M1 CR-0
CR-6
CR-8
Se o app toca áudio em segundo plano, ele precisa criar uma notificação estilizada com MediaStyle​LINK (link em inglês).
FN-M2 CR-0 Se o app reproduz vídeos, ele precisa ser compatível com a reprodução picture-in-picture.
FN-M3 CR-0 Se o app codifica vídeos, isso precisa ser feito usando o padrão de compactação de vídeo HEVC.
Compartilhamento FN-S1 CR-0 O app precisa usar o Android Sharesheet ao compartilhar conteúdo. Ele pode sugerir destinos que estão indisponíveis para soluções personalizadas.
Serviços em segundo plano FN-B1 CR-6 O app evita a execução de serviços em segundo plano sempre que possível. Para garantir a execução sem problemas do dispositivo do usuário, o sistema aplica várias restrições aos serviços em segundo plano. Estes não são considerados bons usos de serviços em segundo plano:
  • Manter uma conexão de rede para notificações
  • Manter uma conexão Bluetooth
  • Manter o GPS ligado

Aprenda a escolher a solução certa para seu trabalho.

FN-B2 CR-10 O app é compatível com os recursos de gerenciamento de energia introduzidos no Android 6.0 (Soneca e App em espera). Nos casos em que a funcionalidade principal é interrompida pelo gerenciamento de energia, apenas apps qualificados podem solicitar uma isenção. Consulte Compatibilidade com outros casos de uso para os recursos Soneca e App em espera.

Desempenho e estabilidade

Seu app precisa fornecer o desempenho, a estabilidade, a compatibilidade e a capacidade de resposta esperada pelos usuários.

Área ID Testes Descrição
Estabilidade PS-S1 CR-all
SD-1
O app não apresenta falhas nem bloqueia a linha de execução de IU causando erros "O Android não está respondendo" (ANR, na sigla em inglês). Use o relatório de pré-lançamento do Google Play para identificar possíveis problemas de estabilidade. Após a implantação, preste atenção à página Android vitals no Google Play Console.
Desempenho PS-P1 CR-all
SD-1
O app carrega rapidamente (link em inglês) ou, se leva mais de dois segundos para carregar, mostra feedback na tela para o usuário, como um indicador de progresso ou sugestão semelhante.
PS-P2 CR-all
SD-1
Os apps precisam renderizar quadros a cada 16 ms para atingir 60 quadros por segundo. Os desenvolvedores podem usar a opção Criar perfil de renderização de HWUI nos testes. Se houver problemas, as ferramentas estarão disponíveis para ajudar a diagnosticar a renderização lenta.
PS-P3 PM-1 Com a ferramenta StrictMode ativada (consulte Teste com StrictMode abaixo), nenhum flash vermelho (aviso de desempenho da ferramenta) estará visível ao testar o app. Os flashes vermelhos indicam comportamentos inadequados em relação ao armazenamento, ao acesso à rede ou a vazamentos de memória.
SDK PS-T1 CR-0 O app é executado na última versão pública da Plataforma Android sem falhas e sem afetar drasticamente a funcionalidade principal.
PS-T2 SP-1 O app é direcionado ao SDK do Android mais recente definindo o valor de targetSdk.
PS-T3 SP-1 O app é criado com o SDK mais recente definindo o valor de compileSdk.
PS-T4 SP-2
SP-3
Todos os SDKs de terceiros usados estão atualizados. Qualquer melhoria nesses SDKs, como estabilidade, compatibilidade ou segurança, precisa ser disponibilizada aos usuários em tempo hábil.

O desenvolvedor é responsável por toda a base de código do app, inclusive os SDKs de terceiros usados.
PS-T5 CR-0 O app não usa interfaces que não são SDK.
Bateria PS-B1 BA-1 O app é compatível com os recursos de gerenciamento de energia introduzidos no Android 6.0 (Soneca e App em espera). Nos casos em que a funcionalidade principal é interrompida pelo gerenciamento de energia, apenas apps qualificados podem solicitar uma isenção. Durante o desenvolvimento, os desenvolvedores podem testar o comportamento dos recursos Soneca e App em espera usando estes comandos do ADB.

Para diagnosticar o uso inesperado da bateria, eles podem usar o Energy Profiler do Android Studio ou a ferramenta Battery Historian, combinados com trabalho planejado em segundo plano.

Privacidade e segurança

O app precisa gerenciar os dados e as informações pessoais do usuário de modo seguro, com o nível de permissão adequado.

Além desta checklist, os apps 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 Testes Descrição
Permissões SC-P1 SC-4 O app solicita apenas o número mínimo absoluto de permissões necessárias para a compatibilidade com o caso de uso em questão. Para algumas permissões, como a de localização, use a localização aproximada em vez da exata, se possível.
SC-P2

O app só precisa solicitar permissão para acessar dados sensíveis (como SMS, registro de chamadas ou localização) ou serviços que geram custos (como Telefone ou SMS) se eles estiverem diretamente relacionados aos principais casos de uso do app. As implicações relacionadas a essas permissões precisam ser divulgadas em destaque para o usuário.

Dependendo de como as permissões são usadas, pode haver uma forma alternativa de atender ao caso de uso do seu app sem depender de acesso a informações sensíveis. Por exemplo, em vez de solicitar permissões relacionadas aos contatos do usuário, talvez seja mais apropriado solicitar acesso usando uma intent implícita.

SC-P3 CR-0 O app solicita permissões de execução no contexto, quando a funcionalidade é solicitada, e não com antecedência durante a inicialização dele.
SC-P4 CR-0

O app precisa ter uma UX que comunique claramente por que certas permissões são necessárias. Se isso não for possível, siga o fluxo recomendado para explicar por que um recurso do seu app precisa de uma permissão.

O app precisa fazer uma degradação suave quando os usuários negarem ou revogarem uma permissão. Ele não deve impedir que o usuário o acesse por completo.

Dados e arquivos SC-DF1 SC-1 Todos os dados sensíveis são mantidos no armazenamento interno do app.
SC-DF2 SC-10 Nenhum dado pessoal ou sensível do usuário é registrado no sistema ou em um registro específico do app.
SC-DF3 O app não deve usar IDs de hardware que não podem ser redefinidos, como o IMEI, para fins de identificação.
Identidade SC-ID1 CR-0 Forneça dicas de preenchimento automático para credenciais da conta e outras informações sensíveis, como informações de cartão de crédito, endereço físico e número de telefone.
SC-ID2 CR-0 Integre o mecanismo um toque para Android para simplificar o login.
SC-ID3 CR-0 Integre a autenticação biométrica para proteger transações financeiras ou informações sensíveis, como documentos importantes dos usuários.
Componentes do app SC-AC1 SC-5 Apenas componentes de aplicativo que compartilham dados com outros apps ou que deveriam ser invocados por outros apps são exportados.

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

Sempre defina o atributo android:exported explicitamente para minimizar a confusão no valor padrão.

SC-AC2 CR-0
SC-4

Todas as intents e transmissões seguem as práticas recomendadas:

  1. Use intents explícitas se o app de destino estiver bem definido.
  2. Use intents para adiar permissões para outro app que já tenha a permissão.
  3. Compartilhe dados de forma segura entre apps.
  4. As intents que contêm um payload precisam ser verificadas antes do uso.
  5. Se você precisar transmitir uma intent para outro app para que o receptor possa invocar e esperar um callback no app de chamada, não inclua uma intent aninhada nos extras. Use uma PendingIntent.
  6. Ao configurar suas PendingIntents, defina explicitamente a sinalização imutável, quando aplicável.
SC-AC3 SC-3 Todos os provedores de conteúdo que compartilham conteúdo entre seus apps usam android:protectionLevel="signature" para permissões personalizadas. Isso inclui atividades, serviços, broadcast receivers e, principalmente, provedores de conteúdo. A maioria dos apps não deve acessar uma lista de pacotes instalados. O acesso foi restrito do Android 11 em diante.
Redes SC-N1 SC-9 Todo o tráfego de rede é enviado por SSL.
SC-N2 SC-6 O app declara uma configuração de segurança de rede.
SC-N3 Se o app usar o Google Play Services, o provedor de segurança será inicializado com ele.
Bibliotecas SC-U1 SP-2 Todos os SDKs, bibliotecas e dependências estão atualizados.
SC-U2 Nenhuma biblioteca de depuração está incluída no app de produtividade. Isso pode causar problemas de desempenho e de segurança.
WebViews SC-W1 SC-6 Não use setAllowUniversalAccessFromFileURLs() para acessar o conteúdo local. Use WebViewAssetLoader.
SC-W2 SC-7 Os WebViews não podem usar addJavaScriptInterface() com conteúdo não confiável.

No Android 6.0 e versões mais recentes, use canais de mensagem HTML.

Execução SC-E1 O app não carrega dinamicamente códigos de fora do APK. Os desenvolvedores precisam usar os Android App Bundles, que incluem o Play Feature Delivery e o Play Asset Delivery.

A partir de agosto de 2021, o uso dos Android App Bundles será obrigatório para todos os novos apps na Google Play Store.

Criptografia SC-C1 O app usa um gerador de números aleatórios e algoritmos criptográficos fortes fornecidos pela plataforma. Além disso, ele não implementa algoritmos personalizados.

Google Play

Confira se os seus apps podem ser publicados no Google Play.

Área ID Testes Descrição
Políticas GP-P1 GP-all O app obedece totalmente aos termos da Política de conteúdo do desenvolvedor do Google Play e não apresenta conteúdo inadequado, não usa a propriedade intelectual ou a marca de outros e assim por diante.
GP-P2 GP-1 O nível de maturidade do app está definido corretamente com base nas Diretrizes de classificação de conteúdo.
Página de detalhes do app GP-D1 GP-1
GP-2

O recurso gráfico do app segue as diretrizes descritas neste artigo de suporte. Confira se:

  1. a página "Detalhes do app" inclui um recurso gráfico de alta qualidade;
  2. o recurso gráfico não contém imagens do dispositivo, capturas de tela ou textos pequenos que ficarão ilegíveis quando reduzidos e exibidos em uma tela menor do que aquela para a qual o app é destinado;
  3. o recurso gráfico não se assemelha a um anúncio.
GP-D2 GP-1 As capturas de tela e os vídeos do app não mostram nem fazem referência a dispositivos que não são Android.
GP-D3 GP-1 As capturas de tela ou vídeos do app não representam o conteúdo e a experiência do seu aplicativo de forma enganosa.
Suporte do usuário GP-X1 GP-1 Os bugs comuns relatados pelos usuários 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 um bug ocorrer apenas em alguns dispositivos, tente resolvê-lo mesmo se esses dispositivos forem novos ou muito comuns.

Como configurar um ambiente de teste

Para configurar um ambiente de teste para esta checklist, recomendamos o seguinte:

  • Foco em testes de emulador: o Android Emulator é uma ótima maneira de testar seu app em diferentes versões do Android e resoluções de tela. Configure dispositivos emulados (AVDs) para representar os formatos e as combinações de hardware/software mais comuns para sua base de usuários de destino.
  • Dispositivos de hardware: seu ambiente de teste precisa incluir um pequeno número de dispositivos de hardware reais que representem os principais formatos e combinações de hardware/software disponíveis para os consumidores. 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 formato.
  • Laboratórios de teste de dispositivos: você também pode usar serviços de terceiros, como o Firebase Test Lab, para testar seu app em uma variedade maior de dispositivos.
  • Testar com a versão mais recente do Android: além de testar as versões representativas do Android para sua base de usuários de destino, sempre teste com a versão mais recente do SO (atualmente, o Android 11). Isso garante que as mudanças de comportamento mais recentes não afetem negativamente a experiência do usuário.

Para ver orientações mais abrangentes sobre testes, incluindo testes de unidade, de integração e de IU, confira os conceitos básicos de testes em Android.

Procedimentos de teste

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

Tipo Teste Descrição
Pacote principal CR-0

Navegue por todas as partes do app: todas as telas, caixas de diálogo, configurações e todos os fluxos de usuários.

  1. Se o app permitir a edição ou criação de conteúdo, reprodução de mídia ou jogos, teste esses fluxos.
  2. Ao testar o app, inclua interrupções de outros apps, como receber uma notificação ou uma chamada telefônica. Além disso, aplique mudanças temporárias a atributos do dispositivo, como conectividade de rede, função da bateria, disponibilidade de GPS e carregamento do sistema.
  3. Insira e teste todos os fluxos de compra no app.
CR-1 Em cada tela do app, pressione o botão home do dispositivo ou faça o gesto de navegação de deslizar para cima. Depois, reinicie o app pela tela "Todos os apps".
CR-2 Em cada tela do app, alterne para outro app em execução e volte para o que está em teste usando o seletor de apps "Recentes".
CR-3 Em cada tela (e caixa de diálogo) do app, pressione o botão "Voltar" ou use o gesto de deslizar para voltar.
CR-5 Em cada tela do app, gire o dispositivo entre a orientação paisagem e retrato pelo menos três vezes.
CR-6 Alterne para outro app para enviar o app em teste para o segundo plano. Acesse Configurações e confira se o app em teste está executando algum serviço enquanto está em segundo plano. No Android 4.0 e mais recentes, acesse a tela "Apps" e localize o app na guia "Em execução".
CR-7 Pressione o botão liga/desliga para colocar o dispositivo em suspensão e pressione-o novamente para ligar a tela.
CR-8 Configure um bloqueio de tela no dispositivo. Pressione o botão liga/desliga para colocar o dispositivo em suspensão, o que o bloqueará. Em seguida, pressione o botão novamente para ligar a tela e desbloquear o dispositivo.
CR-9 Acione todos os tipos de notificação que o app pode exibir e observe-as na gaveta de notificações. Expanda as notificações quando aplicável (Android 4.1 e mais recentes) e toque em todas as ações disponíveis.
CR-10 Revise "Compatibilidade com outros casos de uso" para os recursos Soneca e App em espera.
Instalação no cartão SD SD-1 Repita o Pacote principal com o app instalado no cartão SD do dispositivo, se o app for compatível com esse método de instalação.

Para mover o app para o cartão SD, use Configurações > Informações do app > Mover para cartão SD.

Desempenho e estabilidade SP-1 Revise o arquivo de manifesto do Android e a configuração do build para garantir que o app seja compilado de acordo com o SDK mais recente disponível (targetSdk e compileSdk).
SP-2 Revise o arquivo build.gradle para ver se há dependências desatualizadas.
SP-3 Use a ferramenta lint do Android Studio para detectar o uso de interface que não é SDK. Também há outros métodos de teste alternativos.
Monitoramento de desempenho PM-1 Repita o Pacote principal com a criação de perfil da ferramenta StrictMode ativada.

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

Bateria BA-1 Repita o Pacote principal em ciclos de Soneca e App em espera.

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

Segurança SC-1 Revise todos os dados salvos no armazenamento externo.
SC-2 Revise como os dados carregados do armazenamento externo são gerenciados e processados.
SC-3 Revise todos os provedores de conteúdo definidos no arquivo de manifesto do Android. Confira se cada provedor tem um protectionLevel apropriado.
SC-4 Revise todas as permissões exigidas pelo app no arquivo de manifesto (no momento da execução) e na tela de configurações do app (Configurações > Informações do app) no dispositivo.
SC-5 Revise todos os componentes de aplicativo definidos no arquivo de manifesto do Android para o estado de exportação adequado. A propriedade exportada precisa ser definida explicitamente para todos os componentes.
SC-6 Revise a Configuração de segurança de rede do app, garantindo que não haja falhas na verificação de lint na configuração.
SC-7 Para cada WebView, navegue até uma página que requer JavaScript.
SC-8 Em cada WebView, tente navegar para sites e conteúdo que não sejam carregados diretamente pelo seu app.
SC-9 Declare uma configuração de segurança de rede que desative o tráfego de texto não criptografado e depois teste o app.
SC-10 Execute o app e use toda a funcionalidade principal, enquanto observa o registro do dispositivo. Nenhuma informação particular do usuário deve ser registrada.
Google Play GP-1 Faça login no Google Play Console para revisar seu perfil de desenvolvedor, a descrição do app, as capturas de tela, o recurso gráfico, a classificação do conteúdo e o feedback dos usuários.
GP-2 Faça o download do recurso gráfico e das capturas de tela e reduza-os para que fiquem do tamanho da tela nos dispositivos e formatos pretendidos.
GP-3 Revise todos os recursos gráficos, os conteúdos de mídia, textos, bibliotecas de código e outros conteúdos inclusos no pacote do app ou do download do arquivo de extensão.

Teste com StrictMode

Para testar o desempenho, recomendamos ativar a ferramenta StrictMode no app e usá-la para detectar operações que podem afetar o desempenho, os acessos à rede, as leituras/gravações de arquivos etc. Procure operações que podem ser problemáticas na linha de execução principal e em outras linhas de execução.

Você pode configurar uma política de monitoramento por linha de execução usando StrictMode.ThreadPolicy.Builder e ativar todo o monitoramento compatível na ThreadPolicy usando detectAll().

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