Programmierung Frage: Unterschied Blackbox testing und Whitebox testing?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Beim Black Box Test prüfst du einfach, ob eine Eingabe ein gewünschtes Ergebnis liefert. Der Source Code vom Programm wird hier also nicht berücksichtigt

Zum Beispiel könnte man diese Testfälle aufstellen.

is_equal(celsius_to_fahrenheit(0), 32)
is_equal(celsius_to_fahrenheit(10), 50)

Eine beliebte Testart ist hier der Äquivalenzklassentest. Man teilt also die Eingabe- und Ausgabewerte in Äquivalenzklassen auf und sucht sich dann Repräsentanten aus mit denen man die Testfälle aufstellt. (Oft kann man nämlich nicht alle möglichen Eingaben/Ausgaben testen, weil die Mengen zu groß sind)

Beim White Box Test beziehst du den Source Code vom Programm mit ein. Es gibt verschiedene Tests, eine Testart ist der Pfadüberdeckungstest. Hier stellst du den Kontrollflußgraphen auf und testest alle möglichen Pfade die das Programm einschlagen kann (abhängig von den Schleifen und if/else/switch-Verzweigungen).

Das Prinzip ist dann das gleiche wie oben beim black box test. Man überprüft also auch Eingabe und Ausgabewerte, allerdings hier unter Berücksichtigung des Source Codes.

Woher ich das weiß:Studium / Ausbildung – Habe einen Bachelor in Informatik

Unter Black Box Testing versteht man das Testen einer Anwendung gegen eine Spezifikation ihrer Soll-Funktinonalität (d.h. aus Anwendersicht ohne Wissen darüber, wie die Anwendung intern funktioniert und aufgebaut ist).

Wird durch solchen Test Fehlverhalten feststellt, muss dann aber die Stelle im Code gefunden werden, an denen die Anwendung versagt. Sie zu finden wird nun natürlich auch White Box Testing notwendig, d.h. separater Test kleinerer Teile der Anwendung, die oft gar keine Schnittstelle hin zum Anwender haben. Test dieser Art ist dann aber meist auch nur den Personen möglich, welche den Code geschrieben haben. Sollten sie nicht mehr verfügbar sein, müssen Wartungsprogrammierer diese Aufgabe übernehmen, was sehr aufwändig werden kann, wenn Code nicht ausreichend gut kommentiert ist (der Tester also nirgendwo nachlesen kann, was genau so ein kleiner Teil des Codes denn nun wirklich ganz genau zu berücksichtigen und zu erledigen hat).