Volevo solo aggiungere e dare un po 'più di contesto sul perché abbiamo questi livelli di test, cosa significano veramente con esempi
Mike Cohn nel suo libro "Riuscire con Agile" ha inventato la "Piramide dei test" come un modo per affrontare i test automatizzati nei progetti. Esistono varie interpretazioni di questo modello. Il modello spiega che tipo di test automatici devono essere creati, quanto velocemente possono fornire feedback sull'applicazione in prova e chi scrive questi test. Esistono sostanzialmente 3 livelli di test automatizzati necessari per qualsiasi progetto e sono i seguenti.
Test unitari:
testano il componente più piccolo dell'applicazione software. Questa potrebbe letteralmente essere una funzione in un codice che calcola un valore basato su alcuni input. Questa funzione fa parte di molte altre funzioni della base di codice hardware / software che costituisce l'applicazione.
Ad esempio - Prendiamo un'applicazione calcolatrice basata sul web. I componenti più piccoli di questa applicazione che devono essere testati in unità potrebbero essere una funzione che esegue l'addizione, un'altra che esegue la sottrazione e così via. Tutte queste piccole funzioni messe insieme compongono l'applicazione calcolatrice.
Storicamente lo sviluppatore scrive questi test in quanto sono generalmente scritti nello stesso linguaggio di programmazione dell'applicazione software. A tale scopo vengono utilizzati framework di unit test come JUnit e NUnit (per Java), MSTest (per C # e .NET) e Jasmine / Mocha (per JavaScript).
Il più grande vantaggio dei test unitari è che corrono molto velocemente sotto l'interfaccia utente e possiamo ottenere un rapido feedback sull'applicazione. Ciò dovrebbe comprendere oltre il 50% dei test automatici.
Test API / di integrazione:
testano insieme vari componenti del sistema software. I componenti potrebbero includere database di test, API (Application Programming Interface), strumenti e servizi di terze parti insieme all'applicazione.
Ad esempio: nel nostro esempio di calcolatrice di cui sopra, l'applicazione Web potrebbe utilizzare un database per archiviare valori, utilizzare API per eseguire alcune convalide lato server e potrebbe utilizzare uno strumento / servizio di terze parti per pubblicare risultati sul cloud per renderlo disponibile su diversi piattaforme.
Storicamente uno sviluppatore o un QA tecnico avrebbe scritto questi test usando vari strumenti come Postman, SoapUI, JMeter e altri strumenti come Testim.
Eseguono molto più velocemente dei test dell'interfaccia utente poiché continuano a funzionare sotto il cofano, ma possono richiedere un po 'più di tempo rispetto ai test unitari poiché devono controllare la comunicazione tra i vari componenti indipendenti del sistema e garantire che abbiano una perfetta integrazione. Ciò dovrebbe comprendere oltre il 30% dei test automatizzati.
Test dell'interfaccia utente:
infine, disponiamo di test che convalidano l'interfaccia utente dell'applicazione. Questi test sono generalmente scritti per testare i flussi end-to-end attraverso l'applicazione.
Ad esempio - Nell'applicazione calcolatrice, potrebbe essere un flusso end-to-end, aprendo il browser-> Accesso all'URL dell'applicazione calcolatrice -> Accesso con nome utente / password -> Apertura dell'applicazione calcolatrice -> Esecuzione di alcune operazioni sulla calcolatrice -> verifica quei risultati dall'interfaccia utente -> Disconnessione dall'applicazione. Questo potrebbe essere un flusso end-to-end che sarebbe un buon candidato per l'automazione dell'interfaccia utente.
Storicamente, i QA tecnici o i tester manuali scrivono test dell'interfaccia utente. Usano framework open source come Selenium o piattaforme di test dell'interfaccia utente come Testim per creare, eseguire e mantenere i test. Questi test forniscono più feedback visivi quando puoi vedere come sono in esecuzione i test, la differenza tra i risultati attesi e quelli effettivi attraverso schermate, registri, rapporti di prova.
Il limite maggiore dei test dell'interfaccia utente è che sono relativamente lenti rispetto ai test a livello di unità e API. Pertanto, dovrebbe comprendere solo il 10-20% dei test automatizzati complessivi.
I prossimi due tipi di test possono variare in base al progetto, ma l'idea è-
Test del fumo
Questa può essere una combinazione dei precedenti 3 livelli di test. L'idea è di eseguirlo durante ogni check in del codice e assicurarsi che le funzionalità critiche del sistema funzionino ancora come previsto; dopo che le nuove modifiche al codice sono state unite. In genere devono funzionare con 5-10 minuti per ottenere un feedback più rapido sugli errori
Test di regressione
Di solito vengono eseguiti almeno una volta al giorno e coprono varie funzionalità del sistema. Assicurano che l'applicazione funzioni ancora come previsto. Sono più dettagli dei test del fumo e coprono più scenari dell'applicazione inclusi quelli non critici.