Automatización de pruebas (III): la aplicación no responde

Contenidos

Foto de Daniele Levis Pelusi en Unsplash

Introducción

Después de revisar la configuración remota y la configuración nativa, terminemos esta serie revisando el Configuración de la canalización de CI/CD necesarios para la automatización de pruebas. ¡Entonces vamos!

Breve resumen

flujo de trabajo de automatización

  1. Crear un proyecto de Firebase
  2. Configure el proyecto agregando un servicio de cuenta
  3. Habilitar resultado de herramientas en la nube
  4. Actualizar el proyecto de Android nativo subyacente
  5. Configurar el ejecutor de pruebas de Android nativo subyacente
  6. Configurar la canalización de Codemagic

6. Configure la canalización de Codemagic

Introducción

Codemagic de Nevercode es una herramienta de CI/CD desarrollada originalmente para aleteo. Sin embargo, hoy en día también ofrece soporte para casi todos los marcos móviles nativos o multiplataforma.

Codemagic automatiza el proceso de edificio, pruebas y entregar aplicaciones Además, todas las operaciones de compilación se realizan en sus servidores, por lo que no necesitamos ninguna infraestructura de nuestra parte.

Una vez que nos hayamos registrado en su web podremos hacerlo fácilmente vincular los repositorios de código fuente queremos integrar en nuestro pipeline. Además, esta herramienta ofrece soluciones gratuitas y de pago, lo que la hace adecuada para una variedad de proyectos.

crear flujos de trabajo

En Codemagic, los flujos de trabajo de compilación se pueden configurar de dos maneras:

Archivo codemagic.yaml local.
  • remotoque interactúan directamente con el editor disponible en la web
Editor de flujo de trabajo remoto en el sitio de Codemagic

Descripción general de codemagic.yaml

Para este proyecto usaremos el archivo codemagic.yaml. Personaliza nuestro mecanismo de compilación.

Cuando este archivo se agregue a nuestro repositorio de proyectos, se reconocerá de forma predeterminada, por lo que cada vez que comencemos una compilación, la configuración se extraerá automáticamente.

La siguiente captura de pantalla muestra la estructura completa de nuestro archivo de configuración:

flujo de trabajo de compilación codemagic.yaml

Estructura de codemagic.yaml

El componente raíz del archivo son los «Flujos de trabajo». sección. Un solo archivo puede contener muchos flujos (por ejemplo, uno para Android y otro para iOS), y cada uno de ellos puede tener su propia configuración.

La configuración específica del flujo de trabajo se define con diferentes titulares o subsecciones como:

  • accesorios generales: Establece tanto el nombre como la versión de la herramienta.
  • vecindad: declara secretos o claves necesarios para la compilación.
  • guiones: indica el proceso de compilación paso a paso.
  • artefactos: enumera todos los componentes generados después de la compilación (.ipa, .apk)
  • publicar: Indica los canales por los que se distribuye nuestra app.

Accesorios generales

Este bloque se utiliza principalmente para:

  • Proporcione una descripción al flujo de trabajo Apellido
  • especificar que tipo de maquina queremos usar al construir
  • detener la construcción duración tiempo

Alrededores

Ninguna referenciasAPI llave o misterios se puede definir aquí como datos cifrados o como texto sin formato (no recomendado). Una vez declarados, estos valores se pueden utilizar en cualquier sección del archivo.

Además, se pueden registrar variables grupos, para que podamos gestionarlos como un todo. Como resultado, al importar un grupo, obtenemos acceso instantáneo a todos sus valores.

Para el proyecto de ejemplo hemos definido:

  • un grupo llamado «google_credenciales»contiene las variables para el archivo de configuración de GCloud
  • una sola variable llamada «FIREBASE_PROJECT»con el identificador único de nuestro sitio web de Firebase

guiones

Esta sección es la Núcleo de nuestra canalización de compilaciónya que contiene los comandos que queremos ejecutar para crear nuestra aplicación.

