Testing automatico: Come funziona, cosa utilizzare e come velocizzare l’attività di testing

Testing automatico: Come funziona, cosa utilizzare e come velocizzare l’attività di testing

In informatica e precisamente nel testing software, la tecnologia attuale consente, attraverso specifici strumenti software, di automatizzare i test software, consentendo la loro esecuzione e riducendo al minimo le risorse professionali. È necessario fare una prima distinzione tra l’automazione dei test funzionali, che interviene su test funzionali già esistenti (script di test) per incrementarne l’economicità, e l’automazione dei test prestazionali, per necessità realizzabili quasi esclusivamente mediante strumenti di automazione.

L’automazione del test funzionale è utilizzata nelle forniture di sviluppo e manutenzione software con l’intento di ottenere migliori risultati dal test. È opportuno fare delle precisazioni, per non correre il rischio di ottenere l’effetto opposto: è infatti necessario valutare quando, quanta e quale automazione sia realmente utile per apportare reali benefici economici.

Testing automatico: Come funziona, cosa utilizzare e come velocizzare l'attività di testing

Come indicazione generale si ricorda che, in termini di efficienza ed economicità, i test automatici risultano più adatti ad individuare errori durante i test di regressione, mentre i test condotti manualmente sono più idonei a trovare gli errori alle prime esecuzioni.

Inoltre l’automazione del test impone un investimento iniziale maggiore rispetto al test manuale, se commisurato alle sue prime esecuzioni, mentre una volta implementata offrirà notevoli economie di scala per le successive esecuzioni, anche considerando i costi di manutenzione collegati.

Il valore aggiunto derivante dall’automazione dei test funzionali è proporzionale all’accuratezza con cui i test sono stati progettati. Infatti la qualità della progettazione dei test è indipendente dalla qualità
dell’automazione, che interviene quasi esclusivamente sugli attributi di economicità della fase stessa e non sulla sua efficacia ed esemplarità. Gli effetti finali potranno quindi risultare amplificati in positivo, ma anche in negativo, perché un risultato scadente fornito dai test manuali può produrre, se automatizzato, soltanto un risultato peggiore e più costoso.

Per questi motivi è indispensabile che nel piano di test siano definite la modalità, la strategia ed i criteri per l’automazione dei test funzionali e non funzionali.

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.

Esecuzione del test

Gli script di automazione vengono eseguiti durante questa fase. Gli script necessitano di dati di test di input prima che siano impostati per l’esecuzione. Una volta eseguiti, forniscono rapporti di prova dettagliati.
L’esecuzione può essere eseguita utilizzando lo strumento di automazione direttamente o tramite lo strumento Test Management che invocherà lo strumento di automazione.
Esempio: Il tool di testing automation è lo strumento di gestione dei test che a sua volta invocherà il framework per l’esecuzione di script di automazione (esempio Katalon Studio basato su Selenium). Infine, gli script possono essere schedulati e quindi eseguiti in una singola macchina o in un gruppo di macchine e l‘esecuzione può essere eseguita durante la notte, per risparmiare tempo.

Pubblicato da Vito Lavecchia

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

Lascia un commento

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