Tenemos tres conjuntos de suites de prueba:
- Una suite "pequeña", que tarda solo un par de horas en ejecutarse
- Una suite "mediana" que toma varias horas, generalmente se ejecuta todas las noches (todas las noches)
- Una suite "grande" que tarda una semana o más en ejecutarse
También tenemos un conjunto de conjuntos de pruebas más cortos, pero no me estoy centrando en ellos aquí.
La metodología actual es ejecutar el conjunto pequeño antes de cada confirmación en el enlace troncal. Luego, la suite mediana funciona todas las noches, y si por la mañana resultó que falló, tratamos de aislar cuál de las confirmaciones de ayer fue la culpable, revertir esa confirmación y volver a intentar las pruebas. Se realiza un proceso similar, solo en una frecuencia semanal en lugar de nocturna, para la suite grande.
Desafortunadamente, la suite mediana falla con bastante frecuencia. Eso significa que el tronco a menudo es inestable, lo cual es extremadamente molesto cuando desea realizar modificaciones y probarlas. Es molesto porque cuando salgo del baúl, no puedo saber con certeza si es estable, y si una prueba falla, no puedo saber con certeza si es mi culpa o no.
Mi pregunta es, ¿hay alguna metodología conocida para manejar este tipo de situaciones de una manera que deje el tronco siempre en la mejor forma? por ejemplo, "comprometerse en una rama especial de precompromiso que luego actualizará periódicamente el tronco cada vez que pase la noche"
¿Importa si es un sistema de control de fuente centralizado como SVN o uno distribuido como git?
Por cierto, soy un desarrollador junior con una capacidad limitada para cambiar las cosas, solo estoy tratando de entender si hay una manera de manejar este dolor que estoy experimentando.