Artikelserie Test: Unit, Functional, Coverage

21. November 2025, 12:13 Uhr · Quelle: Pressebox
Artikelserie Test: Unit, Functional, Coverage
Foto: Pressebox
Artikelserie Test: Unit, Functional, Coverage
Unit-Tests überprüfen einzelne Code-Bausteine in PHP für maximale Zuverlässigkeit. Functional Tests stellen sicher, dass das gesamte System korrekt interagiert und funktioniert.

Karlsruhe, 21.11.2025 (PresseBox) - Als Entwickler sollte man sich immer darauf verlassen können, dass der Code, den man schreibt, so funktioniert wie er soll, und dass er keine Nebenwirkungen auf ältere, bereits bestehende Funktionen hat. Zu diesem Zweck gibt es automatische Tests. Wie mein Team bei der punkt.de diese verwendet, kann man in der Artikelserie über Tests nachlesen.

Im ersten Teil der Serieging es darum, dass geprüft wird, dass unser Code immer den selben Stil hat, sauber verwendet wird und Fremdlibraries aktuell sind. Nun wollen wir prüfen, dass der Code auch wirklich die Funktion erfüllt, die er soll.

Unit-Tests – klein aber fein

Der erste Schritt dazu sind Unit-Tests, welche wir insbesondere im Backend für den PHP-Code schreiben. Die Tests selbst werden mit dem Tool phpUnit umgesetzt.

Die Idee davon ist, dass Code schreibt, welcher von einer Klasse, welche man Testen möchte, einzelne Methoden aufruft und prüft, dass bei entsprechend befüllten Argumenten immer das korrekte Ergebnis ausgegeben wird.

Ein kleiner Beispieltest für einen einfachen Validator:

Für Unittests gibt es ein paar kleine Ideen:

  1. Man testet das „public Interface“ einer Klasse:Normalerweise will man nur die Methoden testen, die wirklich von außen aufgerufen werden, da diese im Endeffekt die Funktionalität widerspiegeln
  2. Dependencies – insbesondere Fremdcode – wird gemockt:Da man genau die eine Funktion testen möchte, und nicht einen großen Funktionen-Baum (mit Code, den man gar nicht unter Kontrolle hat), sagt man phpUnit „rufe nicht die Original-Dependency auf, sondern gib an der Stelle immer X zurück“
  3. AAA – Arrange, Act, Assert:Ein Test ist dann am einfachsten zu verstehen, wenn man zuerst alles vorbereitet (Arrange), dann alles ausführt (Act) und am Ende prüft, ob die Ergebnisse korrekt waren (Assert)
  4. Keine Logik in Tests:Die Logik, die man testet, ist innerhalb der getesteten Methoden. Wenn man zu viel Logik innerhalb eines Tests schreibt, dann braucht man einen Test für den Test, und damit hat man zu wenig Gewinn
Natürlich gibt es Ausnahmen zu diesen Ideen; Beispielsweise hatten wir im Team vor Jahren einen Test, der in einer Klasse genau eine protected Methode getestet hat, da diese das Kernstück der Klasse war und alle public Methoden nur diese protected aufgerufen hatten. Damit konnten wir uns Testaufwand sparen. Auch kann man zu viel Mocken und beispielsweise dafür sorgen, dass man nicht mehr echten Code testet, sondern nur noch die Mocks. Dies sind Fallstricke, die man immer wieder prüfen muss und die bei jedem Test wieder auf's neue Relevant werden.

Mit Unit-Tests wissen wir nun, dass unsere Puzzelteile im Code korrekt funktionieren, nun müssen wir prüfen, dass diese auch korrekt zusammengesetzt werden.

Funktionale Tests - die Summe der kleinen Teile

In den Unit-Tests wird nur eine einzelne Codestelle aufgerufen. Wir wollen nun wissen, dass die Codestellen zusammen mit dem verwendten Backend-Framework (in unserem Fall TYPO3 Extbase) in der Anwendungslogik korrekt funktionieren. Zu diesem Zweck schreiben wir Funtional Tests nach der entsprechendenTYPO3-Doku.

Dadurch, dass wir die Tests innerhalb eines TYPO3-Contextes aufrufen, stellen wir sicher, dass das „Außenherum“ korrekt initialisiert ist. Anschließend können wir Tests schreiben, welche beispielsweise Zugriff auf eine (teilweise generierte) Datenbank haben – in unserem Fall testen wir beispielsweise einen Importer.

