Kai Ole Hartwig
5 Min. Lesezeit
Niedrig
Von

Ein Gate, das nie rot war, ist keins

Eine grüne Pipeline sagt, dass keine Prüfung angeschlagen hat. Sie sagt nicht, ob eine Prüfung hätte anschlagen können. Eine Prüfung, die man nie rot gesehen hat, ist eine Vermutung.

pinup hat dazu die vielleicht strengste Meinung dieser Serie: Jede Prüfung wird absichtlich gebrochen, bevor man ihr traut.

01 — Die Meinung in einem Satz

Eine Prüfung ist erst eine, wenn man sie rot gesehen hat.

pinup hat dafür eine Mutationssuite: eine Tabelle mit benannten, gezielten Brüchen im eigenen Code. Jeder Eintrag nennt die Datei, die Stelle, die kaputte Version und die Tests, die den Bruch finden müssen. Die Suite kopiert den Code, baut einen Bruch ein, lässt die Tests laufen und erwartet Rot.

Ende September 2026 waren es 65 Brüche über neun Bereiche, jeder Bereich mit mindestens zwei. Dazu kommt ein 66. Eintrag, der nicht auffallen darf: ein geänderter Kommentar. Wird er rot, kann die Suite Rot und Grün nicht unterscheiden.

02 — Die Alternative: Coverage

Der übliche Maßstab ist Coverage: der Anteil der Zeilen, die Tests ausführen. Viele Projekte halten sie sehr hoch. Das ist billig zu messen und findet zuverlässig Code, den kein Test berührt.

Coverage misst aber, was ausgeführt wurde, nicht was geprüft wurde. Ein Test kann jede Zeile durchlaufen und keine einzige Aussage über das Ergebnis machen. Die Mutationssuite fragt deshalb anders: Wenn diese Zeile falsch wäre, würde es jemand merken?

03 — Der Preis

Langsam. Jeder Bruch heißt ein Testlauf. Die Suite läuft deshalb nur in einem eigenen CI-Job und nicht bei jedem lokalen Test.

Jeder neue Bereich kostet mindestens zwei Brüche. Ein Bereich gilt erst als fertig, wenn zwei Mutationen in ihm rot sind. Das macht manches kleine Feature doppelt so aufwendig.

Brüche veralten. Ein Eintrag sucht eine exakte Stelle im Code. Nach einem Umbau passt sie nicht mehr. Ein Test fängt das ab, verlangt aber, dass man die Tabelle mitpflegt.

Golden-Files ohne Abkürzung. Erwartete Ergebnisse werden gelesen, nie neu geschrieben. Es gibt keinen Schalter, der sie aktualisiert. Eine neue Aufzeichnung ist ein neues Verzeichnis, das man als Diff prüft.

04 — Der Anlass

Am 23. September 2026 fand die Suite einen Bruch, der auf meinem Rechner rot war und in CI grün. Der Grund: Acht Tests verlangten ein Repository, das nur lokal ausgecheckt war, obwohl sieben es gar nicht brauchten. In CI wurden sie still übersprungen. Sechs davon waren älter als dieser Tag und hatten in CI nie geprüft, was sie prüfen sollten.

Die Suite meldete den Bruch in CI deshalb als nicht gefunden, und genau das war ihr Zweck. Seitdem laufen sieben dieser Tests auch in CI. Der achte liest tatsächlich Dateien aus dem Repository und überspringt zu Recht. Dass ein Lauf, in dem alle Tests nur übersprungen wurden, als ungeprüft zählt statt als bestanden, galt schon vorher.

Grün heißt nicht sauber

Dieselbe Lektion gilt außerhalb von pinup. Ein Scan-Gate mit Frist für neue Befunde bleibt so lange grün. Wer nur auf den Status schaut, mergt ein Update mit einem neuen HIGH. Seitdem lese ich den Scan-Bericht vor jedem Merge, nicht nur seinen Status.

05 — Die Durchsetzung

Häufige Fragen

Brauche ich ein Framework für Mutationstests?+

Nein. pinups Suite ist eine Tabelle und eine Schleife, geschrieben mit der Standardbibliothek. Jeder Eintrag ersetzt eine exakte Stelle im Code und nennt die Tests, die rot werden müssen. Das reicht, weil die Brüche gezielt gewählt sind und nicht zufällig erzeugt werden.

Wie wählt man die Brüche aus?+

Einen pro Prüfung, die man schützen will. Die Frage ist immer dieselbe: Welcher kleine Fehler wäre hier am teuersten, und würde ihn ein Test finden? Mindestens zwei pro Bereich, damit ein Bereich nicht an einem einzigen Test hängt.

Gilt das auch für meine Renovate-Konfiguration?+

Ja, im Kleinen. Eine Regel, die ein Update zurückhalten soll, sollte man einmal greifen sehen. pinup whatif und pinup advise --plan zeigen, welche Regeln in deinen Repositories nie etwas getroffen haben.

Fazit

Eine Prüfung, die man nie rot gesehen hat, beruhigt, ohne zu schützen. Absichtliche Brüche sind langsam und machen Arbeit. Dafür weiß ich bei jeder Prüfung in pinup, dass sie anschlagen kann.

Nächste Woche geht es um Versionen, die nichts aktualisiert, und darum, welche so bleiben dürfen. Die Übersicht aller Teile und die Begriffe, die öfter vorkommen, stehen im Auftakt der Serie.

Welche deiner Pipeline-Gates können wirklich rot werden? Ich probiere es aus.

Ein Review deiner CI-Gates: welche Prüfung nie rot war, welche Tests in CI still überspringen und wo eine grüne Pipeline mehr verspricht, als sie hält.

Termin buchen →

Über den Autor

Photo of Kai Ole Hartwig.

Kai Ole Hartwig

Freelance DevSecOps consultant · OnlyOle Consulting

Programming since 2002 – self-taught, set up my own business with KO-Web in 2012. Over 100 projects, with a focus on security, performance, automation and quality. Today freelance: DevSecOps consulting, training and software development.