In einem CI-Kontext ist eine der häufig verwendeten Maßnahmen zur Erhöhung des Qualitätsniveaus des Integrationszweigs ein obligatorischer Satz von Qualitätsprüfungen vor dem Festschreiben (in der Regel einschließlich der Erstellung einiger Artefakte, der Durchführung von Komponententests und sogar einiger Funktions- / Integrationstests).
Einige Regressionen (Build-Brüche, verschiedene Testfehler) werden jedoch von den CI-Systemüberprüfungen in genau den Bereichen erkannt, die von diesen obligatorischen Überprüfungen vor dem Festschreiben abgedeckt werden sollten.
Während der Analyse dieser Regressionen wird häufig das Argument gehört, dass der Entwickler, der die als Grund für die Regression identifizierte Änderung begangen hat, alle derartigen Überprüfungen erfolgreich bestanden hat. Und oft wird die Behauptung durch harte Beweise gestützt, die darauf hinweisen, dass:
- Nachdem die endgültige Version der Änderung erreicht war, wurde sie basierend auf der Spitze des Zweigs in einen neuen Arbeitsbereich portiert
- Die erforderlichen Artefakte wurden von Grund auf neu erstellt (der Build war also völlig in Ordnung, keine Probleme mit dem Cache usw.).
- Alle obligatorischen Tests wurden bestanden, einschließlich derjenigen, die den betreffenden Bereich abdecken, und sollten die Regression festgestellt haben
- Keine zeitweiligen Fehlalarme beeinflussten die jeweiligen Überprüfungen
- Beim Übertragen der Änderung in den Zweig wurden keine Dateizusammenführungen festgestellt
- Keine der zu ändernden Dateien wurde von einer anderen Änderung in der Verzweigung berührt, seit der neue Arbeitsbereich abgerufen wurde
Ist es wirklich möglich, dass eine Softwareänderung eine solche Regression verursacht, obwohl alle vorgeschriebenen Prozesse und Praktiken korrekt befolgt wurden? Wie?