Sobes.tech
Middle

¿Qué cualidades de control (Quality Gates) conoces?

sobes.tech AI

Respuesta de la IA

Las puertas de calidad (Quality Gates) son puntos en el ciclo de vida del desarrollo de software donde se toma la decisión de si el producto o una parte de él tiene la calidad suficiente para avanzar al siguiente paso.

Las principales puertas de calidad incluyen:

  • Estabilidad de la compilación: Compilación exitosa y ausencia de errores críticos en la compilación.
  • Resultados del análisis estático del código: Cumplimiento de los estándares de codificación, ausencia de vulnerabilidades críticas o "code smells".
  • Cobertura de código con pruebas: Cobertura suficiente de pruebas unitarias, de integración y otros tipos de pruebas automatizadas.
  • Resultados de pruebas automatizadas: Aprobar todas o un porcentaje establecido de pruebas automatizadas (unitarias, de integración, funcionales, de regresión).
  • Ausencia de defectos críticos: Ausencia de errores bloqueantes o críticos detectados en las pruebas.
  • Resultados de pruebas manuales: Éxito en la ejecución de los escenarios de prueba manual planificados y pruebas de aceptación.
  • Cumplimiento de requisitos: El producto cumple funcionalmente con las especificaciones y requisitos.
  • Rendimiento y escalabilidad: Resultados satisfactorios en pruebas de carga y estrés.
  • Seguridad: Aprobar las verificaciones de seguridad, incluyendo análisis estático de seguridad (SAST), análisis dinámico de seguridad (DAST) y pruebas de penetración.
  • Documentación: Actualidad y completitud de la documentación técnica y del usuario.

Ejemplos de métricas para las puertas de calidad:

  • Cobertura de código con pruebas >= 80%
  • Número de errores críticos = 0
  • Resultado de las pruebas automatizadas = 100% exitosas
  • Evaluación del análisis estático del código >= A

Ejemplo de pipeline de Jenkins con puerta de calidad:

pipeline {
    agent any
    stages {
        stage('Construcción') {
            steps {
                script {
                    echo 'Construyendo...'
                    // Llamada al script de construcción
                }
            }
        }
        stage('Análisis estático') {
            steps {
                script {
                    echo 'Ejecutando análisis estático...'
                    // Integración con SonarQube u otra herramienta
                }
            }
        }
        stage('Pruebas unitarias') {
            steps {
                script {
                    echo 'Ejecutando pruebas unitarias...'
                    // Ejecución de pruebas unitarias y generación de informes
                }
            }
        }
        stage('Verificación de puerta de calidad') {
            steps {
                script {
                    echo 'Verificando puerta de calidad...'
                    // Ejemplo de verificación con SonarQube usando la puerta de calidad
                    // wait-for-quality-gate abortPipeline: true
                }
            }
        }
        stage('Despliegue a staging') {
             when {
                // Condición para avanzar al siguiente paso, por ejemplo, si la puerta de calidad se pasa con éxito
                expression { return BUILD_STATUS == 'SUCCESS' }
             }
             steps {
                script {
                    echo 'Desplegando a staging...'
                    // Pasos para el despliegue
                }
             }
        }
    }
}