- Startseite
- Skills
- Testen
- Testfall-Generator
Testfall-Generator
Umfassende Testfaelle aus Funktionssignaturen generieren — Happy Path, Randfaelle und Fehlerszenarien.
Das Problem
Tests zu schreiben ist der Teil, den Entwickler am haeufigsten ueberspringen — nicht weil es schwer ist, sondern weil das Durchdenken aller Szenarien mental erschoepfend ist. Happy Path? Einfach. Aber was ist mit leeren Eingaben, Grenzwerten, parallelem Zugriff, Unicode-Strings, negativen Zahlen und Zeitzonen-Randfaellen? KI kann eine umfassende Testsuite in Sekunden generieren, indem sie systematisch jede Eingabekategorie durchdenkt.
Der Prompt
Generiere umfassende Testfaelle fuer die folgende Funktion. Ich brauche produktionsreife Tests, die ich sofort ausfuehren kann.
FUNKTION:
[Funktion oder Klassenmethode hier einfuegen]
TEST-FRAMEWORK: [z.B. Jest, Vitest, pytest, Go testing, JUnit]
SPRACHE: [z.B. TypeScript, Python, Go, Java]
Generiere Tests fuer:
1. **Happy Path** — Normale erwartete Ein- und Ausgaben (3-5 Faelle)
2. **Randfaelle** — Grenzwerte, leere Eingaben, einzelne Elemente, Maximalwerte
3. **Fehlerfaelle** — Ungueltige Eingaben, null/undefined, falsche Typen, Werte ausserhalb des Bereichs
4. **Sonderzeichen** — Unicode, Emojis, HTML-Entitaeten, SQL-Metazeichen
5. **Asynchrones Verhalten** (falls zutreffend) — Race Conditions, Timeouts, abgelehnte Promises
6. **Geschaeftslogik** — Domaenenspezifische Regeln, die still brechen koennten
Fuer jeden Test:
- Aussagekraeftige Testnamen verwenden, die das Szenario erklaeren ("soll leeres Array bei null-Eingabe zurueckgeben")
- Arrange, Act, Assert-Struktur verwenden
- Inline-Kommentare ergaenzen, die erklaeren, WARUM jeder Randfall wichtig ist
Die vollstaendige Testdatei ausgeben, bereit zum Speichern und Ausfuehren.
Beispielausgabe
describe('calculateDiscount', () => {
// Happy Path
it('soll 10% Rabatt bei Bestellungen ueber 100 EUR anwenden', () => {
expect(calculateDiscount(150, 'SPARE10')).toBe(135);
});
// Randfall: exakter Grenzwert
it('soll Rabatt anwenden, wenn Bestellung exakt den Mindestschwellenwert erreicht', () => {
expect(calculateDiscount(100, 'SPARE10')).toBe(90);
});
// Fehlerfall: negativer Preis
it('soll RangeError bei negativen Bestellbetraegen werfen', () => {
expect(() => calculateDiscount(-50, 'SPARE10')).toThrow(RangeError);
});
// Geschaeftslogik: abgelaufener Gutschein
it('soll vollen Preis bei abgelaufenem Gutscheincode zurueckgeben', () => {
expect(calculateDiscount(200, 'ABGELAUFEN2024')).toBe(200);
});
});
Wann verwenden
Einsetzen beim Schreiben einer neuen Funktion oder beim Refactoring einer bestehenden. Besonders wertvoll, wenn ein Coverage-Schwellenwert erreicht werden muss, bei komplexer Geschaeftslogik mit vielen Bedingungen, oder beim Schreiben von Tests fuer fremden Code. Funktion einfuegen und eine vollstaendige Testdatei auf einen Schlag erhalten.
Profi-Tipps
- Typen/Interfaces einbeziehen — zugehoerige TypeScript-Typen oder Datenklassen neben der Funktion einfuegen, damit die KI den vollstaendigen Vertrag versteht.
- Mutationssichere Tests anfordern — ergaenzen: “Stelle sicher, dass diese Tests fehlschlagen wuerden, wenn irgendeine Zeile der Originalfunktion entfernt oder geaendert wird”, um schwache Assertions zu vermeiden.
- Zuerst eine Coverage-Matrix generieren — bitten: “Liste vor dem Codeschreiben jedes Testszenario in einer Tabelle mit Eingabe, erwarteter Ausgabe und Kategorie auf”, um den Plan zu pruefen, bevor Code generiert wird.