Simulando para Integrar

Preview:

Citation preview

SIMULANDO PARA INTEGRAR

Un paso más hacia la Entrega Continua (CD)

Quito-Ecuador

Luisa Emme Consultoría y Desarrollo de Software

Thoughtworks Ecuador

@emmeblm

¡Siempre estamos contratando!

Nuestra agenda

Nuestra agenda

Algunos conceptos … ★ ¿Por qué probamos la integración

entre servicios? ★ Integración continua y entrega

Nuestra agenda

Érase una vez … ★ Una historia sobre un pipeline en

rojo y un despliegue bloqueado

Algunos conceptos … ★ ¿Por qué probamos la integración

entre servicios? ★ Integración continua y entrega

Nuestra agenda

Érase una vez … ★ Una historia sobre un pipeline en

rojo y un despliegue bloqueado

Algunos conceptos … ★ ¿Por qué probamos la integración

entre servicios? ★ Integración continua y entrega

… luego, patrones … ★ Para probar la colaboración entre

servicios

Nuestra agenda

Érase una vez … ★ Una historia sobre un pipeline en

rojo y un despliegue bloqueado

Algunos conceptos … ★ ¿Por qué probamos la integración

entre servicios? ★ Integración continua y entrega

… luego, patrones … ★ Para probar la colaboración entre

servicios

… y vivieron felices por siempre … ★ Imitadores guiados por el consumidor ★ Pruebas de contrato automatizadas

Nuestra agenda

Érase una vez … ★ Una historia sobre un pipeline en

rojo y un despliegue bloqueado

Algunos conceptos … ★ ¿Por qué probamos la integración

entre servicios? ★ Integración continua y entrega

… y para cerrar, algunas herramientas … ★ Herramientas para simular Servicios Web ★ Stubby, ¿qué es? y ¿cómo funciona?

… luego, patrones … ★ Para probar la colaboración entre

servicios

… y vivieron felices por siempre … ★ Imitadores guiados por el consumidor ★ Pruebas de contrato automatizadas

ALGUNOS CONCEPTOSPruebas de integración, integración continua y entrega continua

¿Por qué probamos la integración entre

servicios?

Recursos

Dominio

Clie

ntes

HTT

P Servicio Web

Servicio Web

Mapeadores de datos (ORM)

Base de datos

Pruebas deintegración

Recursos

Dominio

Clie

ntes

HTT

P Servicio Web

Servicio Web

Mapeadores de datos (ORM)

Base de datos

Pruebas deintegración

Recursos

Dominio

Clie

ntes

HTT

P Servicio Web

Servicio Web

Pruebas deintegración anivel decomponentes

Serv

icio

s Si

mul

ados

Mapeadores de datos (ORM)

Base de datos

Integración continua

SISTEMA DE GESTIÓN DE CÓDIGO

FUENTE

BUILD SERVER

PRUEBAS DE ACEPTACIÓN

Registran el código

Desarrollan el código

SISTEMA DE GESTIÓN DE CÓDIGO

FUENTE

BUILD SERVER

PRUEBAS DE ACEPTACIÓN

Registran el código

Construye código. Ejecuta pruebas

Desarrollan el código

SISTEMA DE GESTIÓN DE CÓDIGO

FUENTE

BUILD SERVER

PRUEBAS DE ACEPTACIÓN

Registran el código

Construye código. Ejecuta pruebas

Detecta cambios en el código

Desarrollan el código

SISTEMA DE GESTIÓN DE CÓDIGO

FUENTE

BUILD SERVER

PRUEBAS DE ACEPTACIÓN

Registran el código

Construye código. Ejecuta pruebas

Detecta cambios en el código

Desarrollan el código

Las pruebas fallan

SISTEMA DE GESTIÓN DE CÓDIGO

FUENTE

BUILD SERVER

PRUEBAS DE ACEPTACIÓN

Registran el código

Construye código. Ejecuta pruebas

Detecta cambios en el código

Desarrollan el código

Las pruebas pasan. Despliegue a UAT.

Las pruebas fallan

SISTEMA DE GESTIÓN DE CÓDIGO

FUENTE

