White Box Test

White Box Test ist eine Testmethode, bei der der interne Code bekannt ist und gezielt getestet wird.

Der Tester "sieht durch die Box" und prüft alle Code-Pfade, Verzweigungen und Anweisungen.

Was ist White Box Test?

  • Strukturtest mit Code-Kenntnis
  • Entwicklersicht: Sind alle Pfade korrekt?
  • Code-Abdeckung messen

WHITE BOX TEST - KONZEPT

       Tester sieht ALLES:

Eingabe           Code (sichtbar!)        Ausgabe
  │                     │                    │
  ▼                     ▼                    ▼
┌───┐    ┌──────────────────────┐         ┌───┐
│ 5 │───>│ if (a > 0) {         │────────>│ 8 │
│ + │    │   result = a + b;    │         │   │
│ 3 │    │ } else {             │         └───┘
└───┘    │   result = 0;        │
         │ }                    │
         │ return result;       │
         └──────────────────────┘
                  │
         Tester prüft:
         • Alle if-Zweige getestet?
         • Alle Pfade durchlaufen?
         • Edge Cases bedacht?
White Box Test Merkmale

4 Haupteigenschaften:

  1. Vollständige Code-Sichtbarkeit
  • Tester MUSS Code lesen können
  • Versteht interne Logik
  1. Strukturelle Testabdeckung
  • Alle Code-Zeilen testen
  • Alle Verzweigungen prüfen
  1. Pfad- und Verzweigungstests
  • Jede if/else-Bedingung testen
  • Jede Schleife durchlaufen
  1. Code Coverage-Messung
  • Wie viel % des Codes getestet?
  • Tools messen automatisch
Überdeckungsarten (Coverage)

// Beispiel-Code:
public int calculate(int a, int b) {
   int result;                    // Zeile 1
   if (a > 0) {                   // Zeile 2
       result = a + b;            // Zeile 3
   } else {                       // Zeile 4
       result = 0;                // Zeile 5
   }
   return result;                 // Zeile 6
}

1. Statement Coverage (Anweisungsüberdeckung)

Ziel: Jede Zeile einmal ausführen

Test 1: calculate(5, 3)
 → Zeilen: 1, 2, 3, 6 ✓

Test 2: calculate(-1, 3)
 → Zeilen: 1, 2, 5, 6 ✓

Coverage: 100% (alle Zeilen getestet)

2. Branch Coverage (Zweigüberdeckung)

Ziel: Jede if/else-Verzweigung testen

Test 1: a > 0  → TRUE-Zweig  ✓
Test 2: a <= 0 → FALSE-Zweig ✓

Coverage: 100% (beide Zweige)

3. Path Coverage (Pfadüberdeckung)

Ziel: ALLE möglichen Pfade durch Code

Bei komplexem Code sehr aufwändig!
COVERAGE-ARTEN IM VERGLEICH

Statement Coverage (am einfachsten)
     │
     ▼
┌────────────────────────┐
│ Jede Zeile einmal      │
│ ausführen              │
└────────────────────────┘
     │
     ▼
Branch Coverage
     │
     ▼
┌────────────────────────┐
│ Jede Verzweigung       │
│ (if/else) testen       │
└────────────────────────┘
     │
     ▼
Path Coverage (am gründlichsten)
     │
     ▼
┌────────────────────────┐
│ ALLE Kombinationen     │
│ von Pfaden             │
└────────────────────────┘
Vorteile White Box Test

Gründlich: Alle Code-Pfade werden geprüft mit Unit Testing
Früh einsetzbar: Während der Entwicklung
Optimierung: Findet ineffizienten Code
Messbar: Code Coverage in %

Nachteile White Box Test

Code-Kenntnis nötig: Tester muss programmieren können
Zeitaufwändig: Viele Tests für komplexen Code
Nicht benutzernah: Fokus auf Technik, nicht auf UX
Keine Garantie: 100% Coverage ≠ fehlerfrei!

WHITE BOX TEST - ABLAUF

┌──────────────────────┐
│ 1. CODE ANALYSIEREN  │
│  Struktur verstehen  │
└──────────────────────┘
          ↓
┌──────────────────────┐
│ 2. PFADE             │
│    IDENTIFIZIEREN    │
│  • if-Zweige         │
│  • Schleifen         │
└──────────────────────┘
          ↓
┌──────────────────────┐
│ 3. TESTFÄLLE FÜR     │
│    JEDEN PFAD        │
└──────────────────────┘
          ↓
┌──────────────────────┐
│ 4. COVERAGE MESSEN   │
│  Wurde alles         │
│  getestet?           │
└──────────────────────┘
Wichtiger Hinweis

100% Code Coverage garantiert NICHT fehlerfreie Software!

Warum?

  • Kann Logikfehler übersehen
  • Testet nicht alle Eingabe-Kombinationen
  • Anforderungen könnten falsch sein

Kombination ist best Practice:
White Box + Black Box Test = Optimale Abdeckung

White Box vs Black Box Test

Merkmal White Box Black Box Test
Code-Kenntnis Ja, vollständig Nein
Perspektive Entwickler Benutzer
Testet Interne Struktur Funktionalität
Abdeckung Code Coverage Anforderungen
Zeitpunkt Während Entwicklung Nach Fertigstellung

Praxis-Tipp: Beide Methoden kombinieren!