A partir del 27 de marzo de 2025, te recomendamos que uses android-latest-release
en lugar de aosp-main
para compilar y contribuir a AOSP. Para obtener más información, consulta Cambios en AOSP.
Pruebas de la plataforma de Android
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
El Proyecto de código abierto de Android (AOSP) proporciona varias herramientas y paquetes de pruebas para probar varias partes de tu implementación. Antes de usar las páginas de esta sección, debes familiarizarte con los siguientes términos:
- Dispositivo compatible con Android
- Un dispositivo que puede ejecutar cualquier app escrita por desarrolladores externos que utilicen el SDK y el NDK de Android. Los dispositivos compatibles con Android deben cumplir con los requisitos del documento de definición de compatibilidad (CDD) y aprobar el Conjunto de pruebas de compatibilidad (CTS). Los dispositivos compatibles con Android son aptos para participar en el ecosistema de Android, que incluye una licencia potencial de Google Play y del paquete de aplicaciones y APIs de los Servicios de Google para dispositivos móviles (GMS), y el uso de la marca Android. Si bien todos pueden usar el código fuente de Android, para ser considerado parte del ecosistema, un dispositivo debe ser compatible con Android.
- artefacto
- Un registro relacionado con la compilación que permite solucionar problemas locales.
- Documento de definición de compatibilidad (CDD)
- Un documento que enumera los requisitos de software y hardware para un dispositivo compatible con Android.
- Conjunto de pruebas de compatibilidad (CTS)
Un paquete de pruebas gratuito y de calidad comercial disponible para descargar como objeto binario o como fuente en el AOSP. El CTS es un conjunto de pruebas de unidades diseñado para integrarse en tu flujo de trabajo diario. Su objetivo es mostrar incompatibilidades y garantizar que el software siga siendo compatible a lo largo del proceso de desarrollo.
Las pruebas de CTS y de la plataforma no son mutuamente excluyentes. A continuación, se indican algunos lineamientos generales:
- Si una prueba confirma la exactitud de las funciones o los comportamientos de la API del framework, y la prueba debe aplicarse a todos los socios OEM, debe estar en CTS.
- Si el objetivo de una prueba es detectar regresiones durante el desarrollo de la plataforma, y es posible que requiera un permiso de privilegio para llevarla a cabo, y puede depender de los detalles de la implementación (como se publica en AOSP), debe ser una prueba de plataforma.
- Servicios de Google para dispositivos móviles (GMS)
Una colección de apps y APIs de Google que se pueden preinstalar en dispositivos.
- GoogleTest (GTest)
Un framework de prueba y simulación de C++. Por lo general, los objetos binarios de GTest acceden a capas de abstracción de nivel inferior o realizan IPC sin procesar con varios servicios del sistema. El enfoque de prueba para GTest suele estar estrechamente relacionado con el servicio que se prueba. CTS contiene el framework de GTest.
- prueba de instrumentación
Es un entorno de ejecución de prueba especial que inicia el comando am instrument
, en el que se reinicia y se inicializa el proceso de la app de destino con el contexto básico de la app, y se inicia un subproceso de instrumentación dentro de la máquina virtual del proceso de la app. CTS contiene pruebas de instrumentación.
- Logcat
Es una herramienta de línea de comandos que crea un registro de mensajes del sistema, incluidos los seguimientos de pila de cuando el dispositivo muestra un error y los mensajes que escribiste desde tu app con la clase Log
.
- registro
Usar un registro para hacer un seguimiento de los eventos del sistema informático, como los errores El proceso de registro en Android es complejo debido a la combinación de estándares que se combinan en la herramienta Logcat.
- prueba posterior al envío
Es una prueba de Android que se realiza cuando se confirma un nuevo parche en una rama de kernel común. Si ingresas aosp_kernel
como nombre de rama parcial, podrás ver una lista de ramas de kernel con resultados disponibles. Por ejemplo, los resultados de android-mainline
se pueden encontrar en https://ci.android.com/builds/branches/aosp_kernel-common-android-mainline/grid.
- prueba previa al envío
Es una prueba que se usa para evitar que se introduzcan fallas en los kernels comunes.
- Federación comercial
También se lo conoce como Tradefed, un framework de pruebas continuas diseñado para ejecutar pruebas en dispositivos Android. Por ejemplo, Tradefed se usa para ejecutar pruebas del Compatibility Test Suite y del Vendor Test Suite.
- Conjunto de pruebas de proveedores (VTS)
Un conjunto de capacidades amplias para las pruebas de Android, que promueve un proceso de desarrollo basado en pruebas y automatiza las pruebas de la capa de abstracción de hardware (HAL) y del kernel del SO.
Tipos de pruebas de plataforma
Por lo general, una prueba de plataforma interactúa con uno o más de los servicios del sistema Android o las capas de HAL, ejercita las funciones del sujeto de prueba y confirma la exactitud del resultado de la prueba. Una prueba de plataforma puede hacer lo siguiente:
- (Tipo 1) Usa las APIs del framework de ejercicio con el framework de Android. Entre las APIs específicas que se usan, se pueden incluir las siguientes:
- APIs públicas para apps de terceros
- APIs ocultas destinadas a apps con privilegios, es decir, APIs del sistema o APIs privadas (
@hide
, protected
o package private
)
- (Tipo 2) Invoca los servicios del sistema Android directamente con Binder sin procesar o proxies de IPC.
- (Tipo 3) Interactúa directamente con los HAL mediante APIs de bajo nivel o interfaces de IPC.
Por lo general, las pruebas de tipo 1 y 2 son pruebas de instrumentación, mientras que las pruebas de tipo 3 suelen ser GTests.
Próximos pasos
Esta es una lista de documentos que puedes leer para obtener información más detallada:
Si no estudiaste la arquitectura de Android, consulta Descripción general de la arquitectura.
Si estás creando un dispositivo compatible con Android, consulta la descripción general del programa de compatibilidad de Android.
Para integrar pruebas de instrumentación, funcionales, métricas y de host de JAR
en un servicio de pruebas continuas de la plataforma, consulta
Flujo de trabajo de desarrollo de pruebas.
Para detectar vulnerabilidades y endurecer tus dispositivos contra ellas, consulta Pruebas de seguridad.
Para obtener información sobre cómo probar tus implementaciones de HAL y kernel, consulta Conjunto de pruebas de proveedores (VTS) e infraestructura.
Para las pruebas de apps, lee Aspectos básicos de las pruebas de apps para Android y realiza la actividad Aspectos avanzados de Android en Kotlin 05.1:Aspectos básicos de las pruebas con los ejemplos proporcionados.
Obtén información sobre las pruebas previas al envío básicas que tienes disponibles a través de los hooks de repo.
Estos hooks se pueden usar para ejecutar linters, verificar el formato y activar pruebas de unidades antes de continuar, como subir una confirmación. Estos hooks están inhabilitados de forma predeterminada. Para obtener más información, consulta Hooks de carga previa de AOSP.
Para obtener más información sobre el registro, consulta Información sobre el registro.
Para comprender cómo depurar código de Android, consulta Cómo depurar código nativo de la plataforma de Android.
El contenido y las muestras de código que aparecen en esta página están sujetas a las licencias que se describen en la Licencia de Contenido. Java y OpenJDK son marcas registradas de Oracle o sus afiliados.
Última actualización: 2025-07-27 (UTC)
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 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)."]]