PactFlow & Contract Testing: Un caso de uso empresarial

PactFlow & Contract Testing: Un caso de uso empresarial

Alejandro Pena, Chapter Lead Backend

Alejandro Pena

Chapter Lead Backend

14 de octubre de 2024

Introducción

En el artículo de hoy, te guiaremos a través de un escenario de caso real, anonimizado, de una gran institución financiera en los EE.UU. que adopta Contract Testing. Al analizar el contexto, el desafío, la solución propuesta, la ejecución del proyecto y las lecciones clave, construiremos una imagen integral de un proyecto que ejemplifica un contexto ideal para la adopción de pruebas de contrato.

Para aquellos interesados en profundizar, también tenemos una colaboración en YouTube con el equipo de PactFlow que cubre el mismo caso empresarial y analiza todos estos puntos en detalle con nuestros colegas de PactFlow.

Desafío

En el entorno tecnológico actual de rápido movimiento, las empresas deben optimizar sus pipelines de entrega para mantenerse competitivas. La necesidad de despliegues rápidos, reducción de costos y aumento de la confianza del equipo ha llevado a muchos a adoptar la detección temprana de errores y la automatización (somos grandes fanáticos del Testing Shift-Left en SNGULAR 😊).

Para uno de nuestros clientes en EE.UU., la transición de aplicaciones monolíticas a una arquitectura de microservicios presentó desafíos significativos. Anteriormente, dependían en gran medida de pruebas manuales de extremo a extremo (E2E), pero con casi 200 aplicaciones que necesitaban comunicarse de manera fluida, este enfoque rápidamente resultó imposible. El aumento dramático en las pruebas E2E condujo a mayores costes, tiempos de desarrollo más largos y una mayor complejidad en la gestión de puntos de integración, creando una necesidad urgente de un enfoque de prueba más eficiente y escalable.

Solución propuesta

Para abordar este desafío, SNGULAR fue contratado para establecer una práctica integral de pruebas, comenzando con PactFlow y Contract Testing. Aprovechando nuestra experiencia en proyectos similares, identificamos tres conceptos clave que definen la base para la adopción a gran escala:

Compromiso de las partes interesadas

La colaboración entre departamentos es esencial. El Contract Testing afecta no solo a los equipos de desarrollo, sino que también requieren alineación con los equipos de Seguridad, DevOps y Plataforma. Priorizamos obtener el compromiso de las partes interesadas clave al alinearnos en objetivos claros, objetivos y estrategias, asegurando que todos estén en la misma página desde el principio. Es crucial que todos los departamentos trabajen juntos para avanzar de manera efectiva.

MVP inicial

Comenzamos con un proyecto manejable creando un Producto Mínimo Viable (MVP) para probar y validar los conceptos. Esta fase involucra a un grupo de trabajo pequeño y una cobertura limitada del pipeline, lo que nos permite establecer un contexto de trabajo sólido y refinar nuestro enfoque. El éxito de este MVP proporciona ideas valiosas que guían la adopción más amplia en toda la organización.

Establecimiento del Grupo de Práctica (GoP)

Después de demostrar el valor del Contract Testing a través del MVP, el siguiente paso es escalar la práctica en toda la organización. Establecemos un GoP interno para impulsar la adopción, proporcionar capacitación y asegurar la aplicación consistente de sus principios. Este grupo es fundamental para educar a los equipos, promover las mejores prácticas y apoyar la mejora continua, sentando las bases para un marco de pruebas sostenible y escalable.

Entonces, todos estamos alineados y listos para comenzar el viaje. ¿Cómo ejecutamos ese crucial MVP inicial y establecemos el GoP para sentar las bases de la práctica?

Ejecución

Desarrollo del MVP

La fase de ejecución se centró inicialmente en el desarrollo del MVP para demostrar el valor del Contract Testing utilizando PactFlow. El proyecto se estructuró en tres corrientes de trabajo:

Capacidad técnica

Se concentró en establecer la capacidad técnica e infraestructura necesaria. A lo largo de tres sprints, el equipo logró lo siguiente:

  • Estableció la capacidad técnica e infraestructura para PactFlow.
  • Habilitó tres instancias locales de PactFlow.
  • Configuró e integró PactFlow con el ecosistema de la corporación.
  • Implementó pipelines de CI/CD para pruebas básicas de contrato.

Incorporación de equipos

