Schulung · Aufbau

PHPUnit-Upgrade ohne Überraschungen

Von PHPUnit 13 auf PHPUnit 14

Jedes Jahr im Februar erscheint eine neue Hauptversion von PHPUnit. Bring deine Testsuite ohne Überraschungen auf die neue Version und sorg dafür, dass das nächste Upgrade klein bleibt.

  • Umfang 2 Sitzungen à 2 Stunden
  • Format Live über Zoom
  • Sprache Deutsch
  • Preis pro Person 399 €

Worum es geht

Die neue PHPUnit-Version ist da. Deine Testsuite läuft noch auf der alten, und du weißt nicht, was beim Wechsel kaputtgeht. Vielleicht hängt sie an Methoden, die es nicht mehr gibt, an einem Verhalten, das sich geändert hat, oder an einer Erweiterung, die die neue Version noch nicht unterstützt. Je länger du wartest, desto größer wird der Abstand.

In zwei Sitzungen bringst du deine Testsuite auf die neue Version. In der ersten findest du heraus, was deinem Upgrade im Weg steht, und behebst es, solange deine Tests noch mit der alten Version laufen. In der zweiten wechselst du, verstehst, was danach rot wird und was sich still geändert hat, und legst fest, wie deine Testsuite bis zum nächsten Upgrade frei von Abkündigungen bleibt.

So arbeitest du

Die beiden Sitzungen sind die beiden Seiten des Wechsels: Die erste arbeitet auf der alten Version und räumt auf, die zweite wechselt. Was die alte Version schon als Deprecation meldet, behebst du, solange die Tests noch laufen; nach dem Wechsel bleiben nur die Änderungen, die keine Vorwarnung hatten.

Jeden Schritt zeigt Sebastian zuerst im Live Coding an einem Übungsprojekt, dann überträgst du ihn auf deine eigene Testsuite oder auf das Übungsprojekt. Dabei erfährst du, warum PHPUnit Funktionen abkündigt und entfernt und wie du früh siehst, was auf dich zukommt. Wer mehrere Hauptversionen zurückliegt, geht denselben Weg mehrmals; das besprechen wir in der zweiten Sitzung, geübt wird es nicht.

Ablauf

  1. Sitzung 1: Bestandsaufnahme und Aufräumen

    Was steht deinem Upgrade im Weg, und was lässt sich schon mit der alten Version beheben?

    • Wie PHPUnit Funktionen abkündigt und entfernt: zuerst in der Dokumentation, dann mit einer Meldung zur Laufzeit, schließlich mit der nächsten Hauptversion entfernt; und wo du früh siehst, was kommt
    • Wie lange eine Hauptversion Fehlerbehebungen bekommt
    • Zuerst auf die neueste Version der Vorjahresversion, denn sie meldet, was die nächste Hauptversion entfernt
    • PHPUnit-Deprecations sichtbar machen (--display-phpunit-deprecations) und von Deprecations aus PHP und aus Abhängigkeiten unterscheiden
    • Weitere Hindernisse: die PHP-Version, die die neue Hauptversion verlangt, Erweiterungen und Werkzeuge rund um PHPUnit, Versionsbeschränkungen in Composer, eigene Erweiterungen auf Basis des Event-Systems
    • Abkündigungen beheben, von Hand, mit Rector und mit einem Coding Agent, und prüfen, dass ein umgestellter Test noch scheitert, wenn der Code falsch ist

    Ergebnis: Eine Liste der Hindernisse für dein Upgrade, nach Aufwand geordnet, und die ersten behobenen Abkündigungen, deren Tests nachweislich noch scheitern, wenn der Code falsch ist

  2. Sitzung 2: Der Wechsel

    Was wird nach dem Wechsel rot, was ändert sich still, und wie bleibst du auf der aktuellen Version?

    • Der Wechsel: die Versionsbeschränkung in Composer anpassen, die XML-Konfiguration mit --migrate-configuration auf das neue Schema bringen, die Testsuite ausführen
    • Was danach rot wird, und warum: entfernte Methoden und Optionen, auch in Skripten und in der CI-Konfiguration
    • Geändertes Verhalten, das keine Fehlermeldung auslöst, etwa #[Group] an einer Elternklasse, und wie du es mit --list-tests vor und nach dem Wechsel findest
    • Eigene Erweiterungen an geänderte Events und Constraints anpassen
    • Mehrere Hauptversionen Rückstand: eine nach der anderen, denn nur die Vorgängerversion meldet, was die nächste entfernt
    • Auf der aktuellen Version bleiben: neue Abkündigungen im Lauf des Jahres beheben, Minor-Versionen laufend übernehmen und PHPUnit-Deprecations die Testsuite scheitern lassen

    Ergebnis: Das Übungsprojekt auf PHPUnit 14, die geänderte Testauswahl gefunden, und ein Fahrplan für deine eigene Testsuite, mit dem das nächste Upgrade klein bleibt

Für wen

  • Entwicklerinnen, Entwickler und Teams, die eine gewachsene Testsuite auf die neue PHPUnit-Version bringen müssen
  • Tech Leads, die den Aufwand für das Upgrade einschätzen und planen wollen
  • Alle, die Erweiterungen für PHPUnit pflegen

Voraussetzungen

  • Erfahrung mit PHPUnit
  • Für die Übungen: eine eigene Testsuite auf der Vorjahresversion von PHPUnit oder das Übungsprojekt, dazu die PHP-Version, die die neue PHPUnit-Version verlangt, lokal oder im mitgelieferten Container
  • Läuft dein Projekt noch auf einer PHP-Version, die PHPUnit 14 nicht unterstützt, arbeitest du in der ersten Sitzung an deiner eigenen Testsuite und in der zweiten am Übungsprojekt

Das nimmst du mit

  • Du weißt, was deiner Testsuite beim Upgrade im Weg steht und wie viel Arbeit es ist
  • Du behebst Abkündigungen gezielt, auch mit Rector und Coding Agents, und prüfst das Ergebnis
  • Du bringst deine Testsuite ohne Überraschungen auf die neue Version
  • Du hast einen Fahrplan, mit dem das nächste Upgrade klein bleibt

Verwandte Schulungen

Diese Schulung ist Teil des Lernpfads Auf dem aktuellen Stand bleiben.

Dein Trainer

Sebastian Bergmann beantwortet die Frage eines Teilnehmers am Laptop
Foto: Filip Kovačević

Sebastian Bergmann ist der Schöpfer von PHPUnit, dem De-facto-Standard für das Testen von PHP-Code. Seit 2001 hilft er Teams als Berater und Trainer dabei, wartbare und gut getestete Software zu bauen, seit 2009 als Mitgründer von thePHP.cc.