
- Unit testing: permettono di testare una classe, un metodo o anche una linea di codice. Tipicamente ogni unit test testa un singolo metodo e tipicamente ho:
- No database call
- No network call
- No filesystem call
- Component testing: una via di mezzo tra unit e integration, tipicamente si testano più metodi insieme come fossero un componente. E’ una sorta di unit testing ma con uno scope più grande.
- Integration testing: in questa tipologia di test non testo solo il singolo metodo ma anche le sue dipendenze, quindi database, file system, network call e così via. Fornisce una rappresentazione più realistica di come si comporta l’applicazione.
- E2E testing: in questo test seguo tutto il flusso dell’applicazione, quindi a partire dalla chiamata dal mondo esterno seguendo tutti i componenti veri non mockati fino alla risposta.
- Performance testing: come dice il nome l’obiettivo è capire le performance del sistema a fronte di un carico molto alto: per esempio faccio 1000 richieste API e verifico che il sistema rimanga corretto e risponda in tempi accettabili.
La rappresentazione dei test come unit → integration → E2E avviene tipicamente tramite una piramide in quanto più si sale più i test sono lenti e costosi, più si scende più sono veloci ed economici.