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
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.gitAhora, ve a tu repositorio local y ejecuta npm install para instalar las dependencias que requiere la aplicación.
cd bitbucket-pipelines-services-tutorial
npm installAntes 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 mongoA 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 mainlineVe 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 testFalta 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: mongoEn 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: mongoVe 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.