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
Crear un proyecto de FirebaseConfigure el proyecto agregando un servicio de cuentaHabilitar resultado de herramientas en la nubeActualizar el proyecto de Android nativo subyacenteConfigurar el ejecutor de pruebas de Android nativo subyacente- 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:
- remotoque interactúan directamente con el editor disponible en la web
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:
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