Frage

sagen, ich habe drei Methoden, die alle sehr ähnlich, aber mit unterschiedlichen Eingabetypen:

void printLargestNumber(int a, int b) { ... }
void printLargestNumber(double a, double b) { ... }
void printLargestNumber(String numberAsString, String numberAsString) { ... }

Alle drei nutzen die gleiche zugrunde liegende Logik. Zum Beispiel: vielleicht ist die double Version die einzige, die Zahlen vergleicht, und die beiden anderen nur ihre Eingaben double konvertieren

.

Wir konnten ein paar verschiedene Unit-Tests vorstellen. Erste Eingang größer ist, die zweite ist größer, beide Eingänge sind negativ, etc

Meine Frage

sollten alle drei Methoden haben den vollen Satz von Tests

(Black-Box, da wir die Kern-Implementierung ist das gleiche nicht annehmen)

oder

sollten nur die double Version stark getestet werden und die beiden anderen leicht Parameter getestet Umwandlung zu überprüfen (White-Box-Tests, da wir wissen, dass sie die gleiche Umsetzung teilen und es ist bereits in den double Tests getestet)?

War es hilfreich?

Lösung

Wenn alle diese Methoden öffentlich sind, das heißt aufrufbar von der Außenwelt, würde ich auf jeden Fall testen, alle von ihnen mit einem vollständigen Satz von Tests. Ein guter Grund ist, dass White-Box-Tests sind spröder als Black-Box-Tests; wenn die Durchführung der öffentlichen Auftrag ändert könnte für einige dieser Methoden ändern.

Andere Tipps

Es hängt davon ab.

Denken Sie, die Umsetzung wahrscheinlich zu ändern ist? Wenn ja geht dann mit Blackbox-Tests.

Wenn Sie garantieren können, dass die Umsetzung nicht ändern wird mit weißen Kasten gehen. Allerdings sind die Chancen, dass Sie diese in der Lage zu garantieren, sind nicht zu 100%.

Sie könnten Kompromiss und tun einige der Black-Box-Tests, vor allem um die Randbedingungen. Allerdings sollten die Tests zu schreiben leicht sein - so gibt es keine Entschuldigung aus dieser Sicht für nicht tun volle schwarze Box-Tests. Der einzige limitierende Faktor ist die Zeit es braucht, um die Tests auszuführen.

Vielleicht sollten Sie die Möglichkeit untersuchen, die Tests parallel ausgeführt werden.

Es gibt eine Reihe von Tests, die explizit die öffentlichen Schnittstellen ausüben. Ich würde diejenigen, die als Black-Box-Tests behandeln.

Es gibt eine zweite Reihe von Tests, die als Blick auf der Ecke Fällen der Umsetzung zu sehen. Dies ist White-Box-Test und hat sicherlich einen Platz in einem Unit-Test. Sie können die interessanten Pfade nicht kennen, ohne einig White-Box-Implementierung Wissen. Ich würde besonders auf den String Fall zahlen, da die Schnittstelle für Strings erlaubt, die nicht sauber zu verdoppelt umwandeln können, dass die Grenzen der Genauigkeit usw. drücken.

schneiden würde ich ein paar Ecken in dem Integer-Fall? Ich weiß, dass ich die Pfade im Doppel Fall gedrückt wird, wahrscheinlich sollte nicht aber könnte auch unter Zeitdruck.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top