Black-Box- oder White-Box-Test - was machen Sie zuerst?

14

Was sollte der Tester in einem sehr kleinen Team tun, in dem der Black-Box- und der White-Box-Test von derselben Person durchgeführt werden?

Salzsäule
quelle
1
Ich denke, das hängt vom Kontext ab. Sind Sie mit der Implementierung der Spezifikationen größtenteils fertig und möchten mit dem endgültigen Testen beginnen oder sprechen Sie generell zu jeder Zeit während des Entwicklungszyklus? Wie einige in den Antworten erwähnen, schreiben Ihre Implementierer in der Regel Unit-Tests, die als Teil Ihrer Whtie-Box-Tests betrachtet werden können, da diese Codierer das Innenleben verstehen und die Funktionalität ihrer Implementierung vor dem Festschreiben sicherstellen möchten.
Chris

Antworten:

11

Was auch immer richtig sein muss.

Im Ernst, White-Box-Tests (dh das Testen der Code-Interna) sollten idealerweise mit Unit-Tests des Entwicklers durchgeführt werden, der den Code geschrieben hat. Unit-Tests würden im Laufe der Zeit erstellt und Teil des Erstellungsprozesses, damit wir die Zeit des schlechten Testers nicht mit Code verschwenden, von dem wir wissen, dass er nicht so funktioniert, wie er sollte. Unit-Tests werden umso wichtiger, je kleiner Ihr Team ist - vor allem, weil Sie keine Armee von Testern haben, um Probleme auszuräumen.

Black-Box-Tests (dh Tests über die Benutzer- / Systemschnittstelle) werden in der Regel von den meisten Testern durchgeführt.

Alle Tests müssen priorisiert werden, um festzustellen, wie wichtig eine Funktion für das fertige Produkt ist. Wenn die Mission darin besteht, ein Tool für X bereitzustellen und das Produkt nicht für X, dann ist das ein großes Problem.

Berin Loritsch
quelle
1
Gut gesagt, beste Antwort, die ich bisher gelesen habe.
Chris
5

Schwarz

Black-Box-Tests zur Überprüfung der Funktionen. White-Box-Test bei Bedarf, wenn Dinge kaputt sind. Wenn alle Black-Box-Tests bestanden wurden und die Abdeckung gut ist, sind keine White-Box-Tests erforderlich.

Steven A. Lowe
quelle
2
Es sei denn natürlich, die Black-Box-Tests haben das Testen einer wichtigen Funktion oder Konfiguration verpasst:}
Alan,
3
@ Alan: Dasselbe Argument gilt für White-Box-Tests, daher ist die Einschränkung "Abdeckung ist gut"
Steven A. Lowe
1
Einverstanden - Ich denke, meine Aussage hängt von Ihrer Definition einer guten Abdeckung ab.
Alan
1
@ DocBrown Ich verstehe absolut nicht, wie das, was Sie erklärt haben, etwas ist, das sich aus der Ferne mit dem Testen von Whiteboxen befasst. Bei Whitebox-Tests geht es darum, den Verzweigungspfaden einer bestimmten Implementierung zu folgen und Testfälle zu schreiben, die alle Pfade ausüben. Wenn Sie noch keine Implementierung haben, können Sie per Definition keine Whitebox-Tests durchführen. Mit TDD und BDD schreiben Sie Tests der damals gegebenen allgemeinen Form. Sie richten die Eingabedaten oder den Vorbedingungsstatus ein, starten das Gerät und überprüfen die Ausgabedaten oder den Endstatus oder Anrufe von Dritten. Dies ist die Definition von Blackbox-Tests.
Sammi
1
@SamJudge: Wenn Sie nach meinem Verständnis in den Implementierungscode schauen und diese Informationen zum Entwerfen sehr spezifischer Testdaten verwenden (die dann über die öffentliche Schnittstelle weitergeleitet werden), ist es gerechtfertigt, diese White-Box-Tests aufzurufen. Ein solcher Test schlägt auch fehl, wenn das Ergebnis nicht den Erwartungen entspricht. Wenn Sie sich später nur den Test ansehen, können Sie möglicherweise nicht eindeutig sagen, dass dieser Test mit einem White-Box- (oder Black-Box-) Ansatz erstellt wurde.
Doc Brown
3

