IPC Countdown: Interviewserie

Unit Testing, Testabdeckung, weitere Tests – Tobias Schlitt im Interview
Kommentare

Tobias Schlitt erklärt Testabdeckung, PHP Unit, die Debug-Hürden durch PHP-5.4-Features und Change-Coverage. Wie gehe ich mit altem Code um? Wie vermeide ich Frust? All diese Fragen beantwortet der Profi und gibt zahlreiche Tipps.

Tobias Schlitt

„Unserer Erfahrung nach ist der Spaß am Testen bei vielen Entwicklern heute schon vorab vorhanden.“ Tobias Schlitt spricht auf der IPC 2012 über Unit Testing und Testen State of the Art.

Im Vorfeld zur International PHP Conference am 03. bis 06. Juni 2012 führen wir mit den Sprechern und Workshop-Leitern der Konferenz Interviews. Neben Einblicken in ihre Veranstaltungen liefern sie Ausblicke in ihrem jeweiligen Themengebiet.

Diese Woche haben wir mit Tobias Schlitt gesprochen.

PHP Magazin: Ihr Thema auf der IPC ist das Testen. Nun bedeuten Tests für viele Entwickler erst einmal zusätzlichen Aufwand, bei dem sie den produktiven Nutzen nicht unmittelbar erkennen. Wie bekommt man es hin, dass Testen auch Spaß macht?

Tobias Schlitt: Unserer Erfahrung nach ist der Spaß am Testen bei vielen Entwicklern heute schon vorab vorhanden. Die meisten Entwickler sind es Leid, ständig Web-Anwendungen händisch durch zu klicken und anschließend immer noch ein mulmiges Gefühl in der Magengegend zu haben.

Dennoch kommt natürlich regelmäßig am Anfang Frust auf, beispielsweise weil keine schnellen Erfolge im Bereich der Code-Coverage erkennbar sind oder die Entwickler auf sehr schwer testbaren Legacy-Code stoßen. Für den ersten Fall bietet sich die Metrik der Change-Coverage an, welche die Test-Abdeckung auf Basis von aktuellen Änderungen anzeigt, statt in Relation zur gesamten Code-Basis. Wesentlich ist auch, den richtigen Test-Mix für ein Projekt zu finden und nicht blind auf Unit-Testing zu setzen.

PHP Magazin: Testautomatisierung hat sich mittlerweile als Standard in der PHP-Welt etabliert. Welche Kriterien sollte eine Test-Suite erfüllen, um sich State-of-the-Art nennen zu können?

Tobias Schlitt: Dafür können natürlich sehr viele Kriterien heran gezogen werden, die auch je nach Projekt stark abweichen können. Generell ist es sehr wichtig, dass Test-Code gut lesbar ist, damit er, neben der Verifikation, auch Dokumentationszewecke erfüllen kann und leicht wartbar ist. Ein zweiter wichtiger Faktor ist die Ausführungsgeschwindigkeit.

Benötigt eine Unit-Test-Suite mehrere Minuten zur Ausführung, wird kaum ein Entwickler sie lokal, vor einem Commit ausführen. Ähnliches gilt natürlich auch, in anderen Zeiteinheiten, für Integrationstests. Wie vorher schon angesprochen, ist ein ausgewogener Mix aus verschiedenen Test-Ansätzen sehr viel sinnvoller als das oft propagierte Setzen auf reine Unit-Tests.

Insbesondere in volatilen Projekten bieten sich andere Test-Methoden viel eher an, um beispielsweise die Funktionen von Controllern zu verifizieren.

PHP Magazin: In einer Ihrer IPC-Session wird es um Unit-Tests mit PHPUnit gehen.
Können Sie unseren Lesern kurz einige Tipps geben, wie man schnell produktiv mit PHPUnit wird?

Tobias Schlitt: Zunächst ist es sehr wichtig, zu wissen an welcher Stelle man anfängt.

Viel zu oft wird in Projekten beschlossen „wir machen jetzt Unit-Testing“ und alle Entwickler arbeiten einfach drauf los. Hier gilt es zum einen, kritische Code-Teile zu identifizieren und konzentriert darauf hin zu arbeiten, diese mit Tests ab zu decken.

Auch empfehlenswert ist es, das Entwickeln von Tests zunächst an neuen Modulen zu üben. Damit kann der Entwickler erst ein Gespür für die Testbarkeit von Code entwickeln und sich, hoffentlich mit wenig Zeitdruck, in die verschiedenen Testpraktiken heran tasten.

PHP Magazin: Welche Test-Tools können Sie noch empfehlen?

Tobias Schlitt: PHPUnit deckt den Grund-Bedarf zum schreiben von Unit- und Integration-Tests sehr gut ab. Einige externe Tools, wie vfsStream und die bereits erwähnte Change-Coverage, können einem das Leben aber nochmal stark vereinfachen. Daneben ist es wichtig, gute Tool-Unterstützung zum Entdecken kritischer Code-Teile bereit zu haben.

Hierzu leisten Programme zur Berechnung von Software-Metriken sehr gute Dienste, die in der PHP-Welt durch PHP Depend und PHPMD vertreten sind. Ein Build-System wie ant hilft dabei, den Test-Prozess sowohl für die lokale Entwicklung als auch für den Einsatz auf einem Continuous-Integration-Server in einen Gesamtzusammenhang einzubetten. Daneben gibt es noch eine Fülle weiterer Tools zur Durchführung weiterer Tests, wie jMeter zur Performance-Analyse.

PHP Magazin: Gerade hat PHP 5.4 das Licht der Welt erblickt. Was ist für Tester interessant daran?

Tobias Schlitt: PHP 5.4 sehe ich persönlich eher skeptisch. Positiv auf das Testen wirken sich beispielsweise die Performance-Gewinne aus. Daneben bietet der neue integrierte Web-Server viel Potential beim Einsatz automatisierter Acceptance-Tests und beispielsweise für Web-Service-Integration-Tests. Daneben lauern in PHP 5.4 aber auch einige Gefahren für die Code-Qualität: Traits lassen sich sehr leicht missbrauchen und machen Code zunächst einmal schwerer verständlich.

Beides kann negative Auswirkungen auf die Entwicklung von Tests haben.
Ähnliches gilt auch für die neu eingeführte kurze Array-Syntax und
ähnliches: Code wird weniger explizit, dadurch schwieriger zu lesen und somit auch automatisch schwerer test- und debugbar.

Tobias Schlitt ist Diplom Informatiker (Uni) und arbeitet seit 1999 in
professionellen Web-Projekten auf Basis von PHP. Als Open-Source-Enthusiast
beteiligt er sich an verschiedensten Community-Projekten. Tobias ist Mitgründer
der Qafoo GmbH, die Teams mit Experten-Consulting und
individuellem Training dabei unterstützt, hoch-qualitative Web-Anwendungen zu
entwickeln. Hierunter fallen beispielsweise Themen wie automatisiertes Testen,
Continuous Integration und objekt-orientiertes Software-Design.
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -