Skip to main content

Der Unterschied zwischen White-Box- und Black-Box-Testing

Black-Box-Testing bewertet die Funktionalität von Software ohne Kenntnisse des internen Codes und konzentriert sich auf Eingaben und Ausgaben. White-Box-Testing untersucht die interne Code-Struktur und Logik und erfordert Zugriff auf den Quellcode.

Black-Box-Testing wird normalerweise von QA-Teams durchgeführt, um die benutzerorientierte Funktionalität zu validieren. Hierbei kommen Techniken wie Äquivalenzklassenpartitionierung und Grenzwertanalyse zum Einsatz.

Im Gegensatz dazu führen Entwickler das White-Box-Testing durch, um die Korrektheit und Abdeckung des Codes sicherzustellen. Sie wenden Methoden wie Anweisungs- und Zweigabdeckung an.

Die Kombination beider Ansätze verbessert die Testabdeckung und die Softwarequalität.

In diesem Beitrag führe ich Sie durch beide Testarten und erkläre, was sie ausmacht, worin die wichtigsten Unterschiede liegen, wie sie verwendet werden sowie ihre Vor- und Nachteile. 

Was ist Black-Box-Testing?

Black-Box-Testing, auch als verhaltensorientiertes Testen bezeichnet, ist eine Art von Softwaretest, bei dem der Tester keinen Zugriff auf den Quellcode des zu testenden Systems hat. Es wird üblicherweise vom Qualitätssicherungsteam durchgeführt und erfordert nicht zwingend fortgeschrittene technische Fähigkeiten wie Programmierung.  

Beim Black-Box-Testing werden die Testfälle basierend auf den Eingaben und Ausgaben des zu testenden Systems (AUT) geschrieben, wie sie in den Anforderungsspezifikationen definiert sind.

Die bekanntesten Black-Box-Testing-Techniken sind:

  • Äquivalenzklassenpartitionierung: Hierbei werden die Eingaben in Klassen (oder Partitionen) der Äquivalenz eingeteilt, was bedeutet, dass jeder Wert innerhalb einer Klasse das gleiche Ergebnis liefert. Für eine gute Testabdeckung ist nur ein Testfall pro Äquivalenzklasse erforderlich.

Beispiel: Wenn ein Feld Ganzzahlwerte zwischen 1 und 10 akzeptiert, dann enthält die gültige Klasse alle Zahlen von 1 bis 10, und die zwei ungültigen Klassen sind Zahlen kleiner als 1 und Zahlen größer als 10. Das bedeutet, dass insgesamt drei Testfälle ausreichen, um alle möglichen Klassen abzudecken. 

  • Grenzwertanalyse: Hier werden die Extremwerte der Eingaben getestet, da diese anfälliger für Fehler sind. 

Beispiel: Unter Verwendung des gleichen Feldes wie oben sind die gültigen Grenzen 1 und 10 und die ungültigen 0 und 11. 

  • Entscheidungstabellentest: Hierbei werden die Beziehungen zwischen Eingaben und Ausgaben in tabellarischer Form dargestellt. Die Tabelle enthält üblicherweise Spalten für Bedingungen und Zeilen für die unterschiedlichen Kombinationen. Für jede Zeile sollte ein entsprechender Testfall existieren. 

Beispiel: Diese Technik eignet sich für komplexere Szenarien. Nehmen wir an, wir haben einen Bankkreditantrag mit folgenden Bedingungen:

BedingungenAlter gleich oder über 25Einkommen gleich oder über 50000 USDErgebnis
1WahrWahrKredit genehmigen
2WahrFalschKredit ablehnen
3FalschFalschAn Manager weiterleiten
4FalschFalschKredit ablehnen

Wir haben vier mögliche Kombinationen, daher müssen vier Testfälle ausgeführt werden.

  • Zustandsübergangstest: Überprüft das Verhalten eines Systems bei Übergängen zwischen verschiedenen Zuständen.  

Beispiel: Angenommen, Sie testen einen einfachen Bug-Tracker. Das Statusdiagramm sieht so aus:

Die verfügbaren Übergänge sind:

  • Von Neu zu In Bearbeitung
  • Von In Bearbeitung zu Im Test
  • Von Im Test zu Geschlossen
  • Von Im Test zurück zu In Bearbeitung

Für eine vollständige Abdeckung müssen Sie sicherstellen, dass jeder Übergang und jeder Status mindestens einmal getestet wird.

  • Erfahrungsbasiertes Testen, wie exploratives Testen. Diese Testart beinhaltet die Durchführung von Tests auf Basis der Erfahrung des Testers mit dem System oder mit ähnlichen Systemen sowie seiner Kenntnis des Verhaltens der Anwendung. 

Beispiel: Stellen Sie sich vor, Sie testen eine neue Social-Media-Anwendung. Ihr Ziel ist es, die Anwendung zu erkunden und dabei Fehler oder Probleme zu finden, die behoben werden müssen. 