Por ejemplo, si necesitamos actualizar las dependencias del proyecto, podemos agregar la siguiente declaración:

name: Get packages
script: |
   cd . && flutter packages pub get

Al definir la construcción, el orden es importante porque los bloques de script son ejecutado uno tras otro uno después del otro.

Para ejecutar nuestras pruebas de integración, necesitamos agregar un script Crear un APK de prueba (aparte del APK predeterminado):

name: Create both debug and test APK...  
script: |
   set -ex
   cd android
   ./gradlew app:assembleAndroidTest
   ./gradlew app:assembleDebug -Ptarget="$FCI_BUILD_DIR/integration_test/app_test.dart"

Después de eso, necesitamos insertar otro script para que el apk generado sea Subido a Firebase Remote Test Lab:

name: Upload to Firebase...  
script: |
   set -ex
   echo $GCLOUD_KEY_FILE | base64 --decode >   ./gcloud_key_file.json
   gcloud auth activate-service-account --key-file=gcloud_key_file.json
   
   gcloud --quiet config set project $FIREBASE_PROJECT
   gcloud firebase test android run \
      --type instrumentation \
      --app build/app/outputs/apk/debug/app-debug.apk \
      --test build/app/outputs/apk/androidTest/debug/app-debug-androidTest.apk \
      --timeout 5

Como se muestra en el fragmento, aquí usamos las variables/grupos y los APK generados en el paso anterior:

  • recuperamos la variable $GCLOUD_KEY_FILE, descifre su contenido y guarde el resultado en un archivo local. Cuando se crea, este archivo se usa para habilitar la cuenta de servicio
  • los llamamos $FIREBASE_PROJECT para establecer el identificador del proyecto
  • indicamos que apk y el apk de prueba utilizado al ejecutar nuestras pruebas

artefactos

Nada especial aquí ya que solo incluye aquellos Directorio para los archivos de salida creado después de la construcción.

publicaciones

Codemagic admite diferentes opciones a la hora de distribuir el generar resultados.

Además de las notificaciones por correo electrónico, también ofrece compatibilidad con webhooks, por lo que se puede conectar a aplicaciones de mensajería como Slack o Discord.

Bonus: Robo y pruebas de instrumentación

Al modificar ligeramente el script de compilación, podemos ejecutar los diferentes tipos de pruebas en Firebase Remote Test Lab.

Realización de pruebas de instrumentos.

gcloud firebase test android run \
   --type instrumentation \
   --app build/app/outputs/apk/debug/app-debug.apk \
   --test build/app/outputs/apk/androidTest/debug/app-debug-androidTest.apk \
   --timeout 5m

Realizar pruebas robóticas

gcloud firebase test android run \
   --type robo \
   --app build/app/outputs/apk/debug/app-debug.apk \
   --timeout 5m

Más configuración

El comando gcloud firebase test define propiedades opcionales que podemos agregar personalización a medida.

Por ejemplo, podemos declarar el Dispositivos Queremos usar al ejecutar nuestras pruebas agregando:

gcloud firebase test android run \
   --type instrumentation \
   --device=model=NexusLowRes \
   --...

Puede encontrar una referencia completa para este comando y todas sus propiedades aquí.

resumen

En esta serie hemos definido uno flujo de trabajo de automatización con herramientas gratuitas como Firebase y Codemagic. Como puedes ver, no es tan complicado como parecía al principio.

Además, la automatización tiene muchas ventajas sobre las pruebas manuales, por lo que creo que es «el camino a seguir». ¡Pruébalo y no dudes en compartir tus pensamientos y resultados!

proyecto de muestra

Como de costumbre, esto es lo que puede consultar repositorio al código fuente:

https://github.com/begomez/Flutter-Prueba-Automatización

¡Escríbeme la próxima vez!

referencias

https://blog.codemagic.io/empezando-con-codemagic/

https://github.com/codemagic-ci-cd/codemagic-sample-projects/tree/main/flutter/flutter-integration-tests-demo-project

Deja una respuesta

Tu dirección de correo electrónico no será publicada.