Di recente ho avuto il mio esame finale per un corso di ingegneria del software per il mio programma di master e una delle domande sull'esame era la seguente:
Unit Testing is considered:
a. White-box Testing
b. Black-box Testing
c. Either
Nei miei 7 anni di esperienza nello sviluppo di software, i test unitari hanno sempre adottato un approccio white box. Il tester ha sempre avuto piena conoscenza dell'implementazione dell'unità durante la scrittura dei test. I test sulla scatola nera sono sempre arrivati più tardi nelle forme di test di integrazione, sistema e accettazione.
Tuttavia, la risposta corretta all'esame (secondo il professore) è che i test unitari possono essere test su scatola bianca o nera.
Ho fatto alcune ricerche, e sembra che molti casi "test di unità della scatola nera" siano usati per descrivere un approccio test-first in cui i test unitari sono scritti prima che il codice sia. Tuttavia, a mio avviso, si tratta ancora di test in scatola bianca. Sebbene l'implementazione non esista ancora, chiunque stia scrivendo il test in genere ha una buona idea di come verrà implementato il codice sorgente.
Qualcuno può spiegarmi come funziona il test delle unità della scatola nera (se è veramente una cosa) e in che modo differisce dai test delle unità della scatola bianca?
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.
- Sì, ma il test stesso no. Test in white box significa testare qualcosa di interno al metodo o alla classe, come il valore di una variabile. Ciò non significa che chi scrive il test sappia come appare il codice in prova.