BUILD SERVER

PRUEBAS DE ACEPTACIÓN

Registran el código

Construye código. Ejecuta pruebas

Detecta cambios en el código

Desarrollan el código

Las pruebas pasan. Despliegue a UAT.

Las pruebas fallan

SISTEMA DE GESTIÓN DE CÓDIGO

FUENTE

BUILD SERVER

PRUEBAS DE ACEPTACIÓN

Cliente puede ver cambios en tiempo real

Entrega continua

Ambiente 2Ambiente 1 Ambiente N

Ambiente 2Ambiente 1 Ambiente N

Software Desplegable > Nuevas

características

Ambiente 2Ambiente 1 Ambiente N

Software Desplegable > Nuevas

características

Ambiente 2Ambiente 1 Ambiente N

Software Desplegable > Nuevas

características

Ambiente 2Ambiente 1 Ambiente N

Software Desplegable > Nuevas

características

Ambiente 2Ambiente 1 Ambiente N

Software Desplegable > Nuevas

características

Ambiente 2Ambiente 1 Ambiente N

Registro de código

Pruebas unitarias y de integración

Despliegue a ambiente de

pruebas

Pruebas de aceptación

automatizadas

Despliegue a producción

Integración continua

Entrega continua

Registro de código

Pruebas unitarias y de integración

Despliegue a ambiente de

pruebas

Pruebas de aceptación

automatizadas

Despliegue a producción

Integración continua

Entrega continua

Una historia sobre un pipeline en rojo y un despliegue bloqueado

ÉRASE UNA VEZ …

Recursos

Dominio

Mapeadores de datos (ORM)

Base de datos

Recursos

Dominio

Mapeadores de datos (ORM)

Base de datos

Pipeline

Recursos

Dominio

Mapeadores de datos (ORM)

Base de datos

Pipeline

Recursos

Dominio

Mapeadores de datos (ORM)

Base de datos

Pruebas unitarias

Pipeline

Pruebas unitarias

Pipeline

Pruebas unitarias

Qa Pre-producción Producción

Pruebas de integración

Pipeline

Pruebas unitarias

Qa Pre-producción Producción

Pruebas de integración

Pipeline

Pruebas unitarias

Qa Pre-producción Producción

Pruebas de integración

Despliegue a QA

Pipeline

Pre-producción ProducciónQa

Pruebas unitarias

Pruebas de integración

Despliegue a QA

Pipeline

Pre-producción ProducciónQa

Pruebas unitarias

Pruebas de integración

Despliegue a QA

Pruebas funcionales

en QA

Pipeline

Qa Pre-producción Producción

Pruebas unitarias

Pruebas de integración

Despliegue a QA

Pruebas funcionales

en QA

Pipeline

Qa Pre-producción Producción

Pruebas unitarias

Pruebas de integración

Despliegue a QA

Pruebas funcionales

en QA

Despliegue a pre-

producción

Pipeline

Qa ProducciónPre-producción

Pruebas unitarias

Pruebas de integración

Despliegue a QA

Pruebas funcionales

en QA

Despliegue a pre-

producción

Pipeline

Qa ProducciónPre-producción

Pruebas unitarias

Pruebas de integración

Despliegue a QA

Pruebas funcionales

en QA

Despliegue a pre-

producción

Pruebas funcionales

en pre-producción

Pipeline

Qa ProducciónPre-producción

Pruebas unitarias

Pruebas de integración

Despliegue a QA

Pruebas funcionales

en QA

Despliegue a pre-

producción

Pruebas funcionales

en pre-producción

Pipeline

Qa ProducciónPre-producción

Pruebas unitarias

Pruebas de integración

Despliegue a QA

Pruebas funcionales

en QA

Despliegue a pre-

producción

Pruebas funcionales

en pre-producción

Despliegue a

producción

Pipeline

Qa Pre-producción Producción

Pruebas unitarias

Pruebas de integración

Despliegue a QA

Pruebas funcionales

en QA

Despliegue a pre-

producción

Pruebas funcionales

en pre-producción

Despliegue a

producción

Pipeline

Qa Pre-producción Producción

Pruebas unitarias