La segunda corriente de trabajo se centró en incorporar equipos y desarrollar experiencia interna. A lo largo de cuatro sprints, el equipo logró:

  • Incorporó dos equipos como pilotos para el MVP.
  • Generó contratos de consumidor y proveedor de muestra para las API del MVP.
  • Realizó demostraciones y charlas técnicas para introducir la metodología.
  • Proporcionó capacitación a los equipos para que sean autosuficientes con PactFlow y Contract Testing.

Establecimiento del Grupo de Práctica

La tercera corriente de trabajo se centró en establecer el GoP para garantizar la mejora continua y la adopción generalizada de las pruebas de contrato. A lo largo de dos sprints, el equipo:

  • Definió la composición del GoP.
  • Identificó y acordó los entregables del GoP.
  • Definió métricas clave de rendimiento (KPI) y comenzó a recopilar datos.
  • Acordó el contenido de informes para las partes interesadas.
  • Definió la estrategia de mejora continua.

Funciones del GoP

El Grupo de Práctica es fundamental para garantizar la adopción efectiva y generalizada del Contract Testing dentro de la organización. Así es cómo contribuyen al proceso:

Métricas

El GoP establece y monitorea diversas métricas y KPIs para medir la velocidad y el éxito de la adopción de pruebas de contrato en toda la organización. Estas métricas ayudan a evaluar el impacto y la efectividad de los nuevos procesos.

Métricas cuantitativas

Las métricas cuantitativas son cruciales para medir resultados tangibles y tasas de adopción. Se pueden categorizar en dos tipos principales: métricas de participación e impacto. Algunos ejemplos son:

Métricas de Participación Métricas de Impacto
Número de pipelines con can-i-deploy habilitado Tiempo dedicado a pruebas manuales
Número de proyectos con contratos en PactFlow Frecuencia de despliegue
Número de endpoints cubiertos con Contract Testing Tiempo de liderazgo para el cambio
Tasas de fallos de cambio
Tiempo medio de recuperación (MTTR)

Métricas cualitativas

Las métricas cualitativas ofrecen insights sobre la satisfacción general y la efectividad de las nuevas herramientas. Deben ser monitoreadas regularmente e idealmente utilizando encuestas anónimas.

  • Satisfacción del equipo con las nuevas herramientas.
  • Problemas y ganancias.
  • Actividad en PactFlow.
  • Compromiso de la comunidad. ¿Qué tan activa y de apoyo es la comunidad?

Procesos

Desarrollar una metodología estándar para la adopción por parte de los equipos es una tarea crucial del GoP. Esto incluye crear instrucciones paso a paso para el flujo de trabajo de todas las tareas relacionadas con el Contract Testing en cada sprint. El GoP también recomendará un modelo de desarrollo que se alinee con el ciclo de lanzamiento utilizando idealmente una estrategia de ramificación. Además, adaptan el ciclo de vida del desarrollo de software para incorporar las pruebas de contrato y definen procesos de incorporación y monitoreo para todos los equipos relevantes.

Soporte

La comunicación efectiva es siempre vital para el éxito de cualquier cambio estructural. El Grupo de Práctica (GoP) facilita la colaboración en tiempo real al permitir la recopilación rápida de datos e ideas. Se organizan sesiones «abiertas» regulares para abordar y resolver cualquier pregunta o problema. Además, el GoP realiza reuniones regulares con las partes interesadas, incluyendo desarrollo, aseguramiento de calidad, ingeniería de confiabilidad del sitio y propietarios de productos para hacer un seguimiento del progreso. También se crea un sistema abierto de comentarios y anotaciones para involucrar a otros y mejorar la cobertura.

Seguimiento

El GoP es responsable de informar sobre el progreso de los KPI a todas las partes interesadas clave. Proporcionan apoyo y seguimiento a todos los equipos para garantizar la mejora continua. Se recopila retroalimentación para refinar y mejorar todos los procesos y prácticas, asegurando que la adopción de las pruebas de contrato sea tanto efectiva como eficiente.

Por otro lado, si estás interesado en aprender más sobre cómo gestionamos el proceso de incorporación de cada equipo, consulta la sección 'Incorporación de Nuevos Equipos' en nuestro artículo sobre Pruebas de Contrato y Desarrollo.

éxito-y-adopción-total.webp

Éxito y adopción total

La fase del MVP demostró con éxito el valor de las pruebas de contrato, lo que llevó a mejoras sustanciales en la eficiencia de las pruebas, reducción de costos y velocidad de despliegue. Este éxito convenció a los VIP de la empresa para adoptar completamente las pruebas de contrato en toda la organización. La decisión marcó el comienzo de un despliegue integral, respaldado por la infraestructura técnica establecida y el Grupo de Práctica, asegurando el éxito continuo y la mejora constante.

