Close

Tutorial sobre pruebas de integración con Bitbucket Pipelines

Foto de Sten Pittet
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.

Sten Pittet
Sten Pittet

Llevo 10 años en el negocio del software desempeñando diversas funciones, desde el desarrollo hasta la gestión de productos. Tras pasar los últimos 5 años en Atlassian trabajando en herramientas para desarrolladores, ahora escribo sobre compilación de software. Fuera del trabajo, me dedico a perfeccionar mis habilidades como padre con el maravilloso hijo que tengo.


Compartir este artículo

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.

Ilustración de Devops

La comunidad de DevOps

Ilustración de Devops

Ruta de aprendizaje de DevOps

Ilustración de un mapa

Pruébalo gratis

Suscríbete para recibir el boletín de DevOps

Thank you for signing up