Testes da Plataforma Android

O Android Open Source Project (AOSP) oferece várias ferramentas e pacotes de testes para testar várias partes da implementação. Antes de usar as páginas desta seção, você precisa estar familiarizado com os seguintes termos:

Dispositivo compatível com Android
Um dispositivo que pode executar qualquer app criado por desenvolvedores de terceiros usando o SDK e o NDK do Android. Dispositivos compatíveis com Android precisam atender aos requisitos do Documento de definição de compatibilidade (CDD) e ser aprovados no Conjunto de teste de compatibilidade (CTS). Dispositivos compatíveis com Android podem participar do nosso ecossistema, que inclui potencial licenciamento do Google Play, potencial licenciamento do pacote de apps e APIs dos Serviços do Google Mobile (GMS) e uso da marca registrada do Android. Qualquer pessoa pode usar o código-fonte do Android, mas, para participar do nosso ecossistema, o dispositivo precisa ser compatível com o Android.
artefato
Um registro relacionado ao build que permite a solução local de problemas.
Documento de definição de compatibilidade (CDD)
Um documento que enumera os requisitos de software e hardware de um dispositivo compatível com o Android.
Conjunto de teste de compatibilidade (CTS)

Um pacote de testes de nível comercial grátis para download como binário ou como fonte no AOSP. O CTS é um pacote de testes de unidade criado para integração no seu fluxo de trabalho diário. O objetivo do CTS é revelar incompatibilidades e garantir que o software permaneça compatível durante todo o processo de desenvolvimento.

Os testes de CTS e de plataforma não são mutuamente exclusivos. Confira algumas diretrizes gerais:

  • Se um teste estiver afirmando a correção de funções ou comportamentos da API do framework e o teste precisar ser aplicado a parceiros OEM, ele precisará estar no CTS.
  • Se um teste tiver como objetivo detectar regressões durante o desenvolvimento da plataforma, e precisar de permissão privilegiada para ser realizado, além de depender de detalhes de implementação (conforme lançado no AOSP), ele será um teste de plataforma.
Serviços do Google Mobile (GMS)

Uma coleção de APIs e apps Google que podem ser pré-instalados em dispositivos.

GoogleTest (GTest) (em inglês)

Um framework de teste e simulação C++. Os binários do GTest geralmente acessam camadas de abstração de nível inferior ou executam uma IPC bruta em vários serviços do sistema. A abordagem de teste para o GTest geralmente está fortemente associada ao serviço que está sendo testado. O CTS contém o framework GTest.

teste de instrumentação

Um ambiente de execução de teste especial iniciado pelo comando am instrument, em que o processo de app de destino é reiniciado e inicializado com o contexto básico do app, e uma linha de execução de instrumentação é iniciada dentro da máquina virtual do processo do app. O CTS contém testes de instrumentação.

Logcat

Uma ferramenta de linha de comando que cria um registro de mensagens do sistema, incluindo rastros de pilha de quando o dispositivo gera um erro e mensagens que você escreveu no app com a classe Log.

Geração de registros

Usar um registro para acompanhar eventos do sistema do computador, como erros. A geração de registro no Android é complexa devido à combinação de padrões usados na ferramenta Logcat.

Teste pós-envio

Um teste do Android que é realizado quando um novo patch é confirmado em uma ramificação do kernel comum. Ao inserir aosp_kernel como um nome de ramificação parcial, é possível ver uma lista de ramificações do kernel com resultados disponíveis. Por exemplo, os resultados para android-mainline podem ser encontrados em https://ci.android.com/builds/branches/aosp_kernel-common-android-mainline/grid.

teste pré-envio

Um teste usado para evitar que falhas sejam introduzidas nos kernels comuns.

Trade Federation (link em inglês)

Também chamado de Tradefed, um framework de teste contínuo projetado para executar testes em dispositivos Android. Por exemplo, o Tradefed é usado para executar testes de conjunto de teste de compatibilidade e conjunto de teste de fornecedor.

Pacote de testes de fornecedor (VTS)

Um conjunto extensivo de recursos para testes do Android, promovendo um processo de desenvolvimento orientado a testes e automatizando a camada de abstração de hardware (HAL) e os testes do kernel do SO.

Tipos de testes de plataforma

Um teste de plataforma geralmente interage com um ou mais serviços do sistema Android ou camadas HAL, testa as funcionalidades do sujeito em teste e garante a correção do resultado do teste. Um teste de plataforma pode:

  • (Tipo 1) APIs de framework de exercício usando o framework do Android. As APIs específicas que estão sendo executadas podem incluir:
    • APIs públicas destinadas a apps de terceiros
    • APIs ocultas destinadas a apps privilegiados, ou seja, APIs do sistema ou privadas (@hide, protected ou package private).
  • (Tipo 2) Invocar serviços do sistema Android usando o binder bruto ou proxies de IPC diretamente.
  • (Tipo 3) Interagir diretamente com HALs usando APIs de baixo nível ou interfaces IPC.

Os testes de tipo 1 e 2 são geralmente testes de instrumentação, enquanto os testes de tipo 3 são geralmente testes G.

Qual é a próxima etapa?

Confira uma lista de documentos com informações mais detalhadas: