Cos'è l'Agile Testing?
AGILE TESTING è una pratica di test che segue le regole ei principi dello sviluppo agile del software. A differenza del metodo Waterfall, l'Agile Testing può iniziare all'inizio del progetto con una continua integrazione tra sviluppo e test. La metodologia di Agile Testing non è sequenziale (nel senso che viene eseguita solo dopo la fase di codifica) ma continua.
In questo articolo, discuteremo
- Piano di test agile.
- Strategie di test agili.
- Il quadrante Agile Testing.
- Sfide di QA con lo sviluppo agile del software.
- Rischio di automazione nel processo agile.
Piano di test agile
Il piano di test Agile include tipi di test eseguiti in tale iterazione come requisiti dei dati di test, infrastruttura, ambienti di test e risultati dei test. A differenza del modello a cascata, in un modello agile, un piano di test viene scritto e aggiornato per ogni versione. I piani di test tipici in Agile include
- Ambito del test
- Nuove funzionalità in fase di test
- Livello o tipi di test in base alla complessità delle funzionalità
- Test di carico e prestazioni
- Considerazione sull'infrastruttura
- Piano di mitigazione o rischi
- Risorse
- Risultati finali e traguardi
Strategie di test agili
Il ciclo di vita dei test agili si estende attraverso quattro fasi
(a) Iterazione 0
Durante la prima fase o iterazione 0, vengono eseguite le attività di configurazione iniziale. Include l'identificazione delle persone per i test, l'installazione di strumenti di test, la pianificazione delle risorse (laboratorio di test di usabilità), ecc. I seguenti passaggi sono impostati per ottenere in Iterazione 0
a) Stabilire un business case per il progetto
b) Stabilire le condizioni limite e l'ambito del progetto
c) Delineare i requisiti chiave e i casi d'uso che guideranno i compromessi di progettazione
d) Delineare una o più architetture candidate
e) Identificazione del rischio
f) Stima dei costi e preparazione di un progetto preliminare
(b) Iterazioni di costruzione
La seconda fase della metodologia di test agile è rappresentata dalle iterazioni di costruzione, la maggior parte dei test avviene durante questa fase. Questa fase viene osservata come un insieme di iterazioni per costruire un incremento della soluzione. Per fare ciò, all'interno di ogni iterazione, il team implementa un ibrido di pratiche da XP, Scrum, modellazione Agile e dati agili e così via.
Nell'iterazione della costruzione, il team agile segue la pratica dei requisiti prioritari: con ogni iterazione, prende i requisiti più essenziali rimanenti dalla pila degli elementi di lavoro e li implementa.
L'iterazione della costruzione è classificata in due, test di conferma e test investigativi. Il test di conferma si concentra sulla verifica che il sistema soddisfi gli intenti degli stakeholder come descritto al team fino ad oggi e viene eseguito dal team. Mentre il test investigativo rileva il problema che il team di conferma ha saltato o ignorato. Nei test investigativi, il tester determina i potenziali problemi sotto forma di storie di difetti. I test investigativi si occupano di problemi comuni come test di integrazione, test di carico / stress e test di sicurezza.
Anche in questo caso, per i test di conferma ci sono due aspetti del test per sviluppatori e del test di accettazione agile . Entrambi sono automatizzati per consentire test di regressione continui durante tutto il ciclo di vita. Il test di conferma è l'equivalente agile del test rispetto alla specifica.
Il test di accettazione agile è una combinazione di test funzionali tradizionali e test di accettazione tradizionali come team di sviluppo e le parti interessate lo fanno insieme. Mentre i test per sviluppatori sono un mix di test di unità tradizionali e test di integrazione dei servizi tradizionali. Il testing dello sviluppatore verifica sia il codice dell'applicazione che lo schema del database.
(c) Rilascio della fine del gioco o della fase di transizione
L'obiettivo di "Release, End Game" è distribuire con successo il sistema in produzione. Le attività includono in questa fase la formazione degli utenti finali, le persone di supporto e le persone operative. Inoltre, include la commercializzazione del rilascio del prodotto, il backup e il ripristino, la finalizzazione del sistema e la documentazione per l'utente.
La fase finale di test della metodologia agile include test completi del sistema e test di accettazione. Per completare la fase di test finale senza ostacoli, è necessario testare il prodotto in modo più rigoroso mentre è in iterazioni di costruzione. Durante il gioco finale, i tester lavoreranno sulle sue storie di difetti.
(d) Produzione
Dopo la fase di rilascio, il prodotto passerà alla fase di produzione.
I quadranti Agile Testing
I quadranti di test agili separano l'intero processo in quattro quadranti e aiutano a capire come vengono eseguiti i test agili.
a) Agile Quadrant I - La qualità del codice interno è l'obiettivo principale di questo quadrante e consiste in casi di test guidati dalla tecnologia e implementati per supportare il team, include
1. Test unitari
2. Test dei componenti
b) Agile Quadrant II : contiene casi di test basati sul business e implementati per supportare il team. Questo quadrante si concentra sui requisiti. Il tipo di test eseguito in questa fase è
1. Test di esempi di possibili scenari e flussi di lavoro
2. Test dell'esperienza dell'utente come prototipi
3. Test di coppia
c) Agile Quadrant III - Questo quadrante fornisce feedback ai quadranti uno e due. I casi di test possono essere utilizzati come base per eseguire test di automazione. In questo quadrante, vengono eseguiti molti cicli di revisioni di iterazione che creano fiducia nel prodotto. Il tipo di test eseguito in questo quadrante è
1. Test di usabilità
2. Test esplorativi
3. Associare i test ai clienti
4. Test collaborativi
5. Test di accettazione dell'utente
d) Agile Quadrant IV - Questo quadrante si concentra sui requisiti non funzionali come prestazioni, sicurezza, stabilità, ecc. Con l'aiuto di questo quadrante, l'applicazione è realizzata per fornire le qualità non funzionali e il valore atteso.
1. Test non funzionali come stress e test delle prestazioni
2. Test di sicurezza rispetto all'autenticazione e alla pirateria informatica
3. Test dell'infrastruttura
4. Test di migrazione dei dati
5. Test di scalabilità
6. Prova di carico
Sfide di QA con lo sviluppo agile del software
a) Le possibilità di errore sono più agili, poiché alla documentazione viene data meno priorità, il che alla fine mette più pressione sul team QA
b) Le nuove funzionalità vengono introdotte rapidamente, il che riduce il tempo disponibile per i team di test per identificare se le funzionalità più recenti sono conformi ai requisiti e risolvono veramente le cause
c) I tester sono spesso tenuti a svolgere un ruolo semi-sviluppatore
d) I cicli di esecuzione dei test sono altamente compressi
e) Molto meno tempo per preparare il piano di test
f) Per i test di regressione, avranno un tempismo minimo
g) Cambiamento del loro ruolo da custode della qualità a partner della qualità
h) Le modifiche e gli aggiornamenti dei requisiti sono inerenti a un metodo agile, diventando la sfida più grande per il QA
Rischio di automazione nel processo agile
- L'interfaccia utente automatizzata offre un alto livello di sicurezza, ma è lenta da eseguire, fragile da mantenere e costosa da costruire. L'automazione potrebbe non migliorare in modo significativo la produttività dei test a meno che i tester non sappiano come eseguire i test
- I test inaffidabili sono una delle principali preoccupazioni nei test automatizzati. Risolvere i test non riusciti e risolvere i problemi relativi ai test fragili dovrebbe essere una priorità assoluta per evitare falsi positivi
- Se i test automatizzati vengono avviati manualmente anziché tramite CI (Continuous Integration), esiste il rischio che non vengano eseguiti regolarmente e quindi possano causare il fallimento dei test
- I test automatizzati non sostituiscono un test manuale esplorativo. Per ottenere la qualità prevista del prodotto, è necessaria una combinazione di tipi e livelli di test
- Molti strumenti di automazione disponibili in commercio forniscono funzionalità semplici come l'automazione dell'acquisizione e della riproduzione di casi di test manuali. Tale strumento incoraggia i test attraverso l'interfaccia utente e porta a test intrinsecamente fragili e difficili da mantenere. Inoltre, l'archiviazione dei casi di test al di fuori del sistema di controllo della versione crea una complessità non necessaria
- Per risparmiare tempo, molte volte il piano di test dell'automazione è mal pianificato o non pianificato, il che si traduce nel fallimento del test
- Durante l'automazione del test, le procedure di configurazione e smontaggio del test vengono solitamente ignorate, mentre l'esecuzione di test manuali, una procedura di configurazione e smontaggio del test sembra perfetta
- Le metriche di produttività come un numero di casi di test creati o eseguiti al giorno possono essere terribilmente fuorvianti e potrebbero portare a fare un grande investimento nell'esecuzione di test inutili
- I membri del team di automazione agile devono essere consulenti efficaci: disponibili, collaborativi e pieni di risorse, altrimenti questo sistema fallirà rapidamente
- L'automazione può proporre e fornire soluzioni di test che richiedono una manutenzione eccessiva rispetto al valore fornito
- I test automatizzati possono non avere l'esperienza necessaria per concepire e fornire soluzioni efficaci
- I test automatizzati possono avere un tale successo da esaurire i problemi importanti da risolvere e quindi passare a problemi non importanti.
Conclusione
La metodologia agile nel test del software prevede il test il più presto possibile nel ciclo di vita dello sviluppo del software. Richiede un elevato coinvolgimento del cliente e un codice di test non appena diventa disponibile. Il codice dovrebbe essere abbastanza stabile da portarlo al test del sistema. È possibile eseguire test di regressione approfonditi per assicurarsi che i bug vengano corretti e testati. Soprattutto, la comunicazione tra i team rende il successo dei test di modelli agili !!!