Buchbesprechung: Softwarequalität in PHP-Projekten

Von | 13. November 2012

Auch wenn es länger gedauert hat als erwartet, heute konnte ich das Buch: Softwarequalität in PHP-Projekten von Sebastian Bergmann & Stefan Priebsch endlich zu ende lesen und euch mit einer „kleinen“ Rezension beglücken.

Fakten zum Buch:

  • Seiten: 528 Seiten
  • Verlag: Carl Hanser Verlag GmbH & CO. KG
  • Sprache: Deutsch
  • ISBN-13: 978-3446419230
  • ISBN-10: 3446419233

Tja was gibt es zu sagen, beziehungsweise zu schreiben? Eine ganze Menge. Fangen wir mal mit den beiden Hauptautoren an, ich vermute die Namen Sebastian Bergmann und Stefan Priebsch dürften vielen PHP – Entwicklern bekannt sein. Sebastian ist mir persönlich vor allem durch die vielen netten und sehr genialen Tools im PHP Umfeld bekannt. Ganz besonders durch PHPUnit. Stefan ist mir durch diverse Vorträge bekannt, auch bin ich irgendwie der Überzeugung mal ein Training mit ihm absolviert zu haben 🙂 Also alleine die Autoren lassen schon auf einen sehr fundierten Inhalt des Buches schließen.

Worum geht es in dem Buch? Um alles was mit Softwarequalität zu tun hat *Überraschung*. In diversen Kapiteln (siehe nächsten Abschnitt) werden viele Möglichkeiten aufgezeigt die Qualität in der Software – Entwicklung zu steigern und auch zu messen. Es gibt viele Beispiele von bekannten PHP Projekten (z.B. Zend Framework oder Symfony). Das Thema „Testen“ hat hier wie ich finde den Schwerpunkt, die Kniffe und Fallstudien die vorgestellt werden sind absolut interessant und schön zu lesen (jeweils von unterschiedlichen Autoren geschrieben). Auch wenn der Titel es vermuten lässt, der Inhalt ist auch für nicht PHP – Entwickler durchaus interessant, zwar werden oft Tools aus der PHP Welt genutzt, das meiste kommt aber eh aus der Java Welt und dürfte sich fast 1:1 umsetzen lassen.

Kommen wir nun aber zu den einzelnen Kapiteln, vielleicht nicht der typische Aufbau einer Buchbesprechung, aber da ich mir immer zu jedem Kapitel meine Gedanken und Notizen gemacht habe, ist es für mich so am angenehmsten.

Kapitel 1: Die Grundlagen

Einführung in das Thema, wie überzeugt man das Management das Testen wichtig ist. Vorstellung der Tools aus der PHP – Welt (PHPUnit, PDepend etc). Weiterhin werden die bekannten Metriken zum Messen von Softwarequalität vorgestellt und die Grundsätze die jeder Entwickler beherzigen sollte besprochen: DRY, Abhängigkeiten und Verantwortlichkeiten.

Kapitel 2: Testen von Software

Vorstellung von White & Black-Box Tests inklusive einem wie ich finde sehr gelungenen Beispiel anhand von PHPUnit. Was mir hier aber besonder gut gefallen hat, war die Erklärung zu Mocks & Stubs!

Kapitel 3: Best Practices 

Beispiel aus dem echten Leben, die Macher von Typo 3 berichten anhand ihrer eigenen Erfahrungen. Das Kapitel hat mich wirklich „gefesselt“ was ja für Fachbücher nicht unbedingt typisch ist.  Das mag daran liegen das hier viele Punkte aufgezählt wurden, die mir auch in der täglichen Arbeitswelt begegnen! Ein Abschnitt innerhalb dieses Kapitels ist dem Profiling von PHP Anwendungen gewidmet, das Tool XHRProf war mir dann auch neu. Abschließend noch ein Link welchen ich mir notiert hatte: http://www.99-bottles-of-beer.net/ (Beispiel 99 Bottles of Beer in vielen Programmiersprachen).

Kapitel 4: Bad Practices in Unit Tests

Beispiele für schlechte Unit Test, vieles anhand vom Zend Framework. Als Bad Practices sind hier Punkte wie: Surfende Teste, selbst validierende und langsame Tests zu nennen.

Kapitel 5: Qualitätssicherung bei Digg

Digg dürfte ja vielen ein Begriff sein? Falls nicht einfach mal Google bemühen. Dieses Kapitel spiegelt die Erfahrungen der Macher wieder. Die einzelnen Abschnitte sind nach Problemen welche das Team im Laufe der Zeit durchgestanden hat gegliedert: Die Größe des Teams und Projekts, die Menge an Code und auch der vorhanden Tests. Recht anschaulich beschreiben die Digg – Entwickler hier auch wie das Thema Unit Testing etabliert und beliebt gemacht wurde (mit mehr oder weniger viel Erfolg).

Kapitel 6: Testen von serviceorientierten APIs

