Sobes.tech
Middle

Que qualidades de controlo (Quality Gates) conhece?

sobes.tech IA

Resposta da IA

As portas de qualidade (Quality Gates) são pontos no ciclo de vida do desenvolvimento de software onde se toma a decisão de se o produto ou uma parte dele possui qualidade suficiente para avançar para a próxima etapa.

As principais portas de qualidade incluem:

  • Estabilidade da compilação: Compilação bem-sucedida e ausência de erros críticos na compilação.
  • Resultados da análise estática do código: Conformidade com os padrões de codificação, ausência de vulnerabilidades críticas ou "code smells".
  • Cobertura de código com testes: Cobertura suficiente de testes unitários, de integração e outros tipos de testes automatizados.
  • Resultados de testes automatizados: Aprovação de todos ou de uma percentagem definida de testes automatizados (unitários, de integração, funcionais, de regressão).
  • Ausência de defeitos críticos: Ausência de bugs bloqueantes ou críticos detectados nos testes.
  • Resultados de testes manuais: Sucesso na execução dos cenários de teste manual planejados e testes de aceitação.
  • Conformidade com requisitos: O produto atende funcionalmente às especificações e requisitos.
  • Desempenho e escalabilidade: Resultados satisfatórios em testes de carga e stress.
  • Segurança: Aprovação nas verificações de segurança, incluindo análise estática de segurança (SAST), análise dinâmica de segurança (DAST) e testes de penetração.
  • Documentação: Atualidade e completude da documentação técnica e do utilizador.

Exemplos de métricas para as portas de qualidade:

  • Cobertura de código com testes >= 80%
  • Número de bugs críticos = 0
  • Resultado dos testes automatizados = 100% bem-sucedidos
  • Avaliação da análise estática do código >= A

Exemplo de pipeline Jenkins com porta de qualidade:

pipeline {
    agent any
    stages {
        stage('Construção') {
            steps {
                script {
                    echo 'Construindo...'
                    // Chamada ao script de construção
                }
            }
        }
        stage('Análise estática') {
            steps {
                script {
                    echo 'A executar análise estática...'
                    // Integração com SonarQube ou outra ferramenta
                }
            }
        }
        stage('Testes unitários') {
            steps {
                script {
                    echo 'A executar testes unitários...'
                    // Execução de testes unitários e geração de relatórios
                }
            }
        }
        stage('Verificação da porta de qualidade') {
            steps {
                script {
                    echo 'A verificar porta de qualidade...'
                    // Exemplo de verificação com SonarQube usando a porta de qualidade
                    // wait-for-quality-gate abortPipeline: true
                }
            }
        }
        stage('Deploy para Staging') {
             when {
                // Condição para avançar para a próxima etapa, por exemplo, se a porta de qualidade for bem-sucedida
                expression { return BUILD_STATUS == 'SUCCESS' }
             }
             steps {
                script {
                    echo 'A fazer deploy para Staging...'
                    // Etapas para o deploy
                }
             }
        }
    }
}