Testen mit PHPUnit

Kontinuierlich und automatisiert testen

Kontinuierliches & automatisiertes Testen ist essentiell für die Entwicklung moderner Software. Es ist bekannt dass die Anzahl von Fehlern in Software dadurch drastisch reduziert wird[1]. Außerdem wurde gezeigt dass das Beheben eines Fehlers deutlich mehr Aufwand & Geld kostet je später im Entwicklungs-Prozess er behoben wird[2]. Bei einem Bug der während der Anforderungs- oder Architektur-Phase eingeführt wird kostet die Behebung in Produktion schnell hundertmal so viel wie eine sofortige Behebung. Entsprechend müssen so viele Probleme wie möglich so früh wie möglich erkannt und behoben werden.

Ein Problem mit der Einführung von Tests ist dass es sehr viele verschiedene Ansätze zur Umsetzung gibt. Die verschiedenen Ansätze haben jeweils ihre eigenen Vor- und Nachteile und damit je nach Szenario alle ihre eigene Berechtigung. Für einige der Test-Typen ist jedoch eine Anpassung des Quellcodes notwendig.

  1. "Realizing quality improvement through test driven development: results and experiences of four industrial teams" by Nachiappan Nagappan, E. Michael Maximilien, Thirumalesh Bhat, Laurie Williams (link)
  2. "Code Complete (2nd ed.)" by Steve McConnell (ISBN 0735619670)

Trainer und Dozenten

Bei Qafoo haben wir mehr als 10 Jahre Praxis-Erfahrung mit der Umsetzung verschiedener Tests in Projekten – von kleinen Open-Source-Projekten bis hin zu großen Enterprise-Projekten mit mehr als einer Million Code-Zeilen. Wir haben mit vielen Kunden zusammengearbeitet um die jeweils optimale Test-Strategie für Team, Projekt & Budget zu erarbeiten. Dabei haben wir das Testen bei vielen Unternehmen eingeführt – mit positivem Effekt auf Wartbarkeit und Entwicklungsgeschwindigkeit, so dass wir sicher sicher sind auch für Sie den richtigen Weg finden werden damit zu starten. Wir kennen alle Stolpersteine aus eigener Erfahrung und haben diese schon oft aus dem Weg geräumt. Durch das Teilen dieses Wissens können wir die Einführung von Tests bei Ihnen deutlich beschleunigen.

Voraussetzungen

Der Kurs richtet sich an Programmierer, die bereits mit PHP vertraut sind und die Sprache als Entwicklungsbasis für den "täglichen Gebrauch" nutzen.

Der Kurs wird keine Grundlagen vermitteln, auch Kenntnisse der Objektorientierten Programmierung mit PHP werden vorausgesetzt.

Inhalt

Der erste Schritt ist es die verschiedenen Test-Strategien kennen zu lernen. Sie müssen über die jeweiligen Vor- und Nachteile Bescheid wissen um die Entscheidung über die beste Strategie für Ihr Team, Budget & Projekt informiert treffen zu können.

Anschließend sollte das Team die wesentlichen Techniken erlernen. Das involviert die Verwendung von PHPUnit in ihrem Projekt und wie man die verschiedenen Test-Typen damit umsetzen kann. Mit den Tests kann dann neu geschriebene Software getestet werden so dass diese möglichst keine Fehler mehr aufweist. Eine Agenda für ein solches Training kann wie folgt aussehen:

  1. Die Grundlagen von Unit-Tests mit PHPUnit erlernen
  2. Test-Doubles und Integration-Tests erlernen
  3. Lernen wir man funktionale Tests mit PHPUnit und Mink entwickelt
  4. Den richtigen Test-Mix für das eigene Team & Projekt finden
  5. Tests für das eigene Projekt entwickeln

Kurszeiten

Wer möchte, reist bis 22 Uhr am Vortag an und nutzt den Abend bereits zum Fachsimpeln am Kamin oder im Park.

An den Kurstagen dann von 9-18 Uhr (mit 2 Kaffee- und 1 Mittagspause) etwa 60% Schulungen und 40% Übungen. Selbstverständlich arbeitet jeder Teilnehmer am von uns gestellten Notebook oft parallel zum Referenten mit.

Anschließend Abendessen und Angebote für Fachsimpeln, Ausflüge uvm. Wir schaffen eine Atmosphäre, in der Fachleute sich ungezwungen austauschen. Wer das nicht will, wird zu nichts gezwungen und findet auch jederzeit Ruhe.