Pruebas de integración

Despliegue a QA

Pruebas funcionales

en QA

Despliegue a pre-

producción

Pruebas funcionales

en pre-producción

Despliegue a

producción

Pruebas de humo

Pipeline

Qa Pre-producción Producción

Pruebas unitarias

Pruebas de integración

Despliegue a QA

Pruebas funcionales

en QA

Despliegue a pre-

producción

Pruebas funcionales

en pre-producción

Despliegue a

producción

Pruebas de humo

Recursos

Dominio

Mapeadores de datos (ORM)

Base de datos

Recursos

Dominio

Mapeadores de datos (ORM)

Base de datos

Clie

nte

HTT

P

Servicio Web

Recursos

Dominio

Mapeadores de datos (ORM)

Base de datos

Clie

ntes

HTT

P

Servicio Web

SOAP

Servicio Web

SOAP

Servicio Web REST

Servicio Web REST

Servicios externos

Ambientes de prueba

Contención de datos entre equipos

Contención de datos entre equipos

Contención de datos entre equipos

Contención de datos entre equipos

Contención de datos entre equipos

Indisponibilidad del ambiente

Indisponibilidad del ambiente

Indisponibilidad del ambiente

Recursos

Dominio

Mapeadores de datos (ORM)

Base de datos

Clie

ntes

HTT

P

Servicio Web

SOAP

Servicio Web

SOAP

Servicio Web REST

Servicio Web REST

Pipeline

Recursos

Dominio

Mapeadores de datos (ORM)

Base de datos

Clie

ntes

HTT

P

Servicio Web

SOAP

Servicio Web

SOAP

Servicio Web REST

Servicio Web REST

Pipeline

Pruebas unitarias

Recursos

Dominio

Mapeadores de datos (ORM)

Base de datos

Clie

ntes

HTT

P

Servicio Web

SOAP

Servicio Web

SOAP

Servicio Web REST

Servicio Web REST

Pipeline

Pruebas unitarias

Pipeline

Pruebas unitarias

Qa Pre-producción Producción

Pipeline

Pruebas unitarias

Qa Pre-producción Producción

Pipeline

Pruebas unitarias

Qa Pre-producción Producción

Pruebas de integración

Pipeline

Pruebas unitarias

Qa Pre-producción Producción

Pruebas de integración

Pipeline

Pruebas unitarias

Qa Pre-producción Producción

Pruebas de integración

Algunos patrones para probar tu aplicación cuando depende de servicios externos sobre los que no tienes control

PATRONES

Llevar a cabo pruebas completas de extremo a extremo en un entorno previo a producción.

Despliegues secuenciales

Llevar a cabo pruebas completas de extremo a extremo en un entorno previo a producción.

Despliegues secuenciales

Llevar a cabo pruebas completas de extremo a extremo en un entorno previo a producción.

Despliegues secuenciales

El proveedor proporciona despliegue automatizado permitiéndote desplegar su servicio en tu ambiente.

Ambientes aislados

El proveedor proporciona despliegue automatizado permitiéndote desplegar su servicio en tu ambiente.

Ambientes aislados

El proveedor proporciona despliegue automatizado permitiéndote desplegar su servicio en tu ambiente.

Ambientes aisladosLocalhost

Utilizar una instancia de pruebas del servicio externo desplegado en un ambiente compartido para cada

despliegue o para cada compilación exitosa.

Modelo SaaS

Utilizar una instancia de pruebas del servicio externo desplegado en un ambiente compartido para cada

despliegue o para cada compilación exitosa.

Modelo SaaS

Utilizar una instancia de pruebas del servicio externo desplegado en un ambiente compartido para cada

despliegue o para cada compilación exitosa.

Modelo SaaS

Pruebas de contrato guiadas por el consumidor

Establecer un contrato entre el productor y el consumidor. Hacer cumplir estos contratos con pruebas

automatizadas.

Establecer un contrato entre el productor y el consumidor. Hacer cumplir estos contratos con pruebas

automatizadas.

Pruebas de contrato guiadas por el consumidor

Establecer un contrato entre el productor y el consumidor. Hacer cumplir estos contratos con pruebas

