PactFlow & Contract Testing: Un caso de uso empresarial
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
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.
Nuestras últimas novedades
¿Te interesa saber cómo nos adaptamos constantemente a la nueva frontera digital?
6 de noviembre de 2024
Inteligencia Artificial, de la tecnología a la transformación
5 de noviembre de 2024
Innovación de impacto: Cómo evaluar y diseñar productos digitales sostenibles
28 de octubre de 2024
Mutation Testing: Probando tus pruebas
21 de octubre de 2024
Sobreingeniería en software: cómo complicar lo sencillo sin necesidad