A partir de 27 de março de 2025, recomendamos usar android-latest-release
em vez de aosp-main
para criar e contribuir com o AOSP. Para mais informações, consulte Mudanças no AOSP.
Testes da plataforma Android
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
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 conhecer 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 de problemas local.
- 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 todos os 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, e pode depender
de detalhes de implementação (conforme lançado no AOSP), ele precisa 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)
Um framework de teste e simulação C++. Os binários do GTest normalmente
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 de post-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, você
vai encontrar 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 antes do envio
Um teste usado para evitar que falhas sejam introduzidas nos
kernels comuns.
- Federação de comércio
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 do conjunto de teste de compatibilidade e do conjunto de teste do fornecedor.
- Conjunto de teste de fornecedor (VTS)
Um conjunto de recursos amplos para
testes do Android, promovendo um processo de desenvolvimento orientado por testes e automatizando
a camada de abstração de hardware (HAL) e o teste 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 objeto em teste e garante a correção do
resultado do teste. Um teste de plataforma pode:
- (Tipo 1) Exercite APIs de framework usando o framework do Android. APIs específicas que estão
sendo usadas podem incluir:
- APIs públicas destinadas a apps de terceiros
- APIs ocultas destinadas a apps privilegiados, ou seja, APIs do sistema ou
privadas (
@hide
ou protected
, 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 geralmente são testes de instrumentação, enquanto os testes de tipo 3 geralmente são
GTests.
Quais são as próximas etapas?
Confira uma lista de documentos com informações mais detalhadas:
Se você não estudou a arquitetura do Android, consulte
Visão geral da arquitetura.
Se você estiver criando um dispositivo compatível com o Android, consulte
a visão geral do Programa de compatibilidade do Android.
Para integrar testes de aferição, funcionais, métricas e de host JAR
a um serviço de teste contínuo da plataforma, consulte
Fluxo de trabalho de desenvolvimento de testes.
Para detectar e proteger seus dispositivos contra vulnerabilidades,
consulte Testes de segurança.
Para saber mais sobre como testar as implementações de HAL e kernel, consulte
Conjunto de teste de fornecedor (VTS) e infraestrutura.
Para testar apps, leia
Noções básicas de teste de apps
Android
e realize o Android avançado no Kotlin 05.1:Noções
básicas de teste
usando as
amostras fornecidas.
Saiba mais sobre os testes básicos de pré-envio disponíveis para você nos hooks de repositório.
Esses hooks podem ser usados para executar linters, verificar a formatação e acionar testes de
unidade antes de prosseguir, como fazer upload de uma confirmação. Esses hooks são desativados
por padrão. Para mais informações, consulte Hooks de pré-upload
do AOSP.
Para saber mais sobre a geração de registros, consulte Entender a geração de registros.
Para entender como depurar código do Android, consulte
Depurar código nativo da plataforma Android.
O conteúdo e os exemplos de código nesta página estão sujeitos às licenças descritas na Licença de conteúdo. Java e OpenJDK são marcas registradas da Oracle e/ou suas afiliadas.
Última atualização 2025-07-27 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-07-27 UTC."],[],[],null,["# Android platform testing\n\nAndroid Open Source Project (AOSP) provides several tools and test suites\nfor testing various parts of your implementation. Before using the pages in this\nsection, you should be familiar with the following terms:\n\n*Android-compatible device*\n: A device that can run any third-party app written by third-party developers\n using the Android SDK and NDK. Android-compatible devices must adhere to the\n requirements of the\n [Compatibility Definition Document (CDD)](#CDD) and pass the\n [Compatibility Test Suite (CTS)](#cts). Android-compatible\n devices are eligible to participate in the Android ecosystem, which includes\n potential licensure of Google Play, potential licensure of the\n [Google Mobile Services (GMS)](#gms) suite of\n app and APIs, and use of the Android trademark. Anyone is welcome to\n use the Android source code, but to be considered part of the Android ecosystem,\n a device must be Android compatible.\n\n*artifact*\n: A build-related log that enables local troubleshooting.\n\n*Compatibility Definition Document (CDD)*\n: A document that enumerates the software and hardware requirements for an\n Android-compatible device.\n\n*Compatibility Test Suite (CTS)*\n\n: A free, commercial-grade test suite, available for download as a binary or as\n source in AOSP. The CTS is a set of unit tests designed to be integrated into\n your daily workflow. The intent of CTS is to reveal incompatibilities, and\n ensure that the software remains compatible throughout the development process.\n\n CTS and platform tests aren't mutually exclusive. Here are some general\n guidelines:\n\n - If a test is asserting correctness of framework API functions or behaviors, and the test should be enforced across OEM partners, it should be in CTS.\n - If a test is intended to catch regressions during platform development, and might require privileged permission to carry out, and might be dependent on implementation details (as released in AOSP), it should be a platform test.\n\n*Google Mobile Services (GMS)*\n\n: A collection of Google apps and APIs that can be preinstalled on devices.\n\n*GoogleTest (GTest)*\n\n: A C++ testing and mocking framework. GTest binaries typically\n access lower-level abstraction layers or perform raw IPC against various system\n services. The testing approach for GTest is usually tightly coupled with the\n service being tested. CTS contains the GTest framework.\n\n*instrumentation test*\n\n: A special test execution environment\n launched by the `am instrument` command, where the targeted app process\n is restarted and initialized with basic app context, and an\n instrumentation thread is started inside the app process virtual\n machine. CTS contains instrumentation tests.\n\n*Logcat*\n\n: A command-line tool that creates a log of system messages, including\n stack traces of when the device throws an error and messages that you have\n written from your app with the `Log` class.\n\n*logging*\n\n: Using a log to keep track of computer system events, such\n as errors. Logging in Android is complex due to the mix of standards used that\n are combined in the Logcat tool.\n\n*postsubmit test*\n\n: An Android test that is performed when a new patch is committed to a\n common kernel branch. By entering `aosp_kernel` as a partial branch name, you\n can see a list of kernel branches with results available. For example, results\n for `android-mainline` can be found at\n \u003chttps://ci.android.com/builds/branches/aosp_kernel-common-android-mainline/grid\u003e.\n\n*presubmit test*\n\n: A test used to prevent failures from being introduced into the\n common kernels.\n\n*Trade Federation*\n\n: Also called Tradefed, a continuous test\n framework designed for running tests on Android devices. For example,\n Tradefed is used to run Compatibility Test Suite and Vendor Test Suite tests.\n\n*Vendor Test Suite (VTS)*\n\n: A set of extensive capabilities for\n Android testing, promoting a test-driven development process, and automating\n hardware abstraction layer (HAL) and OS kernel testing.\n\nPlatform test types\n-------------------\n\nA platform test typically interacts with one or more of the Android system\nservices or HAL layers, exercises the\nfunctionalities of the subject under test, and asserts correctness of the\ntesting outcome. A platform test might:\n\n- (Type 1) Exercise framework APIs using Android framework. Specific APIs being exercised can include:\n - Public APIs intended for third-party apps\n - Hidden APIs intended for privileged apps, namely system APIs or private APIs (`@hide`, or `protected`, `package private`)\n- (Type 2) Invoke Android system services using raw binder or IPC proxies directly.\n- (Type 3) Interact directly with HALs using low-level APIs or IPC interfaces.\n\nType 1 and 2 tests are typically instrumentation tests, while type 3 tests are\nusually GTests.\n\nWhat's next?\n------------\n\nHere is a list of documents that you can read for more detailed information:\n\n- If you haven't studied Android architecture, see\n [Architecture overview](/docs/core/architecture).\n\n- If you're creating an Android-compatible device, see\n the [Android compatibility program overview](/docs/compatibility/overview).\n\n- To integrate instrumentation, functional, metric, and JAR host tests\n into a platform continuous testing service, see\n [Test development workflow](/docs/core/tests/development).\n\n- To detect and harden your devices against vulnerabilities,\n see [Security testing](/docs/security/test/fuzz-sanitize).\n\n- To learn about testing your HAL and kernel implementations, see\n [Vendor Test Suite (VTS) and infrastructure](/docs/core/tests/vts).\n\n- For app testing, read\n [Fundamentals of testing Android\n apps](https://developer.android.com/training/testing/fundamentals)\n and conduct the [Advanced Android in Kotlin 05.1:Testing\n Basics](https://codelabs.developers.google.com/codelabs/advanced-android-kotlin-training-testing-basics/index.html)\n using the\n [samples](https://github.com/android/testing-samples) provided.\n\n- Learn about the basic presubmit testing available to you through repo hooks.\n These hooks can be used to run linters, check formatting, and trigger unit\n tests before proceeding, such as uploading a commit. These hooks are disabled\n by default. For further information, see [AOSP Preupload\n Hooks](https://android.googlesource.com/platform/tools/repohooks/+/refs/heads/android16-release/README.md).\n\n- To read more about logging, see [Understand logging](/docs/core/tests/debug/understanding-logging).\n\n- To understand how to debug Android code, see\n [Debug native Android platform code](/docs/core/tests/debug)."]]