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

Die Wunderwelt von PHP und cURL PHP kann eine Menge, und eine Menge sogar doppelt bis dreifach. Das öffnen entfernter Dateien kann mittels "normalem" Dateihandling auch über die soge...
Application.ini – Cheat Sheet für das Zend F... Das Zend Framework ist so eine Sache, es kommt unheimlich gut an beim Kunden, aber unter "normalen Umständen" wäre es sicherlich nicht meine erste Wah...
Tutorial Amazon Web Services mit PHP – IV &#... Nachdem wir uns im letzten Teil des Tutorials mit dem Funktionscaching beschäftigt haben, besitzen wir nun alle notwendigen Werkzeuge, um Daten aus de...
Serverseitige Komprimierung Tja, wer es noch nicht weiß, Seiten lassen sich auf dem Server mit gzip komprimieren, und der Browser entpackt diese dann automatisch. Soweit zumindes...

Schreibe einen Kommentar