Schwarze Box.

White-Box-Komponenten sind in der Regel von Black-Box-Komponenten abhängig. Daher möchte ich zuerst die Black-Box testen und dann mit der White-Box fortfahren.

Walter
quelle
2
Ich bin mir nicht sicher, was Sie unter "Black-Box-Komponenten" und "White-Box-Komponenten" verstehen - für mich handelt es sich nur um "Komponenten" (die mit oder ohne Kenntnis des zugrunde liegenden Codes oder der zugrunde liegenden Architektur getestet werden können.
Alan
Ich verstehe die "abhängige" Beziehung, die Sie hier vorschlagen, nicht. White Black und Black Box sind keine Komponenten, sondern eher ein Teststil für Komponenten, wie Alan erwähnt. Der Unterschied liegt in der Vorgehensweise zum Testen der betreffenden Komponente.
Chris
2

Sie führen als Programmierer / Entwickler zunächst Weißtests durch, um sicherzustellen, dass die Dinge gut funktionieren. Dann führen Sie Black-Box-Tests durch, bei denen Sie normalerweise versuchen, so zu denken, als wären Sie der Endbenutzer, ohne an die interne Struktur des Programms zu denken. Manchmal müssen Sie wie ein Programmierer / Entwickler denken, auch wenn Sie einen Schwarztest durchführen, weil Sie möglicherweise ein internes Modul testen, das von einer anderen Person geschrieben wurde, und Sie keinen Zugriff auf den Code haben.

Enrique
quelle
2

Wenn Sie einen guten Testzyklus haben möchten, sollten Sie verschiedene Personen haben, die beides tun :

  • Ein Entwickler, der sich hauptsächlich auf White-Box-Tests konzentriert, weiß, was sich in letzter Zeit im Code geändert hat, welche Bereiche komplexer sind (und daher wahrscheinlich brechen) usw., und kann seine Bemühungen auf diese Bereiche konzentrieren, die höchstwahrscheinlich neue Fehler verursachen.

  • Auf der anderen Seite kann ein auf Black-Box-Tests fokussierter QS-Tester sich den Tests leichter nähern wie ein Endbenutzer. Ohne interne Kenntnisse des Codes können sie einen neuen Ansatz verfolgen und sind nicht von dem Wissen abhängig, wie verschiedene Teile der Lösung implementiert werden. Sie erkennen Fehler, die der Entwickler möglicherweise übersehen hat, oder Rückschritte aufgrund von Codeänderungen, durch die versehentlich andere Bereiche der Anwendung beschädigt wurden.

Um Ihre Frage zu beantworten, sollten Sie zuerst die White-Box-Tests durchführen. Aber Sie brauchen wirklich eine andere Person, die die Black-Box-Tests durchführt, wenn Sie möchten, dass sie effektiv ist.

Justin Ethier
quelle
1

Ich beginne gerne mit Black-Box-Tests und nutze dann die Informationen zur Codeabdeckung oder den Debugger, um herauszufinden, was ich tue, und um zu analysieren, was passiert.

Aber die wahre Antwort ist, dass es darauf ankommt . Ich werde wahrscheinlich früher (oder sogar erst) in den Code eintauchen, wenn ich API-Tests durchführe, aber viel später, wenn mein Ziel darin besteht, einige umfangreiche End-to-End-Szenarien zu betrachten.

Alan
quelle
1

Ich würde sagen, Black-Box- Tests zuerst, einfach weil als ein Befürworter von TDD die Tests geschrieben werden, bevor der Code (oder die Box) sowieso existiert :)

