Ich hatte kürzlich meine Abschlussprüfung für einen Software-Engineering-Kurs für mein Masterstudium und eine der Fragen in der Prüfung war die folgende:
Unit Testing is considered:
a. White-box Testing
b. Black-box Testing
c. Either
In meiner 7-jährigen Erfahrung in der Softwareentwicklung haben Unit-Tests immer einen White-Box-Ansatz gewählt. Der Tester hatte beim Schreiben der Tests immer umfassende Kenntnisse über die Implementierung des Geräts. Black-Box-Tests wurden immer später in Form von Integrations-, System- und Abnahmetests durchgeführt.
Die richtige Antwort auf die Prüfung (laut Professor) ist jedoch, dass Unit-Tests entweder White- oder Black-Box-Tests sein können.
Ich habe einige Nachforschungen angestellt, und es scheint, dass in vielen Fällen "Black-Box-Unit-Tests" verwendet werden, um einen Test-First-Ansatz zu beschreiben, bei dem die Unit-Tests vor dem Code geschrieben werden. Meiner Meinung nach handelt es sich jedoch immer noch um White-Box-Tests. Obwohl die Implementierung noch nicht existiert, hat jeder, der den Test schreibt, im Allgemeinen eine ziemlich gute Vorstellung davon, wie der Quellcode implementiert werden soll.
Kann mir bitte jemand erklären, wie Black-Box-Unit-Tests funktionieren (wenn es wirklich so ist) und wie sie sich von White-Box-Unit-Tests unterscheiden?
While the implementation does not yet exist, whoever is writing the test generally has a pretty good idea about how the source code is going to be implemented.
- Ja, aber der Test selbst nicht. White-Box-Test bedeutet, etwas innerhalb der Methode oder Klasse zu testen, beispielsweise den Wert einer Variablen. Dies bedeutet nicht, dass der Testschreiber weiß, wie der zu testende Code aussieht.