Was ist ein PHP Functional Test 2026?
Ein PHP Functional Test ist ein automatisierter Anwendungstest, der vollständige HTTP Requests simuliert und die Response der Applikation prüft. In Symfony nutzt man dafür die WebTestCase Klasse aus dem FrameworkBundle zusammen mit PHPUnit.
Welche Tools braucht man für PHP Functional Tests 2026?
Für funktionale Tests in Symfony benötigt man das symfony/test-pack (enthält PHPUnit), optional Foundry für Test Fixtures, DAMADoctrineTestBundle für Datenisolierung und den Symfony BrowserKit Client für HTTP Simulation.
Wie unterscheiden sich Functional Tests von Unit Tests 2026?
Unit Tests prüfen einzelne Klassen isoliert ohne Abhängigkeiten. Functional Tests simulieren dagegen komplette HTTP Requests und testen das Zusammenspiel aller Schichten: Routing, Controller, Services, Datenbank und Template Rendering.
Kann man JavaScript mit Symfony Functional Tests testen 2026?
Nein, der Symfony BrowserKit Client führt kein JavaScript aus. Für JavaScript Tests empfiehlt sich Cypress als E2E Testing Framework. Symfony Panther bietet alternativ einen echten Browser Client mit JavaScript Unterstützung.
Wie schnell sind PHP Functional Tests 2026?
Symfony Functional Tests sind deutlich schneller als Browser basierte E2E Tests, da sie den Kernel direkt aufrufen statt echte HTTP Requests zu senden. Eine typische Testsuite mit 200 funktionalen Tests läuft in unter 30 Sekunden.
Wie erstellt man Test Fixtures für Functional Tests?
Mit dem DoctrineFixturesBundle und Foundry lassen sich Factory Klassen definieren, die reproduzierbare Testdaten erzeugen. Das DAMADoctrineTestBundle rollt alle Datenbankänderungen nach jedem Test automatisch zurück.
Was ist der Symfony BrowserKit Client?
Der BrowserKit Client ist ein simulierter Browser, der HTTP Requests intern an den Symfony Kernel weiterleitet. Er unterstützt GET, POST und andere Methoden, verarbeitet Cookies und Sessions und gibt einen Crawler für DOM Navigation zurück.
Wie integriert man Functional Tests in CI/CD?
In GitHub Actions, GitLab CI oder Jenkins lassen sich funktionale Tests als eigener Job konfigurieren. Der typische Workflow umfasst: Composer Install, Testdatenbank erstellen, Migrations ausführen, PHPUnit mit testsuite functional starten.
Was ist ein Smoke Test in Symfony?
Ein Smoke Test prüft, ob alle Routen einer Anwendung einen erfolgreichen HTTP Status (200 bis 299) zurückgeben. Symfony empfiehlt diesen Test als Minimum für jedes Projekt. Er lässt sich mit PHPUnit Data Providers effizient umsetzen.
Wie testet man Formulare funktional?
Der Crawler findet Formulare über CSS Selektoren oder Button Text. Mit selectButton und form lässt sich das Formular programmatisch ausfüllen und absenden. Anschließend prüft man die Weiterleitung und den Inhalt der Folgeseite.
Braucht man eine separate Testdatenbank?
Ja, funktionale Tests sollten immer auf einer eigenen Testdatenbank laufen. In Symfony wird diese über die .env.test Datei konfiguriert. Das DAMADoctrineTestBundle sorgt für automatische Transaktionsisolierung zwischen den Tests.
Wie misst man die Testabdeckung von Functional Tests?
Mit PHPUnit und Xdebug oder PCOV lässt sich Code Coverage für funktionale Tests generieren. Patch Coverage zeigt gezielt, ob neuer Code durch Tests abgedeckt ist. NCA empfiehlt eine Kombination aus Unit und Functional Test Coverage.