automatizadas.

Pruebas de contrato guiadas por el consumidor

Crea imitadores de tus servicios externos. Si quieres mayor seguridad, agrega pruebas de contrato.

Imitadores guiados por el consumidor

Crea imitadores de tus servicios externos. Si quieres mayor seguridad, agrega pruebas de contrato.

Imitadores guiados por el consumidor

Crea imitadores de tus servicios externos. Si quieres mayor seguridad, agrega pruebas de contrato.

Imitadores guiados por el consumidor

Localhost

Imitador

Imitador

Y VIVIERON FELICES POR SIEMPRESimulando servicios externos y agregando pruebas de contrato

Recursos

Dominio

Mapeadores de datos (ORM)

Base de datos

Clie

ntes

HTT

P

Servicio Web

SOAP

Servicio Web

SOAP

Servicio Web REST

Servicio Web REST

Recursos

Dominio

Mapeadores de datos (ORM)

Base de datos

Clie

ntes

HTT

P

Sim

ulad

or d

e se

rvic

ios

Web

Recursos

Dominio

Mapeadores de datos (ORM)

Base de datos

Clie

ntes

HTT

P

Sim

ulad

or d

e se

rvic

ios

Web

Pipeline

Recursos

Dominio

Mapeadores de datos (ORM)

Base de datos

Clie

ntes

HTT

P

Sim

ulad

or d

e se

rvic

ios

Web

Pipeline

Pruebas unitarias

Recursos

Dominio

Mapeadores de datos (ORM)

Base de datos

Clie

ntes

HTT

P

Sim

ulad

or d

e se

rvic

ios

Web

Pipeline Pipeline

Pruebas unitarias

Pipeline Pipeline

Pruebas unitarias

Pruebas de integración

ProducciónQa Pre-producción

Pipeline

Pruebas unitarias

Pruebas de integración

ProducciónQa Pre-producción

Pipeline

Pruebas unitarias

Pruebas de integración

Despliegue a QA

ProducciónQa Pre-producción

Pipeline

Pruebas unitarias

Pruebas de integración

Despliegue a QA

ProducciónQa Pre-producción

Pipeline

Pruebas unitarias

Pruebas de integración

Despliegue a QA

Pruebas funcionales

en QA

ProducciónQa Pre-producción

Pipeline

Pruebas unitarias

Pruebas de integración

Despliegue a QA

Pruebas funcionales

en QA

ProducciónQa Pre-producción

Pipeline

Pruebas unitarias

Pruebas de integración

Despliegue a QA

Pruebas funcionales

en QA

Despliegue a pre-

producción

ProducciónQa Pre-producción

Pipeline

Pruebas unitarias

Pruebas de integración

Despliegue a QA

Pruebas funcionales

en QA

Despliegue a pre-

producción

ProducciónQa Pre-producción

Pipeline

Pruebas unitarias

Pruebas de integración

Despliegue a QA

Pruebas funcionales

en QA

Despliegue a pre-

producción

Pruebas funcionales

en pre-producción

ProducciónQa Pre-producción

Pipeline

Pruebas unitarias

Pruebas de integración

Despliegue a QA

Pruebas funcionales

en QA

Despliegue a pre-

producción

Pruebas funcionales

en pre-producción

ProducciónQa Pre-producción

Pipeline

Pruebas unitarias

Pruebas de integración

Despliegue a QA

Pruebas funcionales

en QA

Despliegue a pre-

producción

Pruebas funcionales

en pre-producción

Despliegue a

producción

ProducciónQa Pre-producción

Pipeline

Pruebas unitarias

Pruebas de integración

Despliegue a QA

Pruebas funcionales

en QA

Despliegue a pre-

producción

Pruebas funcionales

en pre-producción

Despliegue a

producción

ProducciónQa Pre-producción

Pipeline

Pruebas unitarias

Pruebas de integración

Despliegue a QA

Pruebas funcionales

en QA

Despliegue a pre-

producción

Pruebas funcionales

en pre-producción

Despliegue a

producción

Pruebas de humo

ProducciónQa Pre-producción

Pipeline

Pruebas unitarias

