Assicurati di comprendere la differenza tra test unitari e test di integrazione / sistema.
Un unit test riguarda una parte del codice che è abbastanza granulare da essere in grado di restringere la ricerca di un bug se il test dell'unità fallisce. Non ci sono lunghi sondaggi qui. Nessuna chiamata REST. No AJAX. Nessun accesso al database. REST, l'accesso ai file, le chiamate al database e tutte quelle operazioni esterne al codice testato vengono prese in giro, ovvero viene creato un mock o uno stub per tutto ciò di cui l'unità testata ha bisogno.
-
Se stai testando il filtraggio dei prodotti, utilizzerai uno stub che sostituirà il database e fornirà prodotti di esempio da utilizzare a scopo di test.
-
Se stai verificando se l'azione di acquisto riduce la quantità del prodotto nel magazzino, utilizzerai un mock che assicurerà che sia stato effettivamente chiamato dall'unità testata e ha chiesto di diminuire la quantità.
A seconda dell'ecosistema e da persona a persona, la severità di ciò che può essere in un test unitario e ciò che non può variare molto: si potrebbero effettivamente vedere alcune persone abili che usano ad esempio l'accesso al database nei loro test unitari, mentre altri lo troveranno orribile. Spetta a te determinare quanto sei un purista e quale sia il buon senso che ti detta, dato il tuo linguaggio di scelta e la community.
Una volta che i test unitari riguardano le parti critiche dell'applicazione, è possibile iniziare a assemblare le parti. Le interfacce tra i diversi componenti di un sistema sono buoni posti per gli errori, quindi anche l'integrazione dei componenti deve essere testata. Ecco cosa sono i test di integrazione
Una volta che tutti i mattoni sono stati combinati in un sistema, questo sistema potrebbe non funzionare come previsto, anche se i test di integrazione non hanno rivelato nulla di sbagliato. Qui entrano in gioco i test di sistema
Si noti che quei test non sono gli unici test disponibili per uno sviluppatore o un dipartimento di QA. Esistono test funzionali , test di accettazione , ecc. Ad esempio, uno dei test che si spera diventino popolari consiste nel prendere un'immagine diff di una pagina web e ispezionare il possibile differenze al fine di rilevare sia il rendering lato client sia gli errori di elaborazione lato server.
Tutti questi test possono servire per test di regressione , ovvero i test che ti consentono di garantire che una modifica non abbia infranto nulla. Combinato con integrazione continua , ti consente di identificare esattamente ciò che è stato rotto e quando e consente di utilizzare continuous delivery , quei test che attenuano il rischio di una revisione non corretta essere automaticamente inseriti nella produzione.