Ho avuto una discussione con un responsabile dei test sul ruolo dell'unità e dei test di integrazione. Ha richiesto agli sviluppatori di segnalare ciò che hanno testato unità e integrazione e come. La mia prospettiva è che i test unitari e di integrazione facciano parte del processo di sviluppo, non del processo di test. Al di là della semantica, ciò che intendo è che i test unitari e di integrazione non dovrebbero essere inclusi nei report dei test e che i tester dei sistemi non dovrebbero preoccuparsene. Il mio ragionamento si basa su due cose.
I test unitari e di integrazione sono pianificati ed eseguiti sempre contro un'interfaccia e un contratto. Indipendentemente dal fatto che si utilizzino contratti formalizzati, si verifica comunque cosa, ad esempio, si suppone debba fare un metodo, ovvero un contratto.
Nel test di integrazione si verifica l'interfaccia tra due moduli distinti. L'interfaccia e il contratto determinano il superamento del test. Ma testerai sempre una parte limitata dell'intero sistema. D'altra parte, i test dei sistemi sono pianificati ed eseguiti in base alle specifiche del sistema. Le specifiche determinano il superamento del test.
Non vedo alcun valore nel comunicare l'ampiezza e la profondità dell'unità e i test di integrazione al tester (sistemi). Supponiamo che io scriva un rapporto che elenca il tipo di test unitari eseguiti su una particolare classe di livello aziendale. Cosa dovrebbe toglierlo?
Giudicare ciò che dovrebbe e non dovrebbe essere testato da ciò è una falsa conclusione perché il sistema potrebbe non funzionare nel modo richiesto dalle specifiche anche se tutti i test di unità e integrazione vengono superati.
Potrebbe sembrare una discussione accademica inutile, ma se lavori in un ambiente strettamente formale come me, in realtà è importante per determinare come facciamo le cose. Ad ogni modo, sbaglio totalmente?