Wie wir die Regressionstest im Griff behalten


Thomas Wölfer
Thomas Wölfer

05. März 2013


Der Quellcode der Baustatik wird täglich zweimal übersetzt – der eine “Build” erzeugt eine 32bit Variante der Baustatik, der andere eine 64bit Variante. (Auf den Workstations der Entwickler wird natürlich häufiger übersetzt – die beiden angesprochenen Builds laufen im Rahmen der automatischen Tests ab.)

Beide Versionen werden am frühen Abend erzeugt: Sobald sie “fertig” sind, werden damit  “Testcases” durchlaufen. Jeder dieser Fälle besteht im Kern aus einem Dokument, das geladen und vollständig berechnet wird – wobei “vollständig” bedeutet, das alle Ergebnisse, die man prinzipiell für dieses Dokument ermitteln kann auch ermittelt werden.

Diese Ergebnisse werden dann mit einem Satz an bekannten richtigen Ergebnissen verglichen – stimmen sie nicht überein, ist im Laufe des Tages ein Fehler in das Programm eingeführt worden, und wir müssen um alsbald möglich um eine Korrektur kümmern.

Nun gibt es zum einen eine ganze Menge an diesen Testfällen (einige Tausend), zum anderen wollen wir auch die Verläufe im Blick behalten können – und zwar darum, um Fragen der Art “Ist das gestern oder vorgestern das erste Mal aufgetreten” beantworten zu können.

Darum läuft der komplette Mechanismus auf 2 Buildservern ab, die sämtliche Ergebnisse der Testläufe für 12 Monate archivieren: Wir können also jederzeit auf Ergebnisse der Testcases zurückgreifen – auch dann, wenn es sich um einen Zeitpunkt in der Vergangenheit handelt.

Außerdem braucht man natürlich auch eine Übersicht, mit der man auf den ersten Blick sehen kann, was geklappt hat – und was nicht. Darum laufen auf den Buildservern auch noch je ein Webserver, der eine praktische Übersicht über die Testverläufe liefern kann. Sowas sieht dann in etwa so aus:

Das Bild zeigt einen Auszug aus der Übersicht für den 32bit Test im Januar: Jede Zeile gehört zu einer Gruppe von Tests – also z.B. Durchlaufträger aus Holz und Stahl, der elastische Balken und so weiter. Jede Spalte steht für den Tag, an dem die Tests durchgeführt wurden: Man kann sehen, das es beim Faltwerk am 4 Januar ein Problem gab (darum die rote Markierung) und am 13. überhaupt kein Test durchgeführt worden war. (Glaube, da hatten wir den Server aus Wartungsgründen runtergefahren.)

Natürlich können wir in die Details der Tests tiefer einsteigen: Jede Zahl ist ein Link, der zu allen Details aller Tests der angeklickten Gruppen am angeklickten Tag führt. Das sieht dann in etwa so aus – man bekommt zunächst eine Liste aller Tests (mit ein paar zusätzlichen statistischen Daten zum Test):

Ist ein Test fehlgeschlagen (rotes statt grünes Symbol), dann kann man auch darauf klicken, und sich die einzelnen nicht mehr “stimmenden” Zahlen im Detail ansehen.