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

Contenidos

Foto de EttiAmos en iStock

Introducción

En este artículo, revisaremos la configuración requerida para automatizar nuestro conjunto de pruebas usando un laboratorio de pruebas remoto y un Canalización de CI/CD.

proyecto de inicio

La aplicación…

Nuestra aplicación utilizada para las pruebas automatizadas es una bifurcación del proyecto fooderlich, una aplicación de recetas sociales disponible en el sitio web de raywenderlich.

Ana Polo ha convertido recientemente esto en una mezcla de recetas y una aplicación para gatos. Aunque no se incluyen las recetas para gatos ni como plato principal…

En cualquier caso, la aplicación utiliza un barra de navegación inferior como el principal mecanismo de navegación y contiene 3 módulos:

…y su conjunto de pruebas

La aplicación Fooderlich también incluye algunas pruebas de integración que se enumeran en «prueba_integración/prueba_aplicación.dart«Directorio.

Por cierto, si desea refrescar las pruebas, puede leer el artículo anterior sobre las pruebas de oro.

Puede encontrar más información sobre la arquitectura del proyecto, la estructura del proyecto y las pruebas aquí.

¿Cómo automatizaremos nuestras pruebas?

ingredientes principales

Nuestra estrategia de automatización de pruebas se basa en las siguientes herramientas:

  • UN laboratorio de pruebas remotoel entorno en el que se ejecutan las pruebas
  • UN tubería quién se encarga de construir, ejecutar y probar la aplicación

laboratorio de pruebas remoto

Firebase Test Lab es un entorno de prueba remoto que nos permite ejecutar pruebas en una variedad de dispositivos.

Es compatible con diferentes tipos de pruebasprincipalmente:

  • robot: Pruebas que son exploratorias y nos ayudan a descubrir errores realizando ciertas acciones aleatorias en la aplicación. Las acciones realizadas y/o el número de pantallas “exploradas” se pueden configurar fácilmente desde la consola.
  • instrumentación: Las pruebas se ejecutan en dispositivos reales o emuladores que verifican operaciones o funcionalidades específicas en la aplicación. Aunque requieren muchos recursos, proporcionan datos más precisos que otros tipos de pruebas porque trabajamos directamente con la plataforma móvil subyacente (no «simulamos» el SDK nativo como lo hacemos con las pruebas unitarias).

tubería

Por otro lado, Codemagic es una herramienta de CI/CD que facilita construir, ejecutar, probar y distribuir aplicaciones móviles.

Originalmente se creó como una herramienta pura de Flutter, así que es así. Diseñado para Flutter aplicaciones

Después de construir y compilar el ejecutable de la aplicación, Codemagic se conecta a Firebase para cargarlo y ejecutar nuestras pruebas automáticamente.

¡Veamos cómo podemos juntar todas estas partes móviles!

flujo de trabajo

Estos son los más importantes pasos requeridos para automatizar nuestra tubería de prueba:

  1. crear uno nuevo proyecto base de fuego
  2. Configure el proyecto de Firebase agregando un servicio de cuenta
  3. Permitir herramienta en la nube Resultados en GCloud
  4. Actualizar el nativo subyacente proyecto androide
  5. Configurar el nativo subyacente Ejecutor de pruebas de Android
  6. Configurar un flujo de trabajo de compilación código mágico

Como puede ver, los primeros pasos requieren configuración remota, mientras que los últimos requieren configuración local (dentro de nuestro proyecto).

1. Crea un nuevo proyecto de Firebase

Agrega un nuevo proyecto en Firebase console como se describe aquí.

Dado que solo usamos el nuevo proyecto como un contenedor a través del cual ejecutar las pruebas remotas, no es necesario agregar ninguna aplicación de Android o iOS. De hecho, no se requiere ninguna configuración adicional.

Descripción general de la consola de Firebase

Sin embargo, se requerirán proyectos de Android o iOS si nuestra aplicación utiliza otra función de Firebase, p. B. Autenticación de terceros.

2. Agregar una cuenta de servicio

Las cuentas de servicio están acostumbradas identificar una característica específica dentro de nuestro proyecto Firebase y conceder o denegar el acceso a él. En pocas palabras, piense en estos como elementos de autorización.

De hecho, las cuentas de servicio se derivan de «Gestión de identidad y acceso (IAM)” y nos permiten definir el tipo de acceso (aka rol) que alguien o algo (aka identidad) tiene a un recurso dado.

Como se mencionó, nuestras pruebas de integración se ejecutan en Firebase Remote Lab, pero se inician desde la tubería Codemagic CI/CD. Entonces necesitamos una cuenta de servicio para otorgar permisos de acceso.

Para crear una nueva cuenta de servicio en Firebase, vaya a

Inicio -> Configuración del proyecto -> Cuentas de servicio

y luego haga clic en « cuentas de servicio” artículo como se muestra a continuación:

Cuenta de servicio en Firebase Console

Luego será redirigido a Google Cloud Console. En el menú de la izquierda seleccione:

Cuentas de servicio -> Crear cuenta de servicio

Crear una cuenta de servicio en Google Cloud

Cuando Crear la cuenta:

  • En el paso 1, ingrese el nombre y la descripción
  • En el paso 2, seleccione la función

    Base -> Editor

  • En el paso 3, puede hacer clic en «Omitir» por ahora

Puede encontrar más información sobre la creación de cuentas aquí.

Una vez creada, la clave de la cuenta de servicio se puede descargado como un archivo JSON por elección:

Cuenta de servicio -> Menú contextual -> Administrar claves -> Agregar nueva clave

El contenido de este archivo será necesario al configurar la canalización de CI/CD, así que por ahora recuerde la carpeta donde lo guardó.

¡Sólo una cosa! Antes de que podamos usar la clave de la cuenta de servicio, debemos convertirla a base64 ejecutando el siguiente comando:

gato //gcloud_key_file.json | base64 | copia pb

El último comando (pbcopy) solo guarda el contenido generado en nuestro portapapeles, por lo que podemos copiarlo y pegarlo fácilmente en otro lugar.

También se requiere la API de resultados de Cloud Tools para habilitar la comunicación entre los diversos procesos en la canalización y el laboratorio de prueba remoto.

Se puede activar a través de GCloud utilizando el siguiente enlace. Simplemente haga clic en el botón y listo.

Compatibilidad con Firebase y GCloud

Ven…

En el próximo artículo los repasaremos pasos restantes del flujo de trabajo anterior y también revisaremos los informes generados una vez que se ejecute nuestro conjunto de pruebas.

proyecto de muestra

Hasta entonces, echa un vistazo a lo siguiente repositorio contiene el proyecto completo:

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

¡Escríbeme la próxima vez!

Deja una respuesta

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