Wir bereiten eine CSV-Datei vor, rufen innerhalb des Tests die Import-Methode auf und können danach in der Datenbank verifizieren, dass die Zeilen genau den Stand haben, den wir erwarten – wieder sehen wir AAA (Arrange, Act, Assert). Importer sind hier nur ein Beispiel, man kann theoretisch auch Scheduler-Tasks, Controller-Actions, Middlewares und anderes aufrufen.

Wir wissen, was wir testen – aber was testen wir genau?

Ein Thema, welches bei uns im Team derzeit noch nicht dediziert umgesetzt wird, aber zukünftig eingeplant wird, ist das Erfassen der Code Coverage. Man kann in phpUnit konfigurieren, welche Quellcode-Dateien theoretisch Teil des Testumfeldes sind, und phpUnit erfasst dann für diese Dateien, welche Methoden, Codezeilen und ähnliches innerhalb der Tests wirklich aufgerufen werden.

Daraus kann man sich dann eine Liste erstellen, in der man sieht, ob man z.B. in einer komplexen Methode Pfade entwickelt hat, welche nicht getestet sind, oder ob es ungetestete Klassen gibt. Außerdem wird eine Statistik erstellt, welche prozentual angibt, wie hoch der Anteil des getesteten Codes wirklich ist.

Ausblick

Im ersten Artikel hatten wir auf die Qualität des Codes geschaut, in diesem Teil auf die Funktionen innerhalb der php-Klassen. Im nächsten Teil unserer Serie werden wir darauf schauen, wie wir Teile unserer eigentlichen Anwendung testen.

Agiles Testing und Prozess-Know-how für Ihr Team:

Egal ob Agentur, Industrieunternehmen oder ein eigenständiges Entwicklerteam: Wenn Sie agile Testing-Prozesse etablieren oder weiterentwickeln wollen, unterstützen wir Sie mit unserem Know-how – sei es durch praxisorientierte Workshops oder durch direkte, projektbezogene Mitarbeit. Wir begleiten Sie von der Einführung agiler Testmethoden über die Optimierung bestehender Abläufe bis hin zur Entwicklung und Umsetzung individueller Testing-Strategien. Sprechen Sie uns gerne an, um gemeinsam Ihre Qualitätssicherung und Entwicklungsprozesse auf ein neues Level zu heben!

