Tutorial sobre pruebas de integración con Bitbucket Pipelines
Sten Pittet
Escritor colaborador
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
Requisitos previos
- 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 to manage the repository and push it back to 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.
The bitbucket-pipelines.yml file should look something like this.
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.
Compartir este artículo
Tema siguiente
Lecturas recomendadas
Consulta estos recursos para conocer los tipos de equipos de DevOps o para estar al tanto de las novedades sobre DevOps en Atlassian.