Domanda

Di 'Ho tre metodi, tutti molto simili, ma con diversi tipi di ingresso:

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

Tutti e tre utilizzano la stessa logica sottostante. Per esempio: forse la versione double è l'unico che mette a confronto i numeri, e gli altri due solo convertire i loro ingressi double

.

potrebbe immaginare alcuni test di unità differenti:. Primo ingresso è maggiore, secondo è più grande, entrambi gli ingressi sono negativi, etc

La mia domanda

dovrebbe tutti e tre i metodi hanno la serie completa di test (scatola nera in quanto non ci assumiamo l'implementazione di base è lo stesso)

o

dovrebbe solo la versione double essere testato pesantemente e gli altri due testato leggermente per verificare la conversione dei parametri (test white box poiché sappiamo che condividono la stessa implementazione ed è già stato testato nelle prove double)?

È stato utile?

Soluzione

Se tutti questi metodi sono pubblici, vale a dire richiamabile dal mondo esterno, mi piacerebbe sicuramente prova tutte con una serie completa di test. Una buona ragione è che i test white-box sono più fragili di test black-box; se l'implementazione cambia l'appalto pubblico potrebbe cambiare per alcuni di questi metodi.

Altri suggerimenti

Dipende.

Pensi che l'implementazione è destinata a cambiare? Se è così allora andare con test della scatola nera.

Se si può garantire che l'attuazione non cambierà andare con la scatola bianca. Tuttavia, le probabilità di voi essere in grado di garantire questo non sono al 100%.

Si potrebbe compromesso e fare un po 'dei test scatola nera, in particolare intorno le condizioni al contorno. Tuttavia, a scrivere i test dovrebbe essere facile - quindi non ci sono scuse da questo punto di vista per non fare piena prova di scatola nera. Il fattore limitante è il tempo necessario per eseguire i test.

Forse si dovrebbe studiare la possibilità di eseguire i test in parallelo.

Ci sono una serie di test che esercitano in modo esplicito le interfacce pubbliche. Vorrei trattare coloro i test black-box.

Ci sono una seconda serie di test che potrebbe essere visto come guardando i casi d'angolo di attuazione. Questo è test white box e sicuramente ha un posto in una prova di unità. Non è possibile conoscere i percorsi di interessante senza una certa conoscenza implementazione white-box. Vorrei prestare particolare attenzione al caso String, perché l'interfaccia consente per le stringhe che non può convertire in modo pulito a doppie, che spingono i confini di precisione, ecc.

Would ho tagliato qualche curva nel caso intero? So che ho spinto i sentieri nel doppio caso, probabilmente non dovrebbe, ma potrebbe ben sotto pressione di tempo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top