White-Box- Tests sind (soweit ich weiß ) in einer Debug-Denkweise nützlicher.

Matthieu M.
quelle
-1, TDD ist ein White-Box-Test. In TDD ist es wichtig zu wissen, was der am Test beteiligte Code tut (und was nicht), um den nächsten Test zu schreiben. Black-Box-Test bedeutet, dass jemand, der keine Ahnung vom Code hat (ein Tester, der nicht einmal wissen muss, wie man einen Code erstellt), die Tests erstellt.
Doc Brown
1
Dann üben wir TDD nicht auf die gleiche Weise. Bei TDD geht es für mich darum, die Spezifikationen einer Klasse / Funktion durchzusetzen: Die Tests dienen dazu, zu überprüfen, ob sich die Klasse / Funktion wie angegeben verhält, es könnte jedoch weniger wichtig sein, wie sich der Code hinter den Kulissen verhält, solange diese Spezifikationen eingehalten werden. Dies ist erforderlich, da die Tests vor der Funktionalität geschrieben wurden.
Matthieu M.
1

Black-Box-Tests, da Sie Tests schreiben, bevor der Code vorhanden ist. Der Tester muss zeitaufwendige automatische Tests entwickeln, die mit dem Code des Entwicklers zusammenarbeiten, um in einem kleinen Team effizient zu sein.

Wenn der Code bereits geschrieben ist, sollten Sie einige Zeit damit verbringen, die Testabdeckung aus Black-Box-Sicht zu skizzieren, um sicherzustellen, dass Sie etwas Zeit für Brainstorming haben, bevor Sie Ihr Gehirn mit dem eigentlichen Code überladen. Sie können jedoch zu White-Box wechseln und sich den Code ansehen, bevor Sie mit den eigentlichen Tests weiterkommen, um ein Gefühl für die Risikobereiche zu bekommen und die Tests, die Sie früher erstellt haben, zu priorisieren (und sie mit neuen Tests zu ergänzen, die von............... Teile des Codes betrachten, die kompliziert oder fragwürdig erscheinen).

Ethel Evans
quelle
0

Weder. Ich versuche , gute Tests zu schreiben , meine mit rechten Bizeps , unter Berücksichtigung RICHTIG Randbedingungen , egal in welcher Reihenfolge sie in den Sinn kommen. Dies sind beide in Pragmatic Unit Testing vorgeschlagenen Akronyme .

Mein Ziel ist es, mich darauf zu konzentrieren, gute Tests zu schreiben, und nicht darauf, welche Farbe ich zuerst schreiben soll.

Steven Evers
quelle
'Weiß' und 'Schwarz' sind keine Unit-Test-Begriffe, darum kümmern Sie sich natürlich nicht. Unit-Tests sind de facto White-Box.
Ethel Evans
@Ethel Evans: Per Definition handelt es sich nicht um White-Box-Tests. Die überwiegende Mehrheit der Unit-Tests sind White-Box-Tests, dies ist jedoch keine Voraussetzung. Alle Tests, die den Bereich der Eingaben auf den Bereich der Ausgaben einer Funktion abbilden, sind Komponententests, müssen jedoch die Details der Implementierung nicht kennen.
Steven Evers
0

Führen Sie zuerst einen White-Box-Test durch .

An zweiter Stelle stehen Black-Box-Tests.

> Black-Box-Test

I. Der Tester sollte die Funktionalität der Anwendung überprüfen, z. B. Textfeld, Optionsfeld, Listenfeld, Befehlsschaltfläche usw. ,,

II. Der Tester sollte prüfen, ob die Anwendung nicht funktioniert, z. B. Logo, Bild, Rechtschreibung usw. ,,

III. Der Tester sollte den gesamten Fluss der Anwendung prüfen.

Hinweis: Zum Überprüfen der positiven und negativen Bedingungen.


quelle