Anwendungen testen
Diese Seite richtet sich an Anwendungsentwickler, die Code ohne Angst ändern möchten. Die eigenen Tests und Qualitätsschranken des Kernels sind das Vorbild: Die meisten Tests laufen ohne Datenbank, einige gegen eine Wegwerf-Datenbank, und Prüfungen von Templates, Links und im Browser vervollständigen das Bild (Standard für Tests und CI).
Inhalt
- Die Ebenen
- Unit-Tests ohne Datenbank
- Tests mit Datenbank
- Prüfungen von Templates, Einstellungen und Links
- Browserprüfungen
- Vor jedem Push
Die Ebenen
| Ebene | Werkzeug | Findet |
|---|---|---|
| Syntax | php -l, eztemplatecheck.php | Parse-Fehler in PHP und Templates |
| Unit | PHPUnit, ohne Datenbank | Logik von Diensten, Validatoren, Handlern |
| Integration | PHPUnit mit tests/runtests.php --dsn ... | SQL, persistente Objekte, Inhaltsoperationen |
| Gerenderte Seiten | HTTP-Anfragen, Browser-Automatisierung | Templates, Rechte, Weiterleitungen |
| Barrierefreiheit und CSP | ein automatischer Barrierefreiheitsprüfer, das CSP-Berichtslog | Barrieren, Inline-Code |
Unit-Tests ohne Datenbank
Schreiben Sie die Logik als einfache Klassen (Dienste), die Ansicht, Befehl und Cronjob aufrufen; testen Sie diese mit
PHPUnit (PHPUnit-Tests ohne Datenbank). Der Kernel führt seine gesamte Standard-Suite ohne
Datenbank aus: vendor/bin/phpunit schließt die Gruppe database aus.
Tests mit Datenbank
tests/runtests.php --dsn <dsn> --db-per-test führt die Suiten gegen eine Wegwerf-Datenbank aus, wie es der
Datenbank-Job der CI tut. Kennzeichnen Sie solche Tests mit @group database. Richten Sie Tests niemals auf eine
Datenbank, die echte Inhalte enthält.
Prüfungen von Templates, Einstellungen und Links
php bin/php/eztemplatecheck.php -s<siteaccess> extension/expdemo/design/ # every template of your extension
./console exp:ini where expdemo.ini/ListSettings/DefaultLimit <siteaccess> # settings resolve as expected
./console exp:help check # links in your extension's docs, when indexedBrowserprüfungen
- Verwenden Sie einen eigenen Testbenutzer, der für den Lauf angelegt und danach entfernt wird; niemals ein gemeinsam genutztes Administratorkonto, dessen Einstellungen jemandem gehören.
- Prüfen Sie jeden Seitentyp Ihrer Erweiterung abgemeldet, als eingeschränkter Benutzer und als Redakteur.
- Prüfen Sie die Browserkonsole auf Fehler und das CSP-Berichtslog (
var/log/csp.log) auf blockierten Code (Content Security Policy für Anwendungen). - Lassen Sie auf jeder Seite einen Barrierefreiheitsprüfer laufen (Barrierefreiheit testen).
Vor jedem Push
- To do:
php -lfür geänderte PHP-Dateien; Template-Prüfung für geänderte Templates. - To do: Die Unit-Tests des geänderten Codes bestehen.
- To do: Keine Inline-Skripte oder -Styles hinzugefügt.
- To do: Autoloads neu generiert, falls sich Klassen geändert haben; Caches geleert; die Funktion von Hand ausprobiert.
- To do: CI für das Repository eingerichtet (CI für Erweiterungen).
Verwandte Seiten
- PHPUnit-Tests ohne Datenbank
- Qualitätsprüfungen
- Qualitätsschranken und Abnahme
- Freie Dokumentation: Diese Seite darf unter der GNU FDL 1.3 frei kopiert, übersetzt und verbessert werden.
Werden Sie Exponential-Partner
Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.