Uma maneira útil de avaliar a excelência do app é analisar os fluxos de trabalho e avaliar a suavidade e segurança da experiência dele.
Esta lista de verificação define um conjunto dos principais critérios de qualidade e testes associados a ela para 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 lista de verificação de qualidade tem um ID exclusivo que pode ser útil na comunicação com sua equipe. Você também pode acessar a versão anterior dessas diretrizes.
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 retornar para o primeiro plano, o app precisa restaurar o estado preservado e qualquer transação significativa com estado que estava pendente. Por exemplo: mudanças em campos editáveis, progresso do jogo, menus, vídeos e outras seções do app ou jogo.
|
|
Notificações | VX-S1 | CR-9 | As notificações seguem as diretrizes de design. Especificamente, as seguintes:
|
VX-S2 | CR-9 | Para apps de mensagens, sociais e conversas, siga estas recomendações:
| |
IU e gráficos | VX-U1 | CR-5 | O app oferece suporte às orientações de paisagem e retrato, além de estados do dispositivo dobrado e desdobrado. As orientações e os estados de dobra expõem essencialmente os mesmos recursos e ações e preservam a paridade funcional. |
VX-U2 | CR-5 | O app preenche a janela nas duas orientações e não tem efeito letterbox devido a mudanças de configuração, incluindo dobrar e desdobrar o dispositivo. Um leve efeito letterbox para compensar pequenas variações na geometria da tela é aceitável. |
|
VX-U3 | CR-5 | O app processa corretamente transições rápidas entre as orientações da tela e o dobrar e desdobrar do dispositivo sem problemas de renderização da tela e sem perder o 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.
|
VX-V2 | CR-all | O app exibe textos e blocos de texto de forma aceitável para cada um dos idiomas disponíveis.
|
|
VX-V3 | CR-all | O conteúdo do app e todo o conteúdo da Web mencionados pelo app têm suporte ao tema escuro. | |
Acessibilidade | VX-A1 | CR-all | As áreas de toque precisam ter pelo menos 48 dp. Saiba mais. |
VX-A2 | CR-all | O texto e o conteúdo em primeiro plano do app precisam manter uma taxa de contraste de cores alta o suficiente no segundo plano:
Saiba mais sobre cor e contraste. |
|
VX-A3 | CR-all | Descreva cada elemento da interface,
exceto TextView , usando contentDescription . |
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:
|
|
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 MediaStyleLINK (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 desnecessariamente longos em segundo plano. 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:
Aprenda a escolher a solução certa para seu trabalho. |
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 é destinado ao SDK do Android mais recente necessário para se alinhar aos requisitos do Google Play definindo o valor de targetSdk . |
|
PS-T3 | SP-1 | O app é criado com o SDK do Android mais recente definindo o valor de compileSdk . |
|
PS-T4 | SP-2 SP-3 |
Todos os SDKs do Google ou de terceiros usados estão atualizados. Qualquer melhoria nesses SDKs, como estabilidade, compatibilidade ou segurança, será disponibilizada aos usuários em tempo hábil.
Para SDKs do Google, use SDKs com a tecnologia do Google Play Services sempre que ela estiver disponível. Esses SDKs são compatíveis com versões anteriores, recebem atualizações automáticas, reduzem o tamanho do pacote de apps e usam os recursos do dispositivo com eficiência. O desenvolvedor é responsável por toda a base de código do app, incluindo os SDKs de terceiros usados. |
|
PS-T5 | SP-3 | O app não usa interfaces que não são SDK. | |
PS-T6 | SP-2 | Nenhuma biblioteca de depuração está incluída no app de produtividade. Isso pode causar problemas de desempenho e de segurança. | |
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. Consulte Suporte a outros casos de uso para os recursos Soneca e App em espera.
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 solicita 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, somente quando ela está diretamente relacionada aos principais casos de uso. 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 transmite claramente por que algumas permissões são necessárias ou segue o fluxo recomendado para explicar por que uma permissão é necessária. |
|
SC-P5 | CR-0 | O app precisa fazer uma degradação suave quando os usuários negam ou revogam 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 usa IDs de hardware que não podem ser redefinidos, como o IMEI, para fins de identificação. | ||
Identidade | SC-ID1 | CR-0 | O app oferece dicas para o preenchimento automático de 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 Gerenciador de credenciais para Android para ter uma experiência de login perfeita que unifica o suporte a chaves de acesso, identidade federada e senhas tradicionais. | |
SC-ID3 | CR-0 | O app oferece suporte à autenticação biométrica para proteger transações financeiras ou informações confidenciais, como documentos importantes do usuário. | |
Componentes do app | SC-AC1 | SC-5 |
O app define o atributo Apenas componentes de aplicativo que compartilham dados com outros apps ou que precisam ser invocados por outros apps são exportados. |
SC-AC2 | CR-0 SC-4 |
Todas as intents e transmissões seguem as práticas recomendadas:
|
|
SC-AC3 | SC-3 | Todos os componentes 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 pode 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 aplicativo 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. | ||
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.
Desde agosto de 2021, o uso de Android App Bundles é 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:
|
GP-D2 | GP-1 | As capturas de tela e vídeos do aplicativo não mostram ou referenciam dispositivos que não sejam 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. Além de testar para smartphones, também recomendamos testar outros formatos usando no mínimo os seguintes emuladores:
- Dispositivos dobráveis: 7,6" com tela externa (listados em smartphones no AVD Manager).
- Tablet: Pixel C 9,94" (2.560 px x 1.800 px).
- Para fazer testes de notificação de apps para dispositivos móveis, pareie um dispositivo móvel ou emulador com o Wear OS Round 1,84".
- 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.
- Teste com a versão mais recente do Android: além de testar versões representativas do Android para sua base de usuários de destino, sempre teste usando a versão mais recente do Android (atualmente o Android 14). 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.
|
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 as orientações paisagem e retrato e os estados dobrado e desdobrado 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 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()
.
Ative a notificação visual das violações da política para o
ThreadPolicy
usando
penaltyFlashScreen()
.