Testing automation: Caratteristiche, vantaggi e difficoltà del testing automatico

Testing automation: Caratteristiche, vantaggi e difficoltà del testing automatico

In questo articolo sul testing automatico andremo ad analizzare le caratteristiche, i vantaggi e le difficoltà nell’utilizzo di testing automatico nell’ambito dell’end-to-end testing di web application. Il testing automatico è ancora poco diffuso tra le aziende per vari motivi ma la principale ragione è sicuramente riconducibile al fatto che lo sforzo di progettazione, scrittura e manutenzione di una suite di test automatici è decisamente più oneroso del corrispettivo necessario per i test manuali.

A differenza dei test manuali, lo sviluppo di test automatici, infatti, è facilmente paragonabile a quello di un software. Prima di scrivere un test automatico bisogna conoscere la struttura interna del software da testare, i suoi punti critici e molti dettagli implementativi. Onde evitare la creazione di test illeggibili e difficili da manutenere è necessario commentare i passaggi complessi e le funzioni utilizzate; bisogna mantenere degli standard e seguire delle linee guida come l’utilizzo di red test. Infine è necessario che il test sia parlante, che faccia capire al tester, in caso di errore, dove si sia riscontrato e quale potrebbe essere. Proprio per questi motivi gli sviluppatori di test automatici devono avere competenze molto più elevate rispetto a quelle necessarie per progettare ed eseguire test manuali.
Come la programmazione di software, anche quella dei test automatici quindi è un’arte difficile da padroneggiare.

Testing automation: Caratteristiche, vantaggi e difficoltà del testing automatico

Vantaggi e difficoltà

I principali vantaggi dell’utilizzo di test automatici sono:

  1. Possibilità di testare molti aspetti di un software in poco tempo
  2. Riusabilità di test su differenti applicazioni
  3. Possibilità di lanciare test in parallelo per valutare le capacità di carico o la real time collaboration
  4. Sicurezza del risultato (dando per scontato che il test sia scritto bene)
  5. Bassa percentuale di falsi positivi o negativi (a patto che il test sia solido)

Il motivo principale per cui si vuole costruire una suite di test automatici è sicuramente perchè si vuole eseguire dei test ripetutamente dopo ogni nuova release. Se un test deve essere eseguito una sola volta, lo sforzo per automatizzarlo potrebbe superare i benefici offerti.
Dal punto di vista puramente teorico l’introduzione dei test automatici nel ciclo di vita di un software è un passo obbligatorio per un’azienda perchè, a lungo termine, semplifica notevolmente tutto il testing; scontrandosi con la realtà economica però ci si rende conto che la costruzione di una suite di test automatici sia un lavoro, soprattutto inizialmente, dispendioso e complicato. Per scrivere test automatici solidi sono necessarie grandi conoscenze nel campo della programmazione, oltre a quelle riguardanti il testing; un’azienda potrebbe, quindi, fare fatica a rinunciare a del personale qualificato investibile in ambiti come la progettazione o lo sviluppo per assegnarlo ai test automatici.
Investire sui test automatici significa agevolare la manutenzione del software, rilasciare aggiornamenti più sicuri e affidabili, ridurre notevolmente la probabilità che il cliente trovi un bug nel prodotto e ridurre, a lungo termine, il tempo investito nel processo di testing. Anche se, sulla carta, può sembrare una spesa superflua e facilmente evitabile, l’investimento in test automatici costituisce un passo fondamentale per un’azienda che vuole produrre un software di qualità, aggiornato e sicuro nel tempo.

Benefici dei test automatici

Tempo e denaro

Uno dei principali motivi per automatizzare un test è il risparmio di tempo a lungo termine. Molti test vengono lanciati più volte a distanza di tempo. Ogni volta che viene modificata una parte di codice nel software, il test dovrebbe essere ripetuto. Effettuare un test manuale ogni volta è sicuramente più dispendioso in termini di tempo che scrivere un test automatico e programmarne il lancio.
Inoltre, se l’applicazione è presente su differenti browser o sistemi operativi, la quantità di test da lanciare ad ogni modifica aumenta notevolmente. Una volta creato, un test automatico può invece essere lanciato infinite volte senza nessun costo aggiuntivo.
Lo svolgimento di un test automatico è sicuramente più veloce di quello di un test manuale, il che riduce ulteriormente il tempo di testing dopo ogni aggiornamento, permettendo all’azienda di risparmiare tempo e denaro.

Precisione

Anche il più attento tester può fare degli errori durante il monotono svolgimento del testing manuale. I test automatici effettuano esattamente gli stessi passi ogni volta che vengono lanciati, senza dimenticare di registrare dettagliatamente i risultati ottenuti. I tester, che non devono più eseguire i test manuali, hanno più tempo da dedicare alla scrittura di nuovi test automatici o all’implementazione di funzionalità più complesse.

Test coverage

Il testing automatico può aumentare notevolmente la profondità e lo scope dei test, aiutando a incrementare la qualità del software. Test lunghi, spesso evitati nel testing manuale, possono essere sviluppati e lanciati più agevolmente tramite i test automatici. Possono essere lanciati anche su differenti browser o dispositivi, con differenti configurazioni. I test automatici possono entrare all’interno dell’applicazione e guardare i contenuti della memoria, i dati, il contenuto dei file e lo stato interno del software determinando se il software si sta comportando correttamente. Essi possono inoltre eseguire centinaia di differenti e complessi casi di test contemporaneamente, fornendo una copertura del codice impossibile per i test manuali.

Utenti contemporanei

Anche il più grande team di Quality Assurance non potrebbe eseguire un test di web application controllato con migliaia di utenti. I test automatici possono simulare facilmente decine, centinaia o migliaia di utenti virtuali che interagiscono contemporaneamente con una rete, un software o un’applicazione web.
Nonostante l’utilità e la potenza dei test automatici, questi non riescono (ancora) a soddisfare appieno tutte le necessità di testing di un’applicazione. In molti casi, infatti, solo i test manuali sono considerabili consistenti e sicuri. Uno di questi casi è quello delle interfacce grafiche e di tutto ciò che riguarda la visualizzazione a schermo. Dato che i test automatici lavorano direttamente sul codice sorgente dell’applicazione, non riescono ad accorgersi, in alcune situazioni, di errori dovuti solamente alla visualizzazione. Tipici problemi di questo genere si possono verificare a causa della non compatibilità tra diversi browser o sistemi operativi e sono difetti non facilmente riscontrabili analizzando solamente il codice sorgente.

Pubblicato da Vito Lavecchia

Lavecchia Vito Ingegnere Informatico (Politecnico di Bari) Email: [email protected] Sito Web: https://vitolavecchia.altervista.org

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *