Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Tests de Integración automatizados con Docker y...

Tests de Integración automatizados con Docker y Bamboo

Lo más habitual es que las aplicaciones informáticas necesiten conectarse con muy diversos sistemas, a través de diferentes protocolos: bases de datos, servicios REST, los propios sistemas operativos... Realizar pruebas de integración para asegurarnos la correcta comunicación de todos estos sistemas es fundamental para crear un software robusto y de calidad.

Tradicionalmente estas pruebas son costosas y árduas, y dificilmente automatizables. En esta charla veremos cómo preparar en pocos pasos un plan de construcción en Bamboo (la herramienta de integración continua de Atlassian) que automatice las pruebas de integración con diferentes sistemas mediante contenedores Docker, construyendo en tiempo de ejecución toda la infraestructura necesaria para realizar los tests.

Fernando Llaca

November 19, 2016
Tweet

More Decks by Fernando Llaca

Other Decks in Programming

Transcript

  1. Objetivos ✖ Conceptos básicos sobre pruebas de integración ✖ Qué

    son Docker y Bamboo ✖Configurar un plan de integración continua basado en contenedores Docker. ✖Aspectos a tener en cuenta al lanzar pruebas de integración “dockerizadas”
  2. DIFICULTADES Instalación / Configuración compleja Networking IPs/puertos pueden cambiar Sucesivas

    ejecuciones Corrompen el entorno Stubs (Mucho esfuerzo) Escalabilidad / Paralelización Costosa Mantenimiento (Upgrades del software)
  3. DIFICULTADES Instalación / Configuración compleja Networking IPs/puertos pueden cambiar Sucesivas

    ejecuciones Corrompen el entorno Stubs (Mucho esfuerzo) Escalabilidad / Paralelización Costosa Mantenimiento (Upgrades del software)
  4. DIFICULTADES Instalación / Configuración compleja Networking IPs/puertos pueden cambiar Sucesivas

    ejecuciones Corrompen el entorno Stubs (Mucho esfuerzo) Docker images: probamos contra la aplicación real
  5. DIFICULTADES Instalación / Configuración compleja Networking IPs/puertos pueden cambiar Sucesivas

    ejecuciones Corrompen el entorno Stubs (Mucho esfuerzo) Escalabilidad / Paralelización costosa Cluster Swarm / docker-compose
  6. DIFICULTADES Instalación / Configuración compleja Networking: Ip/puertos pueden cambiar Sucesivas

    ejecuciones Corrompen el entorno Stubs (Mucho esfuerzo) Escalabilidad / Paralelización costosa Docker images: simplemente cambiar el tag/image Mantenimiento (Upgrades del software)
  7. DIFICULTADES Instalación / Configuración compleja Networking Ip/puertos pueden cambiar Sucesivas

    ejecuciones Corrompen el entorno Stubs (Mucho esfuerzo) Escalabilidad / Paralelización costosa Mantenimiento (Upgrades del software)
  8. 1. Crear Contenedores de las aplicaciones que queremos integrar PROCESO

    1.1 Alimentar con datos 1.2. Enlazar contenedores 2. Ejecutar pruebas (¡también en un contenedor!) 3. Eliminar contenedores 4. Procesar resultado de las pruebas
  9. Software dependencies o Dependencias Maven o node_modules o ... Volúmenes

    Docker: docker run -v /home/ubuntu/.m2:/root/.m2 \ maven:latest
  10. Test Data Storage o Montar en volúmenes o Subdirectorio en

    el control de versiones o Repositorio propio o Repositorio de artefactos o Docker imágenes (con datos de pruebas)
  11. Scalability o Red / nombres de contenedor basados en el

    número del build o Clustering (Docker Swarm)