PHP-Code testen: Ein Leitfaden für Anfänger von Null bis zum ersten Test

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Warum ist PHP-Testen nicht beängstigend, sondern nützlich?

\n\n

Stellen Sie sich vor: Sie haben ein PHP-Skript geschrieben, es funktioniert. Sie freuen sich. Eine Woche später müssen Sie eine neue Funktion hinzufügen. Sie ändern ein paar Zeilen – und plötzlich geht alles kaputt. Kommt Ihnen das bekannt vor? Wenn ja, dann müssen Sie dringend PHP-Testen kennenlernen. Das ist keine Magie, sondern einfach eine Reihe von Werkzeugen, die Ihr Projekt vor dem Chaos bewahren.

\n\n

Viele Anfänger-Entwickler haben Angst vor Tests. Es scheint kompliziert, langweilig und zeitaufwändig. In Wirklichkeit ist PHP-Unit-Testing wie eine Versicherung: Sie zahlen jetzt ein wenig, um später nicht alles zu verlieren. In diesem Artikel schauen wir uns an, wo ein Anfänger mit dem PHP-Testen beginnen kann, welche Werkzeuge verwendet werden und wie man den ersten Test schreibt, ohne verrückt zu werden.

\n\n

Was ist Testen und warum wird es benötigt?

\n\n

Code-Testen ist der Prozess der Überprüfung, ob Ihr Programm genau das tut, was Sie erwarten. Anstatt jedes Mal manuell den Browser zu öffnen und auf Links zu klicken, schreiben Sie spezielle Skripte (Tests), die das für Sie erledigen.

\n\n

Die wichtigsten Vorteile:

\n
    \n
  • Sicherheit im Code. Sie wissen genau, dass nach Änderungen nichts kaputt geht.
  • \n
  • Zeitersparnis. Automatische Überprüfung funktioniert schneller als manuelle.
  • \n
  • Dokumentation. Tests zeigen, wie Ihr Code funktionieren soll.
  • \n
  • Vereinfachung von Refactoring. Sie können Code bedenkenlos umschreiben, wenn die Tests bestehen.
  • \n
\n\n

Das beliebteste Werkzeug für PHP-Testen ist PHPUnit. Es ist der De-facto-Standard in der PHP-Welt. Damit werden wir arbeiten.

\n\n

Installation von PHPUnit: Zwei einfache Wege

\n\n

Bevor Sie Tests schreiben, müssen Sie PHPUnit installieren. Es gibt zwei Hauptwege.

\n\n

Weg 1: Composer (empfohlen)

\n\n

Wenn Sie bereits Composer verwenden (und das sollten Sie, es ist der Abhängigkeitsmanager für PHP), dann ist es ganz einfach. Öffnen Sie ein Terminal im Stammverzeichnis Ihres Projekts und führen Sie aus:

\n\n
composer require --dev phpunit/phpunit ^10
\n\n

Das Flag --dev bedeutet, dass PHPUnit nur für die Entwicklung installiert wird und nicht auf den Produktionsserver gelangt.

\n\n

Weg 2: PHAR-Archiv

\n\n

Wenn Composer nicht Ihre Wahl ist, können Sie PHPUnit als einzelne Datei herunterladen:

\n\n
wget https://phar.phpunit.de/phpunit.phar\nchmod +x phpunit.phar\nsudo mv phpunit.phar /usr/local/bin/phpunit
\n\n

Danach sollte der Befehl phpunit --version die Version anzeigen.

\n\n

Erster Test: Schreiben und Ausführen

\n\n

Jetzt kommt der spannende Teil. Wir erstellen eine einfache Klasse und schreiben einen Test dafür. Nehmen wir an, wir haben eine Funktion, die zwei Zahlen addiert.

\n\n

Schritt 1. Zu testender Code

\n\n

Erstellen Sie die Datei src/Calculator.php:

\n\n
<?php\n\nnamespace App;\n\nclass Calculator\n{\n    public function add(float $a, float $b): float\n    {\n        return $a + $b;\n    }\n}
\n\n

Schritt 2. Test für diese Klasse

\n\n

PHPUnit folgt der Konvention: Tests werden im Verzeichnis tests/ gespeichert, und der Name der Testdatei stimmt mit dem Klassennamen mit dem Suffix Test überein. Erstellen Sie tests/CalculatorTest.php:

\n\n
<?php\n\nnamespace Tests;\n\nuse App\\Calculator;\nuse PHPUnit\\Framework\\TestCase;\n\nclass CalculatorTest extends TestCase\n{\n    public function testAdd()\n    {\n        $calculator = new Calculator();\n        $result = $calculator->add(2, 3);\n        $this->assertEquals(5, $result);\n    }\n}
\n\n

Was passiert hier?

\n
    \n
  • Wir erben von TestCase – der Basisklasse von PHPUnit.
  • \n
  • Die Methode testAdd ist unser Test. PHPUnit führt automatisch alle Methoden aus, die mit test beginnen.
  • \n
  • $this->assertEquals() ist ein Assert (Behauptung). Es überprüft

Blogs

Buchempfehlungen