Seit kurzer Zeit gibt es das DenkzeitWiki. Um bequem Links dorthin zu setzen, wurde ein Wordpress-Plugin geschrieben, dass einen Eintrags-Text nach bestimmten Mustern durchsucht und dann Ersetzungen vornimmt. All das wird mit regulären Ausdrücken (RE) erledigt.
Diese RE müssen aber von Zeit zu Zeit angepasst werden. Beispielsweise habe ich erst kürzlich InterWiki-Linking ermöglicht. Dafür wird vor der eigentlichen WikiSeite das entsprechende Wiki angegeben: Holon:SiteMap linkt dann in mein HolonWiki. Zuvor hatte ich das Verlinken von Gruppen ermöglicht.
Man kann sich vorstellen, der RE ist inzwischen etwas komplexer geworden: '/{{2}(?:([a-za-z]+):)?([a-za-z]+.)?([a-za-z_]+(?:#[wd]*)?)(?:s+(.*?))?}{2}/' Bei Änderungen ist immer zu befürchten, dass kaputt geht, was einmal funktionierte. Also sollte geprüft werden, ob Altes auch nach einer Änderung am RE noch funktioniert. Hier kommt UnitTesten ins Spiel.
Die Idee des UnitTestens ist ziemlich einfach: Man schreibt ein paar positive und ein paar negative Testfälle, d.h. Testfälle, die das zu testende Stück Software mit einem positiven Ergebnis bearbeiten muss und Testfälle, bei deren Bearbeitung ein Fehler auftreten muss (eine Exception, ein negatives Ergebnis, etc.). Dieser Fehler muss auftreten. Das zeigt an, dass die Einheit Fehler richtig erkennt und darauf korrekt reagiert. So gesehen sind auch diese Testfälle positiv zu bestehen.
Im Fall der RE habe ich als positive Testfälle mindestens die bereits in der Denkzeit verwendeten Muster. Negative Testfälle sind solche, die der RE nicht matchen darf. In Python gibt es das Modul unittest, das den Hacker beim Erstellen der Testfälle dahingehend unterstützt, dass automatisch Methoden aufgerufen werden, die mit test beginnen. Ganz so wie bei JUnit für Java. Weiterführende Links zum Unittesten gibt’s im Wiki. Außerdem sei gleich an dieser Stelle Dive into Pythons Chapter 13. Unit Testing empfohlen.
Die Verwendung von UnitTests, auch in solch kleinem Maßstab wie hier beschrieben, bringt eine gewisse Erleichterung. Man braucht sich keine Sorgen machen, dass nach einer Änderung im Code (oder speziell im RE) irgendwas kaputt geht. Außerdem habe ich die Erfahrung gemacht, dass man sich so eher traut Code (bzw. RE) zu vereinfachen.




Post a Comment