Tipos de automatización de CI

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.

Pruebas instrumentadas

Las pruebas que se ejecutan en emuladores o dispositivos físicos requieren cierto aprovisionamiento, esperando a que los dispositivos se inicien o se conecten y otras operaciones que agreguen complejidad.

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.