- 1 Section
- 10 Lessons
- unbegrenzt
- Testen & Testmanagement10
- 1.1Warum testen? Fehlerkosten und V-Modell
- 1.2Teststufen: Unit, Integration, System, Abnahme
- 1.3Black-Box-Test: Äquivalenzklassen und Grenzwertanalyse
- 1.4White-Box-Test: Zweig- und Pfadüberdeckung
- 1.5TDD: Red-Green-Refactor
- 1.6Unit-Tests schreiben (JUnit / pytest)
- 1.7Mocking und Test-Doubles
- 1.8Testplan, Testprotokoll und Dokumentation
- 1.9Testergebnisse multimedial aufbereiten
- 1.10Aufgaben Testen
Black-Box-Test: Äquivalenzklassen und Grenzwertanalyse
In L2 haben wir die vier Teststufen kennengelernt – Unit, Integration, System, Abnahme. Auf höheren Stufen (vor allem Systemtest und oft Integrationstest) arbeitet man ohne Wissen vom Inneren des Codes. Das nennt man Black-Box-Test: das System ist eine schwarze Kiste, man kennt nur Eingaben und erwartete Ausgaben.
Die zwei wichtigsten Black-Box-Techniken sind Äquivalenzklassenanalyse und Grenzwertanalyse. Beide sind absolute IHK-Klausur-Klassiker – fast jede Test-Klausur enthält Aufgaben dazu. Diese Lektion zeigt dir, wie du beide systematisch anwendest, sodass du in der Klausur keinen Punkt verschenkst.
1) Black-Box vs. White-Box
Bevor wir tiefer gehen, der grundlegende Unterschied der zwei Test-Perspektiven (vertieft in L4 White-Box):
2) Das Mengen-Problem: warum nicht alles testen?
Stell dir vor, du testest eine simple Funktion, die ein Alter als Integer entgegennimmt (z.B. 0 bis 150). Sollst du wirklich alle 151 Werte testen? Was, wenn der Input ein 32-Bit-Integer ist (4 Milliarden Möglichkeiten)? Was bei zwei Inputs (4 Milliarden × 4 Milliarden)? Schon klar: vollständiges Testen ist unmöglich – das ist eines der ISTQB-Grundprinzipien aus L1.
Die clevere Lösung: man teilt den Eingaberaum in Klassen ein, von denen wir annehmen, dass sie sich „gleich verhalten". Aus jeder Klasse wird ein Repräsentant getestet. Das nennt sich Äquivalenzklassenanalyse.
3) Äquivalenzklassen finden – das Vorgehen
Konkretes Beispiel: eine Funktion rabatt(alter) gewährt Rabatte basierend auf dem Alter:
- 0–17 Jahre: 50 % Rabatt (Kinderpreis)
- 18–64 Jahre: kein Rabatt
- 65+ Jahre: 30 % Rabatt (Seniorenpreis)
- Negativ oder über 150: ungültig (Fehler)
Wir identifizieren 5 Äquivalenzklassen: 1 für Kinder (gültig), 1 für Erwachsene (gültig), 1 für Senioren (gültig), 1 für Negativ-Werte (ungültig), 1 für übergroße Werte (ungültig). Aus jeder Klasse wählen wir einen Repräsentanten. Das genügt – nach der Theorie:
4) Grenzwertanalyse – wo Fehler wirklich lauern
Äquivalenzklassen sind eine schöne Theorie, haben aber eine Schwäche: genau an den Grenzen passieren die meisten Fehler. Hat der Entwickler <= oder < geschrieben? Beginnt es bei 0 oder 1? Ist 65 noch Erwachsener oder schon Senior?
Die Grenzwertanalyse (Boundary Value Analysis) testet darum gezielt: an jeder Klassengrenze drei Werte – auf der Grenze, knapp davor, knapp danach:
if (alter > 18) statt if (alter >= 18) geschrieben – ein Off-by-One-Fehler. Bei dem Test mit Wert 19 fällt das nicht auf, beim Wert 18 schon. Solche „Off-by-One"-Fehler sind die häufigsten Fehler überhaupt in Software. Die Grenzwertanalyse zwingt dich, genau dort hinzuschauen. Bei jeder Grenze: 3 Tests (Grenze, davor, danach). Bei 2 Grenzen also 6 Werte.5) Klausuraufgabe: Schritt-für-Schritt-Vorgehen
So gehst du in einer IHK-Klausur vor, wenn du eine Aufgabe zum Black-Box-Test bekommst:
- Spezifikation lesen – welche Eingaben, welche Bedingungen, welche Ausgaben?
- Äquivalenzklassen bilden – gültige und ungültige Wertebereiche identifizieren. Tabelle anfertigen.
- Repräsentanten wählen – aus jeder Klasse einen typischen Wert (z.B. die Mitte).
- Grenzwerte ergänzen – an jeder Klassengrenze 3 Werte hinzufügen.
- Testfälle dokumentieren – Tabelle: Eingabe → Erwartetes Ergebnis → Klasse / Grenze.
Dieses Vorgehen ist mechanisch und sicher reproduzierbar – genau das, was die Klausur sehen will.
6) Beispiel: Login-Eingabe mit String-Länge
Ein zweites Beispiel, weil das in Klausuren oft mit Strings vorkommt. Eine Passwortvalidierung: mindestens 8 Zeichen, maximal 32 Zeichen, sonst ungültig. Welche Tests?
Äquivalenzklassen: 3 Klassen – „zu kurz" (0-7 Zeichen, ungültig), „gültig" (8-32 Zeichen), „zu lang" (33+ Zeichen, ungültig). 3 Repräsentanten: z.B. 3 Zeichen, 15 Zeichen, 50 Zeichen.
Grenzwerte: an Grenze 8 und Grenze 32, jeweils dreimal. Also Werte mit Länge: 7, 8, 9 (untere Grenze) und 31, 32, 33 (obere Grenze). Plus die Repräsentanten der Äquivalenzklassen. Sonderfälle: leerer String („0 Zeichen") wird gerne übersehen – wichtig, immer mitnehmen!
7) Entscheidungstabellen-Test
Eine dritte wichtige Black-Box-Technik: Entscheidungstabellen. Wenn das Verhalten von mehreren Bedingungen gleichzeitig abhängt, sind sie das richtige Werkzeug. Beispiel: Fahrkarten-Rabatt – abhängig von Studentenausweis UND Alter UND Wochenende.
| Bedingung | R1 | R2 | R3 | R4 |
|---|---|---|---|---|
| Student? | J | J | N | N |
| Wochenende? | J | N | J | N |
| Alter > 65? | – | – | J | N |
| Aktion | ||||
| Rabatt | 50% | 30% | 40% | 0% |
8) Zustandsbasierter Test
Wenn ein System mehrere Zustände hat (vgl. K50 L5 Zustandsdiagramme), kann das Verhalten je nach Zustand variieren. Beispiel: ein Ticket-System mit Zuständen „Reserviert", „Bezahlt", „Eingelöst", „Storniert". Hier testet man:
- Jeden Zustandsübergang (gültige Pfade).
- Verbotene Übergänge (z.B. „Eingelöst → Storniert" sollte gar nicht möglich sein).
- Aktionen im jeweiligen Zustand.
Die Verbindung zu UML-Zustandsdiagrammen ist offensichtlich – sie sind die Test-Spezifikation.
9) Vorteile und Grenzen von Black-Box
10) Klausur-Highlights
- Black-Box = Test ohne Code-Wissen, gegen Spezifikation. White-Box = mit Code, gegen Code-Struktur.
- Äquivalenzklassen: gültige und ungültige Wertebereiche identifizieren, je Klasse 1 Test.
- Grenzwertanalyse: an jeder Grenze 3 Tests (auf der Grenze, davor, danach).
- Off-by-One-Fehler sind die häufigsten Klassen-Grenz-Fehler.
- Entscheidungstabellen für Kombinationen mehrerer Bedingungen.
- Zustandsbasierte Tests bei Systemen mit definierten Zuständen.
Zusammenfassung
Black-Box-Test: nur Spec, Eingabe, erwartete Ausgabe – kein Code-Wissen. Äquivalenzklassen: Eingaberaum in Klassen einteilen, pro Klasse einen Repräsentanten testen, gültige UND ungültige Klassen. Grenzwertanalyse: an jeder Klassengrenze 3 Tests (auf der Grenze, davor, danach) – findet Off-by-One-Fehler. Entscheidungstabelle bei mehreren Bedingungen, zustandsbasierte Tests bei Zustandsautomaten. Nächste Lektion: White-Box-Test.
