Em um contexto de IC, uma das medidas comumente usadas para aumentar os níveis de qualidade da ramificação de integração é um conjunto obrigatório de verificações de qualidade de pré-confirmação (geralmente incluindo a construção de alguns artefatos, a execução de testes de unidade e até alguns testes de recursos / integração).
No entanto, algumas regressões (quebras de construção, várias falhas de teste) são detectadas pelas verificações do sistema de IC exatamente nas áreas que deveriam ser cobertas por essas verificações obrigatórias de pré-confirmação.
Durante a análise dessas regressões, um argumento frequentemente ouvido é que o desenvolvedor que cometeu a alteração identificada como causa raiz da regressão passou com êxito em todas essas verificações. E muitas vezes a alegação é apoiada por evidências concretas que indicam que:
- após a versão final da mudança, ela foi transportada para um novo espaço de trabalho com base na ponta da ramificação
- os artefatos necessários foram construídos a partir do zero (portanto, a construção foi totalmente correta, sem problemas relacionados ao cache etc.)
- todos os testes obrigatórios passaram, incluindo aqueles que cobrem a área em questão e deveriam ter detectado a regressão
- nenhum falso positivo intermitente afetou as respectivas verificações
- nenhum arquivo mesclado foi detectado ao confirmar a alteração na ramificação
- nenhum dos arquivos que estão sendo modificados foi tocado por qualquer outra alteração confirmada na ramificação desde que o novo espaço de trabalho foi puxado
É realmente possível que uma alteração de software cause tal regressão, apesar de seguir corretamente todos os processos e práticas prescritos? Quão?