Projekt & Methodik

Unit-Test

Ein Unit-Test prüft einen einzelnen Baustein einer Anwendung automatisch — er ruft eine Funktion mit bekannten Werten auf und vergleicht das Ergebnis mit dem erwarteten. Hunderte davon laufen in Sekunden.

Redaktionell geprüft von Alexander SeidlertwentyonepixelsStand:

Was Sie als Auftraggeber davon haben

Dass eine Änderung an Stelle A nicht unbemerkt Stelle B zerstört. Genau das ist der teuerste Fehlertyp: Er fällt Wochen später auf, wenn niemand mehr an die Änderung denkt.

Der zweite Nutzen ist Geschwindigkeit. Mit Tests traut man sich, alten Code zu verbessern; ohne sie wird um jede gewachsene Stelle herumgebaut, bis niemand mehr durchsieht.

Was sich zu testen lohnt und was nicht

Alles, wo eine Regel steckt: Preisberechnung, Fristen, Berechtigungen, Umrechnungen. Dort sind Fehler teuer und fallen spät auf. Nicht zu testen lohnt sich, was nur weiterreicht — ein Test, der prüft, dass ein Wert unverändert durch drei Schichten kommt, kostet Pflege und findet nie etwas.

Als Anhaltspunkt: Wenn Ihnen zu einer Funktion drei Fälle einfallen, bei denen sie sich unterschiedlich verhalten soll, gehört sie getestet. Fällt Ihnen nur einer ein, wahrscheinlich nicht.

Was eine hohe Abdeckung nicht bedeutet

Dass die Anwendung fehlerfrei ist. Abdeckung misst, welcher Code ausgeführt wurde — nicht, ob das Richtige geprüft wurde. Ein Test ohne echte Erwartung erhöht die Zahl und findet nichts.

Aussagekräftiger ist, ob die Tests die kritischen Fälle beschreiben: leere Eingaben, Grenzwerte, Fehlerpfade. Zwanzig gute Tests schlagen zweihundert belanglose. Die ehrlichste Probe ist mühsamer: absichtlich einen Fehler einbauen und nachsehen, ob die Tests rot werden — dreimal gemacht sagt das mehr als jeder Prozentwert. Zur Größenordnung, gemessen an dieser Website am 13.09.2026: 2.244 PHP-Tests laufen in 28 Sekunden durch. Erst diese Dauer macht aus Tests ein Werkzeug, das man vor jeder Änderung benutzt statt einmal vor dem Release.

Häufige Fragen zu Unit-Test

Ein Unit-Test prüft einen Baustein für sich, ohne Datenbank, Dateisystem oder Netz – deshalb läuft er in Millisekunden, und ein Fehlschlag zeigt sofort die schuldige Stelle. Ein Integrationstest prüft das Zusammenspiel zweier Bausteine und braucht dafür die echte Umgebung; umfangreichere Läufe brauchen dann Minuten statt Millisekunden. Daraus folgt eine Grenze: Eine grüne Unit-Test-Suite sagt nichts darüber, ob zwei für sich korrekte Bausteine miteinander reden. Schnittstellenfehler entstehen erst im Zusammenspiel und bleiben in der Isolation unsichtbar.

Die Testpyramide nach Mike Cohn nennt als Zielverteilung etwa 70 Prozent Unit-Tests, 20 Prozent Integrationstests und 10 Prozent Tests über die ganze Oberfläche. Die Begründung ist rechnerisch: Nur die schmale Spitze braucht Browser, Datenbank und Wartezeiten. Kippt das Verhältnis, entsteht der Eiscreme-Kegel – als Lehrbeispiel dienen 500 Oberflächentests neben 50 Unit-Tests. Eine solche Suite läuft Stunden statt Sekunden und wird deshalb vor einer Änderung nicht mehr gestartet.

Ein Unit-Test, der ohne Codeänderung zwischen grün und rot wechselt, richtet mehr Schaden an als kein Test: Das Team gewöhnt sich daran, Rot zu übersehen, und übersieht damit auch echte Fehlschläge. Solche Wackelkandidaten heißen Flaky Tests; Ursache sind meist Uhrzeit, Zufallswerte, Ausführungsreihenfolge oder echte Netzzugriffe. Die Regel lautet: sofort stilllegen, Ursache beheben oder den Test löschen. Ein stillgelegter Unit-Test behauptet nichts, ein wackelnder behauptet jeden zweiten Lauf etwas anderes.

Ein Unit-Test prüft die Umsetzung statt das Verhalten, wenn er rot wird, obwohl das Ergebnis stimmt – etwa nach einer Umbenennung oder weil eine Methode nun zweimal statt einmal aufgerufen wird. Fachlich heißt das hohe Kopplung zwischen Test und Umsetzung. Die Folge ist teuer: Jedes Aufräumen im Code erzeugt Testarbeit, und genau dieses Aufräumen unterbleibt dann. Die Regel dagegen: Eine Zusicherung beschreibt das Ergebnis, nicht den Weg dorthin. Ausnahme bleiben Aufrufe mit Außenwirkung wie ein Mailversand.

Eine Unit-Test-Suite, die seit Monaten nicht gelaufen ist, sichert zunächst nichts ab. Ungenutzte Suiten sind fast immer rot: Abhängigkeiten sind weitergezogen, Testdaten passen nicht mehr, einzelne Fälle prüfen längst entfernte Funktionen. Bei einer Projektübernahme steht deshalb ein vollständiger Lauf vor der ersten Änderung, samt notierter Laufzeit. Erst eine grüne Suite ist ein Sicherheitsnetz. Eine rote ist eine Sammlung von Behauptungen über einen Zustand, den es nicht mehr gibt – und niemand weiß, welche davon noch gilt.

Das Verfahren heißt Mutation Testing und ist seit fast 50 Jahren bekannt. Ein Werkzeug verändert den Quellcode an vielen Stellen minimal – aus größer wird kleiner, aus plus wird minus – und lässt danach die Tests laufen. Jede Veränderung, die keinen Test rot macht, ist eine Lücke. Der Anteil der bemerkten Veränderungen heißt Mutation Score. Die Grenze: Der Score bewertet die Tests gegen den vorhandenen Code, nicht gegen die Anforderung. Eine falsch umgesetzte Regel bleibt unentdeckt.

Mehr zum Thema

10 Min. Lesezeit

Cyber Resilience Act: Meldepflicht seit 11. September 2026

Seit dem 11. September 2026 müssen Hersteller aktiv ausgenutzte Schwachstellen binnen 24 Stunden melden – auch für längst verkaufte Produkte. Welche Software betroffen ist, warum reine Webanwendungen meist nicht und wer bei Auftragsentwicklung meldet.

10 Min. Lesezeit

Atlassian-Lücke CVE-2026-21589: Data Center jetzt patchen

Eine kritische Lücke (CVSS 9,3) lässt Unbekannte ohne Anmeldung Dateien aus Jira, Confluence, Bitbucket und weiteren Data-Center-Produkten lesen. Welche Versionen sie schließen, was bei laufenden Angriffen zu prüfen ist und wo die Lücke endet.

Alle Fachbeiträge ansehen

Passende Leistungen

DevOps & CI/CD Pipelines

Schluss mit manuellen Releases: automatisierte Test- und Deploy-Pipelines mit Docker, GitHub Actions und sauberer Nginx-Konfiguration.

Mehr dazu

Wartung & Support

Laufende Pflege, Sicherheits-Updates und Monitoring mit Sentry, Uptime-Checks und Lighthouse CI — bevor aus kleinen Problemen große werden.

Mehr dazu