Resultados del MVP después de 9 sprints

A lo largo de nueve sprints, la implementación de las pruebas de contrato generó resultados tangibles que subrayaron su efectividad:

Gobernanza

  • Capacitación y experiencia: Dos equipos fueron completamente capacitados en técnicas de pruebas de contrato, con cuatro miembros convirtiéndose en campeones de las Pruebas de Contrato.
  • KPI y GoP: Se definieron ocho KPI y se estableció el GoP para involucrar a los equipos y asegurar la adopción continua.
  • Seguridad: Se implementaron con éxito el Control de Acceso Basado en Roles, la autenticación de usuarios y el acceso seguro con trazabilidad.

Logros técnicos

  • Cobertura: Se cubrieron seis endpoints críticos con pruebas de contrato.
  • Integración: Dos pipelines de Jenkins se integraron completamente con PactFlow, agilizando el proceso de pruebas.
  • Detección de Errores: El enfoque fue efectivo, ya que se detectaron dos errores en entornos de producción a través de las pruebas de contrato.

Eficiencia de tiempo

  • Primera Prueba: La primera prueba se desarrolló en solo 8 horas.
  • Integración de Pipeline: La integración del primer pipeline tomó 3 semanas.
  • Descubrimiento de Errores: Dentro de las 4 semanas posteriores al inicio del proyecto, se descubrió y abordó el primer error.

Impacto estimado del cliente en ahorros de costes

La transición a las pruebas de contrato agilizó los procesos y resultó en ahorros significativos. Después de un análisis interno de los resultados, el cliente estimó una reducción del 66% en el tiempo y los costos asociados con las pruebas E2E manuales.

Esta estimación no tiene en cuenta ahorros adicionales, como el tiempo reducido necesario para resolver errores detectados por las pruebas E2E, costos más bajos relacionados con la provisión de entornos y las mejoras anticipadas en la experiencia y velocidad de las pruebas en los equipos. Nuevamente, si deseas aprender más sobre el ROI de las Pruebas de Contrato, aquí tienes nuestro artículo relacionado.

La implementación de las pruebas de contrato ha demostrado ser un paso transformador para la organización, ofreciendo una solución escalable, eficiente y rentable que se alinea perfectamente con su transición a una arquitectura de microservicios. Este éxito es la razón clave detrás de la adopción total de las pruebas de contrato en toda la organización.

Lecciones clave

Para finalizar, algunas de las lecciones clave que obtuvimos de esta experiencia incluyen:

  • Los campeones de las pruebas de contrato son esenciales: Son cruciales para impulsar la adopción y garantizar que la práctica sea aceptada en todos los equipos.
  • El Grupo de Práctica es imprescindible: El GoP es la columna vertebral de la práctica, guiando, apoyando y sosteniendo el proceso de adopción.
  • Los métricas de seguimiento son vitales: Las métricas ad-hoc son clave para rastrear el éxito, asegurando la alineación con los objetivos e identificando áreas específicas de mejora en la práctica.
Alejandro Pena, Chapter Lead Backend

Alejandro Pena

Chapter Lead Backend

With over 14 years of experience as a Software Engineer, I specialize in Backend, Quality Engineering, and DevOps. My passion for exploring new technologies is matched by my love for video games. I enjoy hiking with my family, watching movies, reading, or listening to music in my free time.


Nuestras últimas novedades

¿Te interesa saber cómo nos adaptamos constantemente a la nueva frontera digital?

Inteligencia Artificial, de la tecnología a la transformación
Inteligencia Artificial, de la tecnología a la transformación

Insight

6 de noviembre de 2024

Inteligencia Artificial, de la tecnología a la transformación

Innovación de impacto: Cómo evaluar y diseñar productos digitales sostenibles
Innovación de impacto: Cómo evaluar y diseñar productos digitales sostenibles

Tech Insight

5 de noviembre de 2024

Innovación de impacto: Cómo evaluar y diseñar productos digitales sostenibles

Mutation Testing: Probando tus pruebas
Mutation Testing: Probando tus pruebas

Tech Insight

28 de octubre de 2024

Mutation Testing: Probando tus pruebas

Sobreingeniería en software: cómo complicar lo sencillo sin necesidad
Sobreingeniería en software: cómo complicar lo sencillo sin necesidad

Tech Insight

21 de octubre de 2024

Sobreingeniería en software: cómo complicar lo sencillo sin necesidad