In ingegneria del software, per unit testing, test unitario[1] o collaudo unitario, si intende l'attività di collaudo di singole unità di un software. Per unità si intende normalmente il minimo componente di un programma dotato di funzionamento autonomo; a seconda del paradigma di programmazione o linguaggio di programmazione, questo può corrispondere per esempio a una singola funzione nella programmazione procedurale, o una singola classe o un singolo metodo nella programmazione a oggetti.
Lo unit testing viene normalmente eseguito dagli sviluppatori, e può essere occasionalmente glass box, ovvero essere esplicitamente basato sulla conoscenza dell'architettura e del funzionamento interno di un componente oltre che sulle sue funzionalità esternamente esposte.[1] Lo unit testing è tipicamente automatico, ed è implementato utilizzando librerie predisposte per ciascun linguaggio di programmazione (per esempio JUnit in Java, da cui prendono spunto anche la maggior parte delle altre librerie software di Unit Testing). Lo sviluppo dei test case (cioè delle singole procedure di test) può essere considerato parte integrante dell'attività di sviluppo (per esempio, nel caso dello sviluppo guidato da test) ed è una best practice raccomandata sempre durante lo sviluppo software in quanto è in grado di verificare il buon funzionamento di ogni singola componente del software in poco tempo e con grande affidabilità.