Während des explorativen Testens könnten Sie folgende Aktionen durchführen:

  • Sich für ein neues Konto registrieren
  • Ein Profilbild hochladen
  • Einen Beitrag verfassen
  • Ihr eigenes Profil ansehen
  • Nach Freunden suchen
  • Eine Freundschaftsanfrage senden
  • Eine Freundschaftsanfrage annehmen
  • Einen Beitrag liken und kommentieren

Beim explorativen Testen führen Sie diese Aktionen ohne vorher festgelegten Plan und in unstrukturierter Weise aus. Der Fokus liegt darauf, Fehler oder Verbesserungsmöglichkeiten in der Anwendung zu finden.  

Wenn Sie mehr über exploratives Testen erfahren möchten, empfehle ich das Buch von Elisabeth Hendrickson, Explore It!, das ich als sehr hilfreich empfunden habe.

Upgrade your inbox with more tech leadership wisdom for delivering better software and systems.

Upgrade your inbox with more tech leadership wisdom for delivering better software and systems.

This field is for validation purposes and should be left unchanged.
By submitting you agree to receive occasional emails and acknowledge our Privacy Policy. You can unsubscribe at anytime.

Vor- & Nachteile des Black-Box-Testings

Natürlich gibt es Vorteile, aber auch Nachteile bei der Durchführung von Black-Box-Tests.

Vorteile:

  • Es ist weniger zeitaufwendig
  • Keine Vorkenntnisse vom internen Code erforderlich
  • Tester können unabhängige Sichtweisen einbringen
  • Realitätsnahe Sicht des Endnutzers
  • Gut geeignet zur Validierung von Anforderungen und Funktionalität
  • Effektiv zur Erkennung von Inkonsistenzen und Schnittstellenproblemen

Nachteile:

  • Die Vorbereitung der Testumgebung und die Durchführung der Tests können zeitintensiver sein
  • Die Kontrolle über die Testfälle ist begrenzt
  • Einige spezifische Szenarien sind schwer testbar
  • Begrenzte Informationen zur Ursache des Fehlers
  • Bestimmte Fehler können übersehen werden
  • Begrenzte Möglichkeiten, Leistung und Skalierbarkeit zu testen

Wann sollte Black-Box-Testing eingesetzt werden?

Black-Box-Testing-Tools können auf jeder Testebene eingesetzt werden. Es ist jedoch empfehlenswert, sie auf höherer Ebene anzuwenden und das Testen auf niedrigerer Ebene dem White-Box-Testing zu überlassen. Das bedeutet, dass die Black-Box-Methodik zwar auch beim Testen auf Unit-Ebene funktionieren kann, aber noch besser für Systemtests und Abnahmetests geeignet ist.   

Black-Box-Methoden können sowohl für funktionale als auch nicht-funktionale Tests (wie z.B. Leistungstests, Benutzerfreundlichkeit und Barrierefreiheit) verwendet werden. 

Sie sollten auch bei neu implementierten Funktionalitäten angewandt werden oder bestehende Testfälle, die mit diesen Techniken ermittelt wurden, können im Regressionstest ausgeführt werden.

Was ist White-Box-Testing?

White-Box-Testing (manchmal auch als Glass-Box-Testing, Clear-Box-Testing, Code-basiertes Testing oder Strukturelles Testing bezeichnet) ist eine Testmethode, die sich auf die internen Abläufe der UAT konzentriert.  

White-Box-Testing-Ansätze:

  • Anweisungsüberdeckung (statement coverage): Alle Code-Anweisungen (Codezeilen) werden mindestens einmal auf Sourcecode-Ebene ausgeführt. Die Formel zur Berechnung der Überdeckung lautet:

Statement coverage = (Anzahl ausgeführter Anweisungen / Gesamtanzahl der Anweisungen im Quelltext) * 100

