Ho avuto una discussione con un responsabile dei test sul ruolo dei test di unità e integrazione. Ha chiesto agli sviluppatori di segnalare cosa hanno testato unitamente e integralmente e come. La mia prospettiva è che i test di unità e integrazione facciano parte del processo di sviluppo, non del processo di test. Al di là della semantica, ciò che intendo è che i test di unità e di integrazione non dovrebbero essere inclusi nei rapporti di test e che i tester dei sistemi non dovrebbero preoccuparsi di loro. Il mio ragionamento si basa su due cose.
-
I test di unità e integrazione sono pianificati ed eseguiti su un'interfaccia e un contratto, sempre. Indipendentemente dal fatto che utilizzi contratti formalizzati, puoi comunque testare quali ad es. un metodo dovrebbe fare, cioè un contratto.
Nei test di integrazione testate l'interfaccia tra due moduli distinti. L'interfaccia e il contratto determinano quando passa il test. Ma tu provi sempre una parte limitata dell'intero sistema. I test dei sistemi d'altra parte sono pianificati ed eseguiti in base alle specifiche del sistema. La specifica determina quando passa il test.
-
Non vedo alcun valore nel comunicare l'ampiezza e la profondità dell'unità e dei test di integrazione al tester (sistemi). Supponiamo di scrivere un rapporto che elenchi quali tipi di test unitari sono eseguiti su una particolare classe del livello aziendale. Cosa dovrebbe prendere per quello?
Giudicare ciò che dovrebbe e non dovrebbe essere testato è una conclusione falsa, perché il sistema potrebbe non funzionare come richiesto dalle specifiche anche se passano tutti i test di unità e integrazione.
Potrebbe sembrare una discussione accademica inutile, ma se lavori in un ambiente strettamente formale come faccio io, è davvero importante determinare come facciamo le cose. Ad ogni modo, mi sbaglio?