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
Embajador GitKraken Rectangular