Temos três conjuntos de suítes de teste:
- Uma suíte "pequena", levando apenas algumas horas para ser executada
- Uma suíte "média" que leva várias horas, geralmente é executada todas as noites (todas as noites)
- Uma suíte "grande" que leva mais de uma semana para ser executada
Também temos vários conjuntos de testes mais curtos, mas não estou focando neles aqui.
A metodologia atual é executar o pequeno conjunto antes de cada confirmação no tronco. Em seguida, o pacote médio é executado todas as noites e, se de manhã falhar, tentamos isolar qual dos commit de ontem foi o culpado, a reversão que confirma e repete os testes. Um processo semelhante, apenas com frequência semanal e não noturna, é realizado para o grande conjunto.
Infelizmente, o pacote médio falha com bastante frequência. Isso significa que o tronco geralmente é instável, o que é extremamente irritante quando você deseja fazer modificações e testá-las. É irritante porque, quando saio do porta-malas, não posso ter certeza de que é estável e, se um teste falhar, não posso ter certeza se a culpa é minha ou não.
Minha pergunta é: existe alguma metodologia conhecida para lidar com esse tipo de situação de uma maneira que deixe o tronco sempre na melhor forma? por exemplo, "comprometa-se em um ramo especial de pré-confirmação, que atualizará periodicamente o tronco toda vez que a noite passar".
E importa se é um sistema de controle de fonte centralizado como o SVN ou um sistema distribuído como o git?
Por ser um desenvolvedor júnior com uma capacidade limitada de mudar as coisas, estou apenas tentando entender se há uma maneira de lidar com essa dor que estou enfrentando.