Os presento una visión detallada de un flujo de trabajo basado en GitFlow y CI/CD (Integración Continua y Entrega Continua), que se aplica al proceso de desarrollo de software en entornos colaborativos. El objetivo principal es ilustrar cómo los equipos de desarrollo, QA (aseguramiento de calidad) y operaciones pueden trabajar conjuntamente de manera eficiente para garantizar la calidad, estabilidad y rapidez en los despliegues en producción.
Responsabilidad | Equipo Responsable | Entorno | Tipo de Test | Descripción |
---|---|---|---|---|
Desarrollo de Características | Equipo de Desarrollo | Entorno de Desarrollo | – | El equipo de desarrollo trabaja en nuevas características en un entorno de desarrollo local. No hay pruebas formales en este paso. |
Pruebas Unitarias | Equipo de Desarrollo | Entorno de Desarrollo | Pruebas Unitarias | Se prueban unidades de código de manera aislada. Verifica que las funciones individuales trabajen como se espera. Se ejecuta dentro del ciclo de CI/CD en GitFlow. |
Pruebas de Integración | Equipo de Desarrollo | Entorno de Desarrollo | Pruebas de Integración | Se asegura de que los componentes del sistema interactúen correctamente entre sí. Se ejecutan en el entorno de desarrollo y durante la integración en develop. |
Pruebas Funcionales | Equipo de QA | Entorno de QA | Pruebas Funcionales | Verifica que el software funcione correctamente según las especificaciones y requisitos. Se realiza en el entorno QA tras desplegar la rama release. |
Pruebas de Aceptación | Equipo de QA / UAT | Entorno de UAT | Pruebas de Aceptación | Se asegura de que el software cumpla con los criterios de aceptación del cliente o del producto. Se realiza en el entorno de UAT antes de pasar a Staging. |
Pruebas de Carga | Equipo de QA / Operaciones | Entorno de Staging | Pruebas de Carga | Evalúa el comportamiento del sistema bajo carga. Se realiza en el entorno de Staging para simular el rendimiento en condiciones de alta demanda. |
Pruebas de Regresión | Equipo de QA | Entorno de Staging | Pruebas de Regresión | Asegura que los cambios no hayan roto funcionalidades previamente implementadas. Se ejecuta en Staging después de las pruebas de carga. |
Pruebas E2E (End to End) | Equipo de QA | Entorno de Staging | Pruebas E2E | Verifica el flujo completo de la aplicación, desde el inicio hasta el final. Se realiza en Staging después de las pruebas de regresión. |
Pruebas de Humo | Equipo de QA / Operaciones | Entorno de Pre-producción | Pruebas de Humo | Verifica que el sistema despliegue de manera correcta sin errores críticos. Se ejecuta en el entorno de pre-producción para garantizar que el sistema esté operativo. |
Pruebas de Rendimiento | Equipo de QA / Operaciones | Entorno de Producción | Pruebas de Rendimiento | Evalúa la velocidad, capacidad de respuesta y estabilidad del sistema en condiciones de carga. Se realiza en el entorno de producción tras pasar las pruebas de humo. |
El flujo es bastante extenso, por lo que he optado por omitir los HotFix para que sea más fácil de leer. Sin embargo, si ya estás familiarizado con GitFlow, no te resultará complicado comprenderlo.
Para visualizar el gráfico, dirígete a este enlace: mermaid.live.
Con la tabla y el gráfico proporcionados, todo debería ser bastante autoexplicativo, por lo que poco más puedo añadir.
Si hubiese algun problema aquí dejo el código de mermaid:
sequenceDiagram
actor Development as Equipo de Desarrollo
actor QA as Equipo de QA
actor Operations as Equipo de Operaciones
actor UAT as Equipo de UAT
participant DevEnv as Entorno de Desarrollo
participant QAEnv as Entorno QA
participant StgEnv as Entorno de Staging
participant UATEnv as Entorno UAT
participant PreProdEnv as Entorno Pre-producción
participant ProdEnv as Entorno de Producción
participant GitFlow
participant CI/CD
loop A medida que se crean características
Development->>GitFlow: Crea una rama de característica
GitFlow-->>Development: Realiza cambios en la rama de característica
Development->>GitFlow: Crea una pull request hacia 'develop'
CI/CD->>CI/CD: Ejecuta pruebas unitarias
CI/CD-->>CI/CD: Devuelve resultados de pruebas unitarias
CI/CD->>DevEnv: Ejecuta pruebas de integración
DevEnv-->>CI/CD: Devuelve resultados de pruebas de integración
CI/CD-->>GitFlow: Fusiona cambios en 'develop'
end
alt Características listas antes del Sprint
Development-->>CI/CD: Fusiona 'develop' en 'release'
Development->>QA: Notifica a QA para comenzar pruebas
alt Lista para QA
QA->>CI/CD: Autoriza despliegue de 'release' a entorno QA
CI/CD->>QAEnv: Despliega a entorno QA
CI/CD->>CI/CD: Ejecuta pruebas unitarias
CI/CD-->>CI/CD: Devuelve resultados de pruebas unitarias
CI/CD->>QAEnv: Ejecuta pruebas de integración
QAEnv-->>CI/CD: Devuelve resultados de pruebas de integración
CI/CD->>QAEnv: Ejecuta pruebas funcionales
QAEnv-->>CI/CD: Devuelve resultados de pruebas funcionales
alt Lista para UAT
QA->>UAT: Notifica a UAT para comenzar pruebas
UAT->>CI/CD: Autoriza despliegue de 'release' a entorno UAT
CI/CD->>UATEnv: Despliega a entorno UAT
CI/CD->>UATEnv: Ejecuta pruebas de aceptación
UATEnv-->>CI/CD: Devuelve resultados de pruebas de aceptación
alt Lista para Staging
UAT->>Operations: Notifica a operaciones para proceder
Operations-->>CI/CD: Crea nueva rama 'release'
Operations->>CI/CD: Autoriza despliegue de 'release' a entorno Staging
CI/CD->>StgEnv: Despliega a entorno Staging
opt Necesidad de ejecutar pruebas de carga?
CI/CD->>StgEnv: Ejecuta pruebas de carga
StgEnv-->>CI/CD: Devuelve resultados de pruebas de carga
end
CI/CD->>StgEnv: Ejecuta pruebas de regresión
StgEnv-->>CI/CD: Devuelve resultados de pruebas de regresión
CI/CD->>StgEnv: Ejecuta pruebas de extremo a extremo (E2E)
StgEnv-->>CI/CD: Devuelve resultados de pruebas E2E
alt Lista para Producción
Operations->>CI/CD: Autoriza despliegue de 'release' a entorno Pre-producción
CI/CD->>PreProdEnv: Despliega a entorno Pre-producción
CI/CD->>PreProdEnv: Ejecuta pruebas de humo
PreProdEnv-->>CI/CD: Devuelve resultados de pruebas de humo
alt Las pruebas de humo pasan
CI/CD->>ProdEnv: Despliega a producción
CI/CD->>ProdEnv: Ejecuta pruebas de rendimiento
ProdEnv-->>CI/CD: Devuelve resultados de pruebas de rendimiento
CI/CD-->>GitFlow: Fusiona los cambios de 'release' en 'main' y crea etiqueta de versión
CI/CD-->>GitFlow: Fusiona los cambios de 'release' en 'develop'
note right of ProdEnv: Despliegue exitoso
else Las pruebas de humo fallan
Operations->>PreProdEnv: Revierte a la última versión funcional
PreProdEnv->>Operations: Informa sobre el problema para corrección
Operations->>QA: Informa sobre el problema para corrección
Operations->>Development: Informa sobre el problema para corrección
end
else Lista para Pre-producción falló
StgEnv->>Operations: Revierte a la última versión funcional
StgEnv->>Operations: Informa sobre el problema para corrección
Operations->>QA: Informa sobre el problema para corrección
Operations->>Development: Informa sobre el problema para corrección
end
else Lista para Staging falló
Operations->>StgEnv: Revierte a la última versión funcional
StgEnv->>Operations: Informa sobre el problema para corrección
Operations->>QA: Informa sobre el problema para corrección
Operations->>Development: Informa sobre el problema para corrección
end
else Lista para UAT falló
UAT->>UATEnv: Revierte a la última versión funcional
UATEnv->>UAT: Informa sobre el problema para corrección
UAT->>QA: Informa sobre el problema para corrección
UAT->>Development: Informa sobre el problema para corrección
end
else Lista para QA falló
QA->>QAEnv: Revierte a la última versión funcional
QAEnv->>QA: Informa sobre el problema para corrección
QA->>Development: Informa sobre el problema para corrección
end
else Característica no lista
Development->>DevEnv: Revierte a la última versión funcional (solo ocurre cuando fallan las pruebas de integración)
DevEnv->>Development: Soluciona problemas y vuelve a intentar
end