Test-Driven Development mit PHP

Mit phpUnit gibt es bereits seit Jahren eine Methode zur testgetriebenen Entwicklung in PHP. Gerade bei der agilen Software-Entwicklung ist diese Methodik ein Grundpfeiler im Softwareentwicklungsprozess. „Alte“ Vorgehensweisen wie das Wasserfall- oder das V-Modell gehören bei der modernen Webentwicklung langsam aber sicher der Vergangenheit an.

Interessant am Test-Driven Development ist der Test-First-Ansatz. Hierbei lässt man eine Software automatisch testen, obwohl diese die benötigte Funktionalität gar nicht besitzt. Die entwickelte Software wird demnach den Test nicht bestehen. Es wird nun genau so viel Produktionscode geschrieben, wie der Test es verlangt. Besteht die Software den Test, ist die Entwicklung abgeschlossen. Man kann nun neue Test-Szenarien aufbauen oder bestehende erweitern, und den Produktionscode wieder entsprechend anpassen. Ändert man den Code, kann die gesamte Software gegen alle bereits vorhandenen Tests geprüft werden. Würde also eine Code-Änderung die Funktionalität eines anderen Bereiches der Software gefährden, würde dieser ebenfalls bei einem automatischen Test durchfallen.

Die Vorteile liegen klar auf der Hand: Die Tests finden bereits während der Entwicklung statt, und nicht erst danach. Das Vertrauen in die Software steigt, da bei erfolgreichem Abschluss der Programmierarbeiten alle vorhandenen Test-Szenarien erfolgreich überprüft worden sind. Es entsteht auch kein Mehraufwand für Korrekturen nach Abschluss der Arbeiten, da die entsprechenden Tests sehr stark an das Pflichtenheft ausgerichtet werden können.

Eine Voraussetzung der agilen Programmierung ist es nun aber, dass solche Tests sehr schnell erledigt und ohne großen Aufwand geschrieben werden können. Und genau hier kommt phpUnit ins Spiel, dass diese Aufgaben erledigt. Allerdings kommt an diesem Punkt erschwerend hinzu, dass im Bereich der Web-Anwendungs-Entwicklung Formulare ausgefüllt werden müssen, bei denen ebenfalls Tests erfolgreich zu Ende geführt werden müssen.

Hierzu bedient sich phpUnit des Browser-Plugins Selenium. Dieses Plugin speichert Maus-Bewegungen und Tastatur-Eingaben, die dann nachträglich wie bei einem Makro automatisch abgespielt werden können. Entsprechende Formulare können somit beliebig oft mit Testdaten getestet werden.

Weiterführende Techniken des Extreme Programming unterstützt phpUnit ebenfalls. Ein Beispiel sei hier nur das Behaviour-Driven-Development oder auch Code-Coverage-Analysen. Die Analyse ist zum Beispiel ein Indikator für den Fortschritt der Verifikation und somit ein weiteres Hilfsmittel. Sie sagt allerdings nichts über die Lauffähigkeit des Programmes aus, wofür die eigentlichen Unit-Tests verwendet werden müssen.

Ich denke, das phpUnit definitiv in den Enterprise-Bereich gehört, und von jedem PHP-Programmierer zumindest einmal angetestet werden sollen, auch wenn er sich dazu entschließen sollte, das Programmpaket dann doch nicht einzusetzen.

Zur Homepage von phpUnit.

Ähnliche Beiträge

Lambda Funktionen in PHP 5.3 Das neue PHP wird über Lambda-Funktionen verfügen. Toll! Aber was ist das eigentlich? Nun ja, es ist in der Tat etwas schwer zu erklären, aber ich wil...
debugConsole – PHP Debugging und Tracing Debugging und Tracing für PHP ist ein *piep*! ;) Das Problem ist in der Regel das, das ein „richtiges“ Debugging nur dann möglich ist, wenn der Webser...
Bearbeiten von Bilderin in PHP mit PHPImageWorksho... Man kann von Drupal halten was man will, aber ich bleibe da stets bei meiner Meinung, dass die Module zur Bildmanipulationen die besten sind, die am C...
Tutorial phpUnderControl Zäumen wir einmal das Pferd von hinten auf, denn in unserem Falle heißt das Pferd nicht phpUnderControl, sondern CruiseControl. CruiseControl ist hier...

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.