A.3. Wie Regressionstests mit Subversion durchgeführt werden

Ein Problem, das manchmal auftreten kann ist "es hat vorher funktioniert, jetzt tut es das nicht mehr...". Hier eine Schritt-für-Schritt-Verfahren, um herauszufinden, wann das Problem aufgetreten ist. Dies ist nichts für Gelegenheitsanwender.

Zuerst musst du dir MPlayers Sourcenverzeichnis aus dem Subversion-Repository besorgen. Eine Anleitung hierzu findest du im Subversion-Abschnitt der Downloadseite.

Du wirst dann im mplayer/-Verzeichnis ein Abbild des Subversion-Baums auf der Client-Seite haben. Führe jetzt ein Update für dieses Abbild auf das von dir gewünschte Datum durch:

cd mplayer/
svn update -r {"2004-08-23"}

Das Datumsformat ist YYYY-MM-DD HH:MM:SS. Die Benutzung des Datumsformats stellt sicher, dass du in der Lage sein wirst, Patches anhand des Datums, an dem sie eingespielt wurden, extrahieren kannst, wie im MPlayer-cvslog-Archiv.

Gehe nun wie bei einem normalen Update vor:

./configure
make

Falls ein Nicht-Programmierer dies liest: Der schnellste Weg, zu dem Punkt zu gelangen, bei dem das Problem auftrat ist eine Binärsuche - das bedeutet: Suche das Datum der Bruchstelle, indem du das Suchintervall wiederholt halbierst. Zum Beispiel, wenn das Problem 2003 auftrat, starte in der Mitte des Jahres und frage "Ist das Problem schon da?". Wenn ja, gehe zurück zum 1. April; wenn nicht, gehe zum 1. Oktober und so weiter.

Wenn du viel Festplattenspeicher frei hast (eine vollständige Compilierung benötigt momentan 100 MB, und ungefähr 300-350 MB, wenn Debugging-Symbole mit dabei sind), kopiere vor einem Update die älteste Version, von der bekannt ist, dass sie funktioniert; das spart Zeit, wenn du zurückgehen musst. (Es ist normalerweise nicht nötig, 'make distclean' vor einer erneuten Compilierung einer früheren Version auszuführen. Wenn du also keine Backup-Kopie deines Original-Sourcebaums machst, wirst du alles neu compilieren müssen, wenn du beim gegenwärtigen wieder angekommen bist.)

Wenn du den Tag gefunden hast, an dem das Problem auftrat, fahre mit der Suche mit dem mplayer-cvslog-Archiv (sortiert nach Datum) und einem genaueren svn update, welches Stunde, Minute und Sekunde beinhaltet, fort:

svn update -r {"2004-08-23 15:17:25"}

Dies wird es dir leicht machen, exakt den verursachenden Patch zu finden.

Hast du den Patch gefunden, der Ursache des Problems ist, hast du fast gewonnen; Berichte darüber im MPlayer Bugzilla-System oder melde dich bei MPlayer-Users an und mach es dort bekannt. Es besteht die Chance, dass der Autor einspringt und eine Lösung vorschlägt. Du kannst auch solange einen genauen Blick auf den Patch werfen, bis er genötigt ist, zu offenbaren, wo der Fehler steckt :-).