Beispiel: Nehmen wir an, wir haben folgenden Code:

 if(condition1 or condition2)) {
print(“test 1 OK”)
}
else {
if(condition3) {
print(“test 2 OK”)
}
}
  • Für eine vollständige Anweisungsüberdeckung (statement coverage) müssen Sie jede Codezeile mindestens einmal durchlaufen. Das bedeutet, dass mehrere Tests erforderlich sind:
    • condition1=true, condition2=false,  was "test 1 OK" ausgibt
    • condition1=false, condition2=false und condition3=true, was "test 2 OK" ausgibt.
  • Zweigüberdeckung (branch coverage): Bei dieser Technik decken die Testszenarien alle Zweige des Kontrollflussdiagramms ab. Jede mögliche true- und false-Ausgabe einer Bedingung wird mindestens einmal abgedeckt. Die Formel für die Zweigüberdeckung lautet:
  • Branch-Abdeckung = (Anzahl der ausgeführten Verzweigungen / Gesamtanzahl der Verzweigungen im Code) * 100 
  • Beispiel: Für denselben Code gilt: Während die Anweisungsabdeckung 100 % beträgt, werden nicht alle möglichen Verzweigungen abgedeckt. Sie benötigen einen zusätzlichen Test, bei dem:
    • condition1=false, condition2=false, condition3=false – auf diese Weise wird auch der False-Pfad in der zweiten If-Anweisung abgedeckt. In diesem Testfall sollte nichts ausgegeben werden,
  • Bedingungsabdeckung: eine umfassende Technik, bei der alle Pfade getestet werden. Sie stellt sicher, dass jeder Anwendungspfad durch mindestens einen Test abgedeckt ist. Sie ist besonders nützlich für komplexe Anwendungen. Beispiel: Für den obigen Code benötigen wir einen weiteren Test für eine vollständige Bedingungsabdeckung:
    • condition1=false, condition1=true, was zum gleichen Ergebnis wie der erste Test führt, aber eine andere Bedingung zur Ergebnisfindung abdeckt.

Vorteile & Nachteile des White-Box-Testings

Schauen wir uns die Vorteile und Nachteile des White-Box-Testings an.

Vorteile:

  • Fehler können früh im Softwareentwicklungszyklus gefunden werden
  • Testet die interne Code-Struktur.
  • Testet Abdeckungsgrad und Logik des Codes.
  • Verbessert das Verständnis des Codes.
  • Kann für Performance- und Skalierbarkeitstests eingesetzt werden.

Nachteile:

  • Funktioniert besser auf niedrigeren Testebenen 
  • Setzt gute Kenntnisse der Programmiersprache des Systems voraus
  • Begrenzte Tests aus Endbenutzersicht
  • Reale Szenarien können übersehen werden

Wann sollte White-Box-Testing eingesetzt werden 

White-Box-Tests eignen sich am besten für untere Ebenen wie Unit- und Integrationstests. So können Fehler und Defekte früh im Entwicklungsprozess erkannt werden. Es ist eine gute Idee, diese Tests nach jeder Bereitstellung durchzuführen, insbesondere wenn Sie in einer CI/CD-Umgebung arbeiten. 

White-Box-Testing kann verwendet werden, um die Funktionalität zu testen, aber es kann auch zur Aufdeckung von Schwachstellen im System beitragen – etwas, das mit Black-Box-Testmethoden nur schwer zu erreichen wäre.

Black-Box- vs. White-Box-Testing: Zusammenfassung 

Schauen wir uns an, worin die wichtigsten Unterschiede zwischen Black-Box- und White-Box-Testing liegen:

Black-Box-TestingWhite-Box-Testing
Es wird kein Wissen über die internen Abläufe benötigt.Basiert auf einem guten Verständnis des Systemcodes.
Wird überwiegend vom QA-Team durchgeführt.Wird in der Regel von Entwicklern durchgeführt.
Fokussiert sich auf das Verhalten des Systems.Fokussiert sich auf die Logik und Implementierung der Software.
Techniken umfassen:
Äquivalenzklassenteilung
Grenzwertanalyse
Entscheidungstabellen
Zustandsübergänge
Techniken umfassen:
Anweisungsabdeckung
Branch-Abdeckung
Bedingungsabdeckung
Szenarien können manuell oder automatisiert durchgeführt werden.Wird in der Regel durch automatisierte Tests durchgeführt.
Besser geeignet für höhere Testebenen.Eignet sich am besten für niedrigere Testebenen.
Testet aus Sicht der Endbenutzer.Testet aus technischer Sicht.

Aber nicht vergessen: Beide Ansätze haben Vor- und Nachteile. Um eine gute Test- und Codeabdeckung zu erreichen und die wichtigsten Fehler zu finden, sollten wir beide Methoden im Testprozess einsetzen.

Fazit

Black-Box-Testing und White-Box-Testing sind zwei verschiedene Ansätze und sie eignen sich jeweils für unterschiedliche Anforderungen im Entwicklungsprozess. Während White-Box-Testing meist von Entwicklern durchgeführt und für Tests auf niedriger Ebene eingesetzt wird, wird Black-Box-Testing auf höheren Ebenen vom QA-Team übernommen. Am effektivsten sind beide Methoden in Kombination.

Wenn Ihnen dieser Artikel gefallen hat, abonnieren Sie den Newsletter, um alle neu veröffentlichten Artikel rund um Testing und Qualitätssicherung zu erhalten!

Need expert help selecting the right Testing Software?

We’ve joined up with Crozdesk.com to give all our readers (yes, you!) access to Crozdesk’s software advisors. Just use the form below to share your needs, and they will contact you at no cost or commitment. You will then be matched and connected to a shortlist of vendors that best fit your company, and you can access exclusive software discounts!