Wie testet man eigentlich ob die eigenen Komponenten richtig mit Twitter oder Facebook sprechen? Beispiele anhand der verschiedenen Service – Klassen aus dem Zend Framework 1.

Kapitel 7: Wie man einen WebDav Server testet

Ein nicht so oft anzutreffendes Thema, wie testet man mit PHPUnit einen in PHP implementierten WebDav Server, insbesondere wenn es X verschiedene Clients gibt die bedient werden sollen? Weiterhin gibt es vorher eine Einführung in das WebDav Protokoll, so wie Informationen zum Erstellen eigener „Test – Rezepte“.

Kapitel 8: Testen von Symfony & Symfony Projekten

Spannende Erzählung vom Symfony Team, wie realisiert man ein möglichst stabiles Framework für das „Enterprise-Umfeld“.

Kapitel 9: Testen von Grafikausgaben

Dieses Kapitel war für meine Verhältnisse doch zu „komplex“. Hier geht es darum wie man die Erzeugung von Charts (Teil der ezComponents) testet, sowie mit dem Test von Binären – Daten umgeht. Mitgenommen habe ich allerdings die vielfältigen Möglichkeiten die es in Hinblick auf das Mocken in PHPUnit gibt.

Kapitel 10: Testen von Datenbank Interaktionen

Nach Kapitel 9, wieder ein Highlight für mich. Pro & Contra Datenbanktests, gelungene Einführung in die DB Test Komponenten von PHPUnit inklusive der Nutzung von Datasets in verschiedenen Formaten.

Kapitel 11: Qualitätssicherung bei studiVZ

Wie testet studiVZ, es geht hier hauptsächlich um „End to End“ Tests beziehungsweise um Akzeptanztest mit Unterstützung durch Selenium(RC) und PHPUnit. Die Beispiele in diesem Abschnitt haben wir sehr gefallen, immer getreu dem Motto „aus Fehlern lernt man“. Auch wird  die Thematik des richtigen QA-Teams aus menschlicher Sicht betrachtet. Zum Abschluss dann noch ein paar Ideen zur DSL (Domain-specific language) im Bereich des Testen.

Kapitel 12: Kontinuierliche Integration

Vorteile der statischen Code Analyse im Zusammenspiel mit phpUnderControl. Sehr ausführliche Erklärung der Kennzahlen und Metriken welche zum Einsatz kommen (NOC, LOC, Cyclo..). Als besonderes Highlight dann eine Art Tutorial zur Installation der Continuos Integration Plattform (phpUnderControl).

Kapitel 13: swoodoo – eine wahrhaft agile Geschichte

Schöne Fallstudie der Flug – Suchmaschine. Alleine schon die Einführung der benutzen Technik war wunderbar. In diesem Kapitel dreht sich fast alles um das eXtreme Programming und dessen Anwendung. Am Ende gibt es dann noch einen netten Exkurs – Wenn Java Entwickler , PHP Code schreiben 🙂 Lesenswert!

Kapitel 14: Gebrauchstauglichkeit

Hier geht es um nicht funktionale Aspekte – Usability der Anwendung. Auf welche Probleme stößt man insbesondere in der Frontend-Entwicklung (unterschiedliche Browser, Displays, Plugins und so weiter). Ein weiterer Punkt: Die richtige Entscheidung Treffen zwischen Kosten und Nutzen entsprechender Optimierungen im Frontend. Was ist in Hinblick auf Barrierefreiheit und Performanz zu beachten.

Kapitel 15: Performanz

Welchen Zweck verfolgen Performanz – Tests, Vorstellung der vielen Werkzeuge für Lasttests, Profiler und zum auslesen von Systemmetriken. Erwähnt werden unteranderem Tools wie XDebug, Callgrind und Apache AB. Vermeiden von Micro – Optimierung!.

Kapitel 16: Sicherheit

Sollte jeder Entwickler in ruhe gerne 2 – 3 mal Lesen. Es beginnt mit einer Erläuterung was eigentlich Sicherheit ist (z.B. aus der Sicht eines Administrators oder Kunden). Welche Anforderungen an den Betrieb werden gestellt. Stichwort was eigentlich den Inhalt schon gut beschreibt: Secure by Design. Zusätzlich werden die typischen Probleme aufgelistet (XSS, CSRF).

Mein Fazit

Tjo was gibt es noch zu sagen, ich bin von dem Buch wirklich überzeugt. Gibt es doch wirklich einen gesamten Überblick zum Thema Qualität, es deckt sich sehr mit den Schulungen / Kursen die ich zu den Themen besucht habe (die waren allerdings allgemein gehalten). Ich kann das Werk jedem PHP Entwickler und auch „Chefs“ entsprechender Abteilungen nur ans Herz legen. Klar dürfte sein das sich leider nicht alles in der Praxis so umsetzen lässt, auch wenn man beim Lesen des Buches den Eindruck gewinnt und vor allem die Motivation entwickelt.