Tutorial sobre pruebas de integración con Bitbucket Pipelines

Aprende a ejecutar pruebas de integración con Bitbucket Pipelines poniendo en marcha varios servicios en contenedores Docker independientes en un canal.

Las pruebas son una parte esencial de la integración y la entrega continuas. AdemÔs, si practicas la implementación continua, serÔn la última línea de defensa contra errores antes de que los cambios se publiquen para el cliente. Las pruebas unitarias que validan métodos y clases individuales son un gran punto de partida para prevenir incidencias, pero también deberÔs ejecutar pruebas de integración para garantizar que los módulos que utiliza la aplicación (servidor de aplicaciones, base de datos, caché) interactúan correctamente entre sí. En este tutorial, aprenderÔs a ejecutar pruebas de integración con Bitbucket Pipelines poniendo en marcha varios servicios en contenedores Docker independientes en una canalización.

Duración

30 minutos

PĆŗblico

Es tu primera vez con la integración continua o Bitbucket Pipelines

REQUISITO PREVIO

  • Una cuenta de Bitbucket

  • Nodo v4.6 o superior para ejecutar la aplicación

  • Docker Community Edition v17.03 o superior para ejecutar MongoDB en la mĆ”quina local

  • Un terminal para ejecutar comandos bash

  • Git para gestionar el repositorio y enviarlo de vuelta a Bitbucket Cloud

Paso 1: Ejecuta la aplicación de muestra de forma local

Utilizaremos una aplicación bÔsica Node.js que muestra un mensaje en la pÔgina de inicio y registra visitas en una base de datos. Para centrarte en la configuración de Bitbucket Pipelines, puedes clonar la aplicación desde tu terminal.

git clone git@bitbucket.org:spittet/bitbucket-pipelines-services-tutorial.git

Ahora, ve a tu repositorio local y ejecuta npm install para instalar las dependencias que requiere la aplicación.

cd bitbucket-pipelines-services-tutorial
npm install

Antes de ejecutar la aplicación, tendremos que iniciar una nueva instancia MongoDB. Gracias a Docker, puedes hacerlo fÔcilmente desde tu terminal. 

docker run --name mongodb -d -p 27017:27017 mongo

A continuación, inicia la aplicación y ve a http://localhost:3000 para verlo en acción.

npm start

Puedes ir a http://localhost:3000/visitsĀ para comprobar que se ha registrado una visita en la base de datos.

Finalmente, asegurémonos de que las pruebas se estÔn realizando satisfactoriamente de forma local mediante la prueba de comando npm. VerÔs dos pruebas completadas tras ejecutar ese comando.

npm test

Esta aplicación de muestra estÔ ejecutando dos pruebas diferentes:

  • Una prueba que verifica que la aplicación muestraĀ Hello WorldĀ en la pĆ”gina de inicio.

  • Una prueba que comprueba si se registra una nueva visita en la base de datos cada vez que alguien accede a la pĆ”gina de inicio.

La primera prueba se pasa aunque la base de datos esté inactiva, pero la segunda es una prueba de integración que comprueba que la aplicación web interactúa correctamente con el servidor de base de datos. También podría considerarse una prueba funcional, ya que verifica algunos de los requisitos de negocio de la aplicación. Puedes obtener mÔs información sobre los diferentes tipos de pruebas en nuestra guía.

Ahora veremos cómo puedes utilizar Bitbucket Pipelines para automatizar las pruebas de la aplicación y configurarlas para que funcionen bien con una base de datos.

Paso 2: Ejecuta pruebas automƔticamente con Bitbucket Pipelines

Para empezar, crea un nuevo repositorio en tu cuenta de Bitbucket y actualiza la URL remota para que el origen apunte a tu repositorioĀ de Bitbucket.

git remote add bitbucket git@bitbucket.org:<account name>/<repository name>.git
git branch -m mainline
git push -u bitbucket mainline

Ve a la sección [Pipelines] del repositorio y habilita [Bitbucket Pipelines].

Puedes usar la plantilla JavaScript predeterminada de la siguiente pantalla. Ya tendrÔs los comandos npm test y npm install  que necesitas para instalar dependencias y ejecutar el conjunto de pruebas.

El archivo bitbucket-pipelines.yml deberĆ­a tener un aspecto similar al siguiente:

image: node:16

pipelines:
  default:
    - parallel:
        - step:
            name: Build and Test
            caches:
              - node
            script:
              - npm install
              - npm test

Falta el servicio de base de datos, pero lo aƱadiremos mƔs adelante.

Cuando confirmes el archivo, pasarÔs a la sección [Pipelines] del repositorio, donde verÔs tu primera canalización en curso. La canalización fallarÔ porque la segunda prueba no se puede ejecutar correctamente sin una conexión a la base de datos. Si haces clic en la canalización, deberías ver una pantalla parecida a la de abajo, que te indicarÔ que una prueba estÔ superada y una ha fallado.

En la siguiente sección, añadiremos una nueva definición de servicio a la configuración de Pipelines para resolver el problema.

Paso 3: Añade una definición de servicio para la base de datos

Con Bitbucket Pipelines puedes ejecutar hasta tres contenedores Docker extra ademÔs de la aplicación principal que se ejecute en una canalización. Puedes utilizar estos contenedores para ejecutar servicios como un almacén de datos, una herramienta de anÔlisis o cualquier servicio de terceros que tu aplicación necesite para completar la canalización. En nuestro caso, utilizaremos un contenedor de servicio independiente para ejecutar MongoDB.

Ve a la sección de origen del repositorio para ver la lista de archivos.

Haz clic en el archivo de configuración bitbucket-pipelines.yml para acceder a él. VerÔs un botón de edición en la esquina superior derecha con el que podrÔs editar el archivo y confirmar directamente desde el navegador.

Hay que añadir una definición de servicio para nuestra base de datos en la parte inferior del archivo de configuración.

bitbucket-pipelines.yml

image: node:16

pipelines:
  default:
    - step:
        script:
          - npm install
          - npm test

definitions:
  services:
    database:
      image: mongo

En el caso de MongoDB, no necesitamos hacer ajustes de configuración extra en la definición de imagen; sin embargo, con algunas imÔgenes de Docker para almacenes de datos y servicios, puede ser necesario especificar variables de entorno. Puedes encontrar una lista de ejemplos de bases de datos en la documentación de Bitbucket Pipelines.

Antes de confirmar el archivo, añade el nuevo servicio al paso que estÔ ejecutando las pruebas. La configuración final de Pipelines debe ser como la de este código.

bitbucket-pipelines.yml

image: node:16

pipelines:
  default:
    - step:
        script:
          - npm install
          - npm test
        services:
          - database

definitions:
  services:
    database:
      image: mongo

Ve a la sección [Pipelines] después de confirmar el archivo para ver la canalización en curso. Normalmente, debería completarse correctamente.

Puedes hacer clic en la pestaña de base de datos del panel de registros para ver los registros del contenedor MongoDB.

”Eso es todo! Ahora ya sabes añadir servicios a tu canalización para ejecutar pruebas de integración. Recuerda leer la documentación para obtener mÔs información sobre cómo utilizar estos servicios.

Recomendado para ti

La comunidad de DevOps

Ruta de aprendizaje de DevOps

PruƩbalo gratis