Unit Test: What to Test
Wenn ich über unit test what to test spreche, meine ich nicht: „Wie schreibe ich Tests?“ Ich meine: Was lohnt sich überhaupt zu testen? Denn genau da verlieren die meisten Zeit. Sie testen Dinge, die keinen Wert bringen, und lassen die kritischen Stellen offen.
Mein Ziel ist einfach: Mehr Sicherheit mit weniger Tests. Nicht mehr Code. Nicht mehr Wartung. Mehr Wirkung.
Unit Test: What to Test zuerst
Ich teste zuerst den Code, der teuer ist, wenn er kaputtgeht. Das sind die Stellen mit Logik, Regeln und Entscheidungen. Nicht das Framework. Nicht die Bibliothek. Nicht die Standardfunktion von irgendwas, das schon tausendfach getestet wurde.
Wenn ich nur wenig Zeit habe, gehe ich nach dieser Reihenfolge vor:
- Geschäftslogik mit klaren Regeln
- Edge Cases, die leicht übersehen werden
- Fehlerfälle, die echte Schäden verursachen
- Berechnungen, Validierungen und Bedingungen
- Code mit hoher Änderungsrate
Das ist der Kern von unit test what to test: Teste das, was kaputtgehen kann und was dir wirklich wehtut, wenn es kaputtgeht.
Unit Test: What to Test nicht
Ich teste nicht alles. Das wäre Zeitverschwendung. Und schlecht geschriebene Tests machen den Code oft schlimmer, nicht besser.
Ich lasse diese Dinge meistens aus:
- Third-Party-Code, den ich nicht kontrolliere
- Einfachen Getter/Setter ohne Logik
- Standard-Framework-Verhalten
- UI-Details, wenn sie besser mit Integrationstests abgedeckt sind
- Alles, was nur die Implementierung kopiert statt das Verhalten zu prüfen
Wenn ein Test nur beweist, dass mein Code exakt das macht, was ich gerade reingeschrieben habe, dann bringt er fast nichts. Ich will Verhalten absichern, nicht die Existenz des Codes.
Unit Test: What to Test bei Geschäftslogik
Hier liegt der höchste Hebel. Geschäftslogik ist der Teil, der Geld, Zeit oder Vertrauen beeinflusst. Wenn da ein Fehler passiert, zahlen echte Menschen den Preis.
Ich teste diese Fragen:
- Was passiert bei gültigen Eingaben?
- Was passiert bei ungültigen Eingaben?
- Was passiert an der Grenze?
- Was passiert bei Sonderfällen?
Beispiel: Ein Rabatt gilt nur ab 100 Euro Warenwert. Dann teste ich nicht nur den normalen Fall. Ich teste auch 99,99 Euro, 100 Euro und 100,01 Euro. Genau da passieren Fehler.
Wenn du darüber mehr über Testprinzipien lesen willst, ist die offizielle Doku von JUnit ein guter Startpunkt. Für allgemeine Testing-Best Practices ist auch Martin Fowler eine starke Ressource.
Unit Test: What to Test bei Edge Cases
Edge Cases sind keine Theorie. Sie sind der Ort, an dem Produktionsfehler geboren werden. Ich suche gezielt nach den Fällen, an die man beim Schreiben nicht zuerst denkt.
Ich prüfe besonders:
- Null- oder leere Werte
- Sehr große oder sehr kleine Werte
- Unerwartete Reihenfolgen
- Duplikate
- Zeitzonen, Rundung und Präzision
Wenn dein Code mit Daten arbeitet, sind diese Fälle oft der Unterschied zwischen stabil und kaputt. Ich will nicht raten. Ich will wissen.
Unit Test: What to Test bei Fehlern
Viele Teams testen nur den Happy Path. Das ist bequem. Und gefährlich.
Ich teste Fehler bewusst, weil gute Software nicht nur im Idealfall funktioniert. Sie verhält sich auch sauber, wenn etwas schiefgeht.
Ich frage mich:
- Kommt die richtige Fehlermeldung?
- Wird ein kaputter Zustand verhindert?
- Bricht der Prozess kontrolliert ab?
- Bleiben Daten konsistent?
Das ist besonders wichtig bei Validierung, Zahlungslogik, Authentifizierung und Datenverarbeitung. Wenn hier etwas schiefgeht, willst du Kontrolle, nicht Chaos.
Unit Test: What to Test mit Fokus auf Verhalten
Ich teste Verhalten, nicht Implementierung. Das ist ein großer Unterschied.
Schlechte Frage: Wurde diese Methode mit genau diesen internen Schritten aufgerufen?
Gute Frage: Kommt am Ende das richtige Ergebnis raus?
Warum das wichtig ist:
- Verhalten bleibt stabil, auch wenn ich den Code refactore
- Tests werden weniger fragil
- Ich kann schneller ändern, ohne alles neu zu schreiben
Wenn Tests bei jeder kleinen internen Änderung brechen, sind sie ein Problem. Nicht ein Schutz.
Unit Test: What to Test im Teamalltag
Ich nutze eine einfache Regel: Wenn ein Bug teuer wäre, teste ich ihn. Wenn eine Regel komplex ist, teste ich sie. Wenn ein Teil häufig geändert wird, teste ich ihn ebenfalls.
Für den Alltag funktioniert diese Checkliste:
- Hat die Funktion Logik? Dann testen.
- Gibt es Branches oder Bedingungen? Dann testen.
- Gibt es Fehlerfolgen? Dann testen.
- Ist der Code kritisch für Business oder Nutzer? Dann testen.
- Ist das Verhalten schwer manuell zu prüfen? Dann testen.
Wenn du alles so priorisierst, brauchst du weniger Diskussionen und triffst bessere Entscheidungen. Genau darum geht es bei unit test what to test.
Unit Test: What to Test in 5 Minuten entscheiden
Wenn ich schnell entscheiden muss, teste ich nach diesem Schema:
- Step 1: Was ist die wichtigste Regel?
- Step 2: Welche Eingaben können die Regel brechen?
- Step 3: Welche Fehler würden im echten Leben wehtun?
- Step 4: Welche Fälle sind Grenzwerte?
- Step 5: Was kann ich als Black Box prüfen?
Wenn ich diese fünf Schritte durchgehe, finde ich fast immer die Tests mit dem höchsten ROI. Das ist der Punkt. Nicht mehr testen. Besser testen.
Unit Test: What to Test bei hohem Wartungsdruck
Je größer ein System wird, desto mehr zählt Wartbarkeit. Schlechte Tests bremsen dich dann doppelt: Sie kosten Zeit beim Schreiben und Zeit beim Ändern.
Darum achte ich auf diese Dinge:
- Ein Test, ein Grund – nicht zu viele Dinge in einem Test
- Klare Namen – ich soll sofort verstehen, was geprüft wird
- Wenig Setup – sonst wird der Test zum Monster
- Stabile Assertions – nicht auf Details testen, die sich oft ändern
Ein guter Test erklärt sich fast selbst. Wenn ich ihn nicht schnell lesen kann, ist er zu kompliziert.
Unit Test: What to Test ist eine Prioritätsfrage
Am Ende ist alles eine Frage von Priorität. Ich habe nur begrenzte Zeit. Also investiere ich sie dort, wo das Risiko hoch und der Nutzen groß ist.
Die einfache Wahrheit ist:
- Hohe Komplexität = testen
- Hoher Schaden bei Fehlern = testen
- Viele Änderungen = testen
- Kein echter Mehrwert = nicht testen
So halte ich die Testbasis klein, stark und nützlich.
Fazit zu Unit Test: What to Test
Wenn du dich fragst, unit test what to test, dann starte nicht mit der Frage, wie viele Tests du schreiben kannst. Starte mit der Frage, welche Fehler dich wirklich treffen würden. Teste Geschäftslogik, Edge Cases, Fehlerfälle und alles, was oft geändert wird. Lass trivialen Kram weg. Genau so baust du ein Testsystem, das schützt statt zu nerven.