Pruebas de integración

Despliegue a QA

Pruebas funcionales

en QA

Despliegue a pre-

producción

Pruebas funcionales

en pre-producción

Despliegue a

producción

Pruebas de humo

ProducciónQa Pre-producción

Pipeline

Pruebas unitarias

Pruebas de integración

Despliegue a QA

Pruebas funcionales

en QA

Despliegue a pre-

producción

Pruebas funcionales

en pre-producción

Despliegue a

producción

Pruebas de humo

Ambientes Beta

Pipeline

Pruebas unitarias

Pruebas de integración

Despliegue a QA

Pruebas funcionales

en QA

Despliegue a pre-

producción

Pruebas funcionales

en pre-producción

Despliegue a

producción

Pruebas de humo

Ambientes Beta

Pruebas de integración de

contrato

Pipeline

Pruebas unitarias

Pruebas de integración

Despliegue a QA

Pruebas funcionales

en QA

Despliegue a pre-

producción

Pruebas funcionales

en pre-producción

Despliegue a

producción

Pruebas de humo

Ambientes Beta

Pruebas de integración de

contrato

HERRAMIENTASAlgunas herramientas para la creación de imitadores de Servicios Web, entre ellas: Stubby4J

MOUNTEBANK http://www.mbtest.org/

MOUNTEBANK http://www.mbtest.org/

WIREMOCK http://wiremock.org/

MOUNTEBANK http://www.mbtest.org/

WIREMOCK http://wiremock.org/

NODE-SOAP https://github.com/vpulim/node-soap

MOUNTEBANK http://www.mbtest.org/

WIREMOCK http://wiremock.org/

NODE-SOAP https://github.com/vpulim/node-soap

https://github.com/azagniotov/stubby4j

STUBBY4J

Stubby4J

Stubby4J

{ REST }

Stubby4J

{ REST }

Stubby4J

{ REST }

< SOAP />

Stubby4J

{ REST }

< SOAP />

Stubby4J

{ REST }

< SOAP />

< XML /> RPC

Stubby4J

{ REST }

< SOAP />

< XML /> RPC

Stubby4J

{ REST }

< SOAP />

< XML /> RPC

Localhost

Aplicación SOA

Localhost

Aplicación SOA

Localhost

8882: Stubby4J

file.yamlAplicación SOA

Localhost

GET: http://localhost:8882/hello-world8882: Stubby4J

file.yamlAplicación SOA

Localhost

GET: http://localhost:8882/hello-world

RESPONSE Status: 200 Headers:

content-type: application/json Body:

{ Hello World! }

8882: Stubby4J

file.yamlAplicación SOA

8882: Stubby4J

file.yaml

¿Cómo levantar Stubby4J?

8882: Stubby4J

file.yaml

¿Cómo levantar Stubby4J?

java -jar stubby4j-x.x.xx.jar -d <DIRECTORIO_AL_ARCHIVO_YAML_LOCAL>

Ejecutando el .jar

8882: Stubby4J

file.yaml

¿Cómo levantar Stubby4J?

java -jar stubby4j-x.x.xx.jar -d

<DIRECTORIO_AL_ARCHIVO_YAML_LOCAL>

Ejecutando el .jar

8882: Stubby4J

file.yaml

¿Cómo levantar Stubby4J?

java -jar stubby4j-x.x.xx.jar -d

<DIRECTORIO_AL_ARCHIVO_YAML_LOCAL>

Ejecutando el .jar Con la API programática

StubbyClient stubbyClient = new StubbyClient();

stubbyClient.startJetty("/resources/file.yaml");

8882: Stubby4J

file.yaml

¿Cómo levantar Stubby4J?

java -jar stubby4j-x.x.xx.jar -d

<DIRECTORIO_AL_ARCHIVO_YAML_LOCAL>

Ejecutando el .jar Con la API programática

StubbyClient stubbyClient = new StubbyClient();

stubbyClient.startJetty("/resources/file.yaml");

Veamos un ejemplo

¡GRACIAS! ¿Preguntas o sugerencias?

Luisa Emme @emmeblm

https://www.thoughtworks.com/careers

Recommended