Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,059 of 9,059 pages
About the help in other languages
All help pages

Teststrategie

Wie Exponential getestet wird und wie Sie Ihre eigenen Änderungen testen - die Schichten von Syntaxprüfungen und statischer Analyse über PHPUnit-Suiten ohne Datenbank, Datenbanktests, Tests gegen laufende…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/software-engineers/testing-strategy.md

On this page

This page is a translation. Read the English original

Teststrategie

Diese Seite richtet sich an Ingenieure, die die Tests einer Änderung planen, prüfen, ob eine Änderung ausreichend getestet ist, oder bewerten, wie gut Exponential selbst getestet ist. Der Standard mit Zahlen und bekannten Lücken ist Tests und Continuous Integration.

Inhalt

  1. Die Schichten
  2. Was wo läuft
  3. Die Tests für eine Änderung wählen
  4. Wie ein guter Test hier aussieht
  5. Bekannte Lücken

Die Schichten

SchichtWerkzeugFindetGeschwindigkeit
Syntaxphp -l (PHP 8.3 und 8.0), node --checkParse-Fehler, Syntax neuer als PHP 8.0Sekunden
Dateimanifestbin/php/checkmanifest.phpeine Datei, deren Prüfsumme in share/filelist.md5 fehlt oder veraltet istSekunden
Codestilbin/php/checkcodestyle.php, phpcs.xml.distneue Stilverstöße, Typdeklarationen, Inkompatibilitäten mit PHP 8.0Sekunden
Statische AnalysePHPStan Stufe 1 mit einer Baselineneue Befunde in kernel/ und lib/eine Minute
Unit- und Komponententests ohne DatenbankPHPUnit, die meisten SuitenLogik, Parsen, Rendern, SicherheitsregelnMinuten
Design- und QualitätstestsPHPUnit-Suiten design und qualityInline-CSS oder -Skripte in Admin-Templates, Token-Regeln, Übersetzungen, die Sniffs selbstMinuten
Datenbankteststests/runtests.php --dsn ... --db-per-testSQL auf MySQL 8.0 und PostgreSQL 15länger
Tests gegen laufende InstallationenSuiten, die eine installierte Website brauchen, oder in Umgebungsvariablen genannte Live-ServerIntegration mit einer echten Website, MongoDB, HTTPohne diese übersprungen
Start-Rauchtesttests/bin/bootsmoke.php auf PHP 8.0eine Klasse, die nicht lädt, eine fehlende KompatibilitätsfunktionSekunden
Benchmarksbin/php/benchmark.php microLeistungsregressionen (nur Warnung)eine Minute

Was wo läuft

WoWas
git commit (nach make hooks)Syntax, Manifest, Codestil der gestagten Dateien, Format der Commit-Nachricht
git push (nach make hooks und make devtools)PHPStan gegen die Baseline
CI, QualitySyntax, Manifest, Commit-Nachrichten, Codestil (Warnung), PHPStan, Sniff-Tests, PHP-8.0-Lint, Installation und Start
CI, PHPUnitder Lauf ohne Datenbank auf PHP 8.1 bis 8.5 und Datenbanktests auf MySQL 8.0 und PostgreSQL 15
CI, Performanceder Micro-Benchmark (Warnung)

Details: CI-Gates und Qualitätsprüfungen.

Die Tests für eine Änderung wählen

  1. Die Tests, die den geänderten Dateien zugeordnet sind. tests/test-map.json ordnet Quelldateien den Testdateien zu, die sie abdecken; zusammen mit den Tests, die nach den geänderten Klassen benannt sind, wählt es die Tests einer Änderung aus.
  2. Ein neuer Test, der ohne die Änderung fehlschlägt und mit ihr besteht. Die Anleitung zum Mitwirken verlangt genau das.
  3. Die Suite des Bereichs, zum Beispiel php vendor/bin/phpunit --testsuite kernel-classes.
  4. Der ganze Lauf ohne Datenbank vor einem größeren Push: php vendor/bin/phpunit.
  5. Die Datenbanktests, wenn sich SQL geändert hat.
  6. Eine Prüfung auf einer laufenden Website für alles, was rendert: heller und dunkler Modus, die unterstützten Breiten, keine Konsolenfehler.

Wie ein guter Test hier aussieht

  • Er braucht keine Datenbank, sofern er nicht SQL testet, und läuft so auf jedem CI-Zweig (Tests ohne Datenbank und Testsuiten).
  • Er liest nichts aus der Installation eines Entwicklers: kein settings/override, keine Caches in var/, keine installierte Website. Die CI hat nichts davon.
  • Er hinterlässt keinen Zustand: keinen statischen Cache, keinen INI-Wert und keine Datei unter var/, die der nächste Test sieht.
  • Ein Test, der einen Live-Server braucht, liest dessen Ort aus Umgebungsvariablen und wird mit dem Namen der Variablen übersprungen, wenn sie nicht gesetzt ist; er trägt keinen eigenen Hostnamen, kein Konto und kein Passwort.

Bekannte Lücken

Aus dem Standard: Einige Testdateien gehören zu keiner Suite, die Suiten gegen laufende Installationen werden in der CI übersprungen, die Datenbankjobs decken nur MySQL und PostgreSQL ab (nicht SQLite, MariaDB, Oracle oder MongoDB-Server), PHPUnit läuft nicht auf PHP 8.0, die Abdeckung wird gesammelt, aber nicht veröffentlicht oder durchgesetzt, und die Hooks sind optional. Planen Sie darum herum: Ist Ihre Änderung spezifisch für eine Engine ohne CI-Job, testen Sie sie selbst auf dieser Engine.

Verwandte Seiten

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.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x