After tests marzo 2017: Pruebas de Integración Automatizadas con Docker

Post on 06-Apr-2017

35 views 5 download

Transcript of After tests marzo 2017: Pruebas de Integración Automatizadas con Docker

Pruebas de Integración automatizadas con

Docker

¡HoLA!Soy Fernando Llaca

Software Engineer at BEEVA

@nandollacaferllarom@gmail.com

Objetivos ✖  Conceptos básicos sobre pruebas de 

integración

✖ Qué son Docker y Jenkins

✖Configurar un plan de integración continua basado en contenedores Docker.

✖Aspectos a tener en cuenta al lanzar pruebas de integración “dockerizadas”

1.Pruebas de Integración

¿Vemos algunas?

Pruebas de regresión

Pruebas de Sistema

Pruebas End-to-End

Pruebas funcionales

Pruebas de regresión

Pruebas de Sistema

Pruebas End-to-End

Pruebas funcionales

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)

Antes de continuar...¿Os suenan Docker y Jenkins?

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)

DIFICULTADES

Imágenes Docker pre-configuradas

Instalación /Configuración compleja

DIFICULTADES

Instalación /Configuración compleja

Networking IPs/puertos pueden cambiar

Internal DNS

DIFICULTADES

Instalación /Configuración compleja

Networking IPs/puertos pueden cambiar

Sucesivas ejecuciones Corrompen el entorno

Containers creados al vuelo

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

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

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)

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)

¡PROPUESTA!Sí, sí, muy bien, ¿pero cómo?

(Run tests)

Containers

External Dependencies

VCS

1. Crear Contenedores de las aplicaciones que queremos integrar

PROCESO

1.1 Alimentar con datos1.2. Enlazar contenedores

2. Ejecutar pruebas (¡también en un contenedor!)

3. Eliminar contenedores

4. Procesar resultado de las pruebas

Veamos la Demohttps://github.com/fllaca/itests-docker-demo

CONSIDERACIONESOjito con...

Networkingo DNS interno de Dockero Docker compose

Software dependencieso Dependencias Maveno node_moduleso ...

Volúmenes Docker:docker run -v /home/ubuntu/.m2:/root/.m2 \

maven:latest

Test Data Storageo Montar en volúmeneso Subdirectorio en el

control de versioneso Repositorio propioo Repositorio de

artefactos o Docker imágenes (con

datos de pruebas)

SAY MICROSERVICE!!!

Scalabilityo Red / nombres de

contenedor únicoso Clustering (Docker Swarm)

¡GRACIAS POR VUESTRO TIEMPO!¿Preguntas?

@nandollaca