Golden Master Test

Der Golden Master Test beschreibt eine Methode, um Legacy-Software minimalinvasiv testen zu können.

Bei der Arbeit mit Legacy-Software soll deren bestehendes Verhalten in der Regel zu großen Teilen bewahrt werden, da diese Systeme oft in Produktivumgebungen zum Einsatz kommen. Eine versehentliche Veränderung der existierenden Funktionalität, z.B. durch Refactoring, kann im Worst Case zu einem Ausfall der Systeme führen und sich somit massiv auf den Unternehmenserfolg auswirken. Der Maximierung von Sicherheit beim Umgang mit Legacy-Software ist also eine hohe Priorität einzuräumen. Eine frühzeitige Detektion von Regressionen wird im Wesentlichen durch eine hohe Testabdeckung mit automatisierten Tests erzielt. Gleichzeitig sind für Legacy-Systeme oftmals nur wenige bis keine Tests vorhanden, die diese Sicherheit geben könnten. Ein nachträgliches Aufsetzen von Unit- oder Integration-Tests ist mit einem hohen Aufwand verbunden, da zum einen häufig das Verständnis für die Implementierung der Legacy-Software fehlt und die Software zum anderen meist ohne Tests entwickelt wurde und folglich in einer Struktur vorliegt, die das Testen erschwert. Die Golden-Master-Technik bietet hier einen Lösungsansatz.

Bei der Golden-Master-Technik wird das Legacy-System als Black Box betrachtet und nicht die Implementierungsdetails der Software, sondern das Verhalten der Black Box auf Basis ihrer In- und Outputs getestet. Ein Snapshot der zuletzt als korrekt bekannten Outputs bildet den Golden Master. Dieser stellt im Test den erwarteten Output dar: Die Software wird mit den bekannten Inputs ausgeführt und der Output mit dem Golden Master verglichen. Der so entstehende Golden Master Test kann Änderungen im Verhalten des Legacy-Systems erkennen. Da die Software auf einer höheren Ebene von ihren In- und Outputs her getestet wird, ist ein tief gehendes Verständnis für die Implementierungsdetails nicht notwendig. Ebenso wenig ist ein Aufbrechen der Struktur oder eine größere Modifikation der bestehenden Codebasis erforderlich. Der Golden Master Test ermöglicht also ein minimalinvasives Testen von Legacy-Software.

Die Qualität des Tests hängt maßgeblich vom Golden Master ab. Schlägt der Test fehl, so liegt nicht automatisch eine Regression vor. Stattdessen kann auch eine Aktualisierung des Golden Masters nötig sein - etwa, weil sich die Logik und somit das Verhalten des Systems zwischenzeitlich geändert hat. Zudem ist häufig eine Vorverarbeitung des Outputs der zu testenden Software nötig, um einen robusten Golden Master Test zu erhalten: Der Output kann nichtdeterministische Elemente enthalten, wenn bei dessen Generierung Zufallszahlengeneratoren beteiligt sind. Auch Zeitvarianzen wie Timestamps, Threadnamen oder (Prozess-) IDs können Teil des Outputs sein. Um einen hochwertigen Golden Master zu erhalten, muss der Output des Legacy-Systems um diese Artefakte bereinigt werden.

Links