Software / Unit Tests / Functional Tests / Code Coverage / PHP
[pressebox.de] · 21.11.2025 · 12:13 Uhr
[0 Kommentare]
Backup. Firewall. MFA. Und dann? Wenn Recovery scheitert, zählt professionelle Datenrettung
Leipzig, 29.04.2026 (PresseBox) - Backup-Lösungen, Firewalls, Multi-Faktor-Authentifizierung, Endpoint Security und Zero-Trust-Konzepte gehören heute in vielen Unternehmen zur IT-Sicherheitsarchitektur. Sie reduzieren Risiken, schützen Zugänge und schaffen wichtige technische Barrieren. Doch sie beantworten nicht automatisch die entscheidende Frage im […] (00)
vor 5 Stunden
Deutscher Computerspielpreis 2026
München/Berlin (dpa) - Das Detektivspiel «The Darkest Files» ist das beste deutsche Computerspiel 2026. Das Berliner Entwicklungsstudio Paintbucket Games gewann beim Deutschen Computerspielpreis in München in der mit 100.000 Euro dotierten Hauptkategorie – und heimste zudem 40.000 Euro für den Gewinn in der Kategorie «Bestes Serious Game» ein. Der […] (00)
vor 17 Minuten
Sir Ringo Starr weigerte sich, 'eine der traurigsten Zeilen' auf seinem neuen Album zu singen.
(BANG) - Sir Ringo Starr weigerte sich, "eine der traurigsten Zeilen" zu singen, die T-Bone Burnett für 'Long Long Road' geschrieben hat. Die Beatles-Legende hat sich für das neue, hochkarätig besetzte Country-Album wieder mit dem ikonischen Produzenten zusammengetan und gab zu, dass einige Texte zu herzzerreißend waren, um sie zu singen. Rückblickend […] (00)
vor 4 Stunden
Meta
Menlo Park (dpa) - Der Facebook-Konzern Meta schraubt nach nur drei Monaten die Ausgaben für KI-Infrastruktur noch einmal nach oben. Für das laufende Jahr stellt Meta nun Kapitalinvestitionen zwischen 125 und 145 Milliarden Dollar (107 bis 124,2 Mrd Euro) in Aussicht.  Die vorherige Spanne lag bei 115 bis 135 Milliarden Dollar. 2025 gab der Konzern vor […] (00)
vor 19 Minuten
Steam Deck 2 lebt noch! – Valve arbeitet weiter am Nachfolger
Valve hat den Steam Deck 2 nicht auf Eis gelegt. Im Gegenteil: Laut einer neuen Einordnung von PCGamer.com unter Berufung auf ein aktuelles Gespräch mit Pierre-Loup Griffais ist Valve weiter „hart am Arbeiten“ zum Nachfolger des Steam Decks. Eine konkrete Ankündigung oder einen Starttermin gibt es aber weiterhin nicht. Das ist vor allem deshalb […] (01)
vor 2 Stunden
Prime Video: Amazon-Dienste wachsen auf 13,427 Milliarden
Das Online-Versandhaus konnte seinen Umsatz auf 181,519 Milliarden US-Dollar steigern. Dank AWS konnten erneut hohe Gewinne erzielt werden. Das in Seattle ansässige Unternehmen veröffentlichte am Mittwoch die Quartalszahlen. Der Umsatz stieg innerhalb eines Jahres von 155,667 Milliarden US-Dollar in den Monaten Januar, Februar und März 2026 auf 181,519 Milliarden US-Dollar. Der Gewinn vor […] (00)
vor 1 Stunde
Paris Saint-Germain - Bayern München
Paris (dpa) - Titelverteidiger Paris Saint-Germain muss im Rückspiel des Halbfinal-Krachers der Champions League beim FC Bayern München auf einen wichtigen Abwehrspieler verzichten. Wie der Club mitteilte, erlitt Achraf Hakimi beim 5: 4 im Hinspiel in Paris bei einem Zweikampf mit Konrad Laimer eine Verletzung am rechten Oberschenkel.  Der Marokkaner werde […] (00)
vor 2 Stunden
kostenloses stock foto zu aktienmarkt, anlagestrategie, berlin
Die aktuelle Preisstruktur von Bitcoin zeigt weniger eine klare Erholung in Richtung $80.000, sondern eher ein Spannungsfeld zwischen $76.000 und $78.000, in dem jede Kursbewegung genau beobachtet wird. Ein Krypto-Analyst, bekannt als Guru, hat nun eine technische Analyse veröffentlicht, die einen möglichen Kursverlauf skizziert, bei dem Bitcoin […] (00)
vor 39 Minuten
 
Von der Rechenleistung zur Systemfrage: Edge AI verschiebt die Prioritäten
Puchheim, 29.04.2026 (PresseBox) - NVIDIA betont in verschiedenen Veröffentlichungen, […] (00)
Klinikum Karlsruhe verabschiedet Prof. Dr. Peter Reimer
Karlsruhe, 28.04.2026 (lifePR) - „Mit Herrn Professor Peter Reimer verabschieden wir […] (00)
Sitka Gold: Sichtbares Gold und Wolfram zum Bohrstart 2026 im Yukon
Hamburg, 29.04.2026 (PresseBox) - ​ Sitka Gold ( WKN A2JG70 / TSXV SIG )  meldet einen […] (00)
Einkommensteuer (Archiv)
Berlin - Der finanzpolitische Sprecher der Unionsfraktion im Bundestag, Fritz […] (00)
ATP-Tour - Madrid
Madrid (dpa) - Tennisstar Alexander Zverev hat in einer Nachschicht das Viertelfinale […] (01)
Söder statt Merz: Zweite «Arena» lässt deutlich Federn
Das überraschend gute Niveau der Auftakt-Sendung 2025 konnte nicht bestätigt werden. Die neue […] (00)
Wirtschaftliche Landschaft und politische Reaktion Da der globale Ölmarkt ohne […] (00)
Willst du CBD kaufen, stößt du im Internet auf eine riesige Bandbreite […] (00)
 
 
Suchbegriff