Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
Las siguientes son algunas formas típicas de automatización que te recomendamos usar en tu sistema de CI.
Trabajos básicos
Compilación: Cuando compilas un proyecto desde cero, te aseguras de que los cambios nuevos se compilen correctamente y de que todas las bibliotecas y herramientas sean compatibles entre sí.
Comprobaciones de Lint o estilo: Este es un paso opcional pero recomendado. Cuando aplicas reglas de diseño y realizas análisis estáticos, las revisiones de código pueden ser más concisas y enfocadas.
Pruebas locales o del lado del host: Se ejecutan en la máquina local que realiza la compilación. En Android, suele ser la JVM, por lo que es rápida y confiable. También incluyen las pruebas de Robolectric.
Existen varias opciones para ejecutar pruebas de instrumentación en CI:
Se pueden usar dispositivos administrados por Gradle para definir los dispositivos que se usarán (por ejemplo, "Emulador de Pixel 2 en el nivel de API 27") y controlar el aprovisionamiento de dispositivos.
La mayoría de los sistemas de CI incluyen un complemento de terceros (también llamado "acción", "integración" o "paso") para controlar los emuladores de Android.
Delega pruebas de instrumentación a una granja de dispositivos, como Firebase Test Lab.
Las granjas de dispositivos se usan por su alta confiabilidad y se pueden ejecutar en emuladores o dispositivos físicos.
Pruebas de regresión de rendimiento
Para supervisar el rendimiento de la app, recomendamos el uso de las bibliotecas de comparativas.
La automatización de las pruebas de rendimiento durante el desarrollo requiere dispositivos físicos para garantizar resultados coherentes y realistas.
La ejecución de comparativas puede llevar mucho tiempo, en especial cuando tienes una alta cobertura de código y recorridos de usuario que estás comparando. En lugar de ejecutar todas las comparativas para cada función o confirmación combinada, procura ejecutarlas como parte de una compilación de mantenimiento programada con regularidad, como una compilación nocturna.
Control del rendimiento
Puedes supervisar las regresiones de rendimiento con el ajuste de pasos. El ajuste de pasos define una ventana progresiva de los resultados de la compilación anterior que puedes comparar con la compilación actual. Este enfoque combina varios resultados de comparativas en una métrica específica de regresión. Puedes aplicar el ajuste por pasos para reducir el ruido durante las pruebas de regresión.
Esto reduce la cantidad de falsos positivos, que pueden ocurrir cuando los tiempos de las comparativas son lentos para una sola compilación y, luego, se vuelven a normalizar.
Cómo probar verificaciones de regresión de cobertura
La cobertura de pruebas es una métrica que puede ayudarte a ti y a tu equipo a decidir si las pruebas cubren un cambio lo suficiente. Sin embargo, no debería ser el único indicador. Es una práctica común configurar una verificación de regresión que falle o muestre una advertencia cuando la cobertura disminuya en relación con la rama base.
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,["# Types of CI automation\n\nThe following are some typical forms of automation that you might like to use in\nyour CI system.\n\nBasic jobs\n----------\n\n- **Build:** By building a project from scratch, you make sure that the new\n changes compile correctly and that all libraries and tools are compatible with\n each other.\n\n- **Lint or style checks:** This is an optional but recommended step. When you\n enforce style rules and perform [static analysis](/studio/write/lint), code reviews can be more\n concise and focused.\n\n- **[Local, or host-side tests](/training/testing/local-tests):** They run on the local machine that\n performs the build. On Android this is usually the JVM, so they're fast and\n reliable. They include Robolectric tests as well.\n\nInstrumented tests\n------------------\n\n[Tests that run on emulators or physical devices](/training/testing/instrumented-tests) require some provisioning,\nwaiting for devices to boot or be connected and other operations that add\ncomplexity.\n\nThere are multiple options to run instrumented tests on CI:\n\n- [Gradle Managed Devices](/studio/test/gradle-managed-devices) can be used to define the devices to use (for example \"Pixel 2 emulator on API 27\") and it handles device provisioning.\n- Most CI systems come with a third-party plugin (also called \"action\", \"integration\" or \"step\") to handle Android emulators.\n- Delegate instrumented tests to a device farm such as [Firebase Test Lab](https://firebase.google.com/docs/test-lab). Device farms are used for their high reliability and they can run on emulators or physical devices.\n\nPerformance regression tests\n----------------------------\n\nTo monitor app performance we recommend using the [benchmark libraries](/topic/performance/benchmarking/benchmarking-overview).\nAutomation of performance tests during development requires physical devices to\nensure consistent and realistic test results.\n\nRunning benchmarks can take a long time, especially when you have high coverage\nof code and user journeys that you are benchmarking. Instead of running all\nbenchmarks for every merged feature or commit, consider executing them as part\nof a regularly scheduled maintenance build, such as a nightly build.\n\n### Monitoring performance\n\nYou can monitor performance regressions using [step fitting](https://medium.com/androiddevelopers/fighting-regressions-with-benchmarks-in-ci-6ea9a14b5c71). Step\nfitting defines a rolling window of previous build results which you compare\nagainst the current build. This approach combines several benchmark results into\none regression-specific metric. You can apply step fitting to reduce noise\nduring regression testing.\n\nThis reduces the occurrence of false positives which can occur when benchmark\ntimes are slow for a single build and then normalize again.\n\nTest coverage regression checks\n-------------------------------\n\n[Test coverage](/studio/test/test-in-android-studio#view_test_coverage) is a metric that can help you and your team decide if tests\nsufficiently cover a change. However, it shouldn't be the only indicator. It is\ncommon practice to set up a regression check that fails or shows a warning when\nthe coverage goes down relative to the base branch.\n| **Note:** The coverage generated by an instrumentation test is different from that of a unit test as bigger tests typically make fewer assertions per line of tested code and their goal is different. Consider keeping two separate coverage metrics."]]