Os presento una visión detallada de un flujo de trabajo basado en Trunk-based development (TBD) 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.

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 ProdEnv as Entorno de Producción
    participant GitMain as Main (Trunk)
    participant CI/CD

    loop A medida que se desarrollan características
        Development->>GitMain: Realiza pequeños cambios en la rama principal (main)
        CI/CD->>CI/CD: Ejecuta pruebas automáticas (unitarias, integración)
        CI/CD-->>CI/CD: Devuelve resultados de pruebas automáticas
        CI/CD->>DevEnv: Realiza pruebas de integración
        DevEnv-->>CI/CD: Devuelve resultados de pruebas de integración
    end

    alt Características listas para la integración
        Development->>GitMain: Merges continuos al main (sin necesidad de ramas largas)
        Development->>QA: Notifica a QA para comenzar pruebas
        alt Pruebas de QA exitosas
            QA->>CI/CD: Autoriza despliegue a entorno QA
            CI/CD->>QAEnv: Despliega a entorno QA
            CI/CD->>QAEnv: 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 cambios 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: Autoriza despliegue a entorno Staging
                    CI/CD->>StgEnv: Despliega a entorno Staging
                    opt Ejecución de 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 cambios a Producción
                        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->>GitMain: Añade un Tag a Main con la version de release
                        note right of ProdEnv: Despliegue exitoso
                    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
            DevEnv->>Development: Soluciona problemas y vuelve a intentar
        end
    else Característica no lista
        Development->>DevEnv: Revierte a la última versión funcional
        DevEnv->>Development: Soluciona problemas y vuelve a intentar
    end
Embajador GitKraken Rectangular