Test Automation: Tecniche e strumenti per eseguire test case automatici

Test Automation: Tecniche e strumenti per eseguire test case automatici

Testing automatico

L’attività del tester viene svolta quasi sempre manualmente; ci possono, però, essere dei casi nei quali sia più conveniente eseguire dei test automatizzati, utilizzando opportuni strumenti software in grado di sostituire il tester nella sua attività.
Le ragioni, che dettano questa necessità, sono riconducibili principalmente a motivi di tempo e di costi, ma raramente anche alla tipologia dell’applicazione: un esempio ci arriva dagli algoritmi genetici, nei quali la mole di calcoli da effettuare e la ripetitività delle operazioni spingono qualunque tester a desistere da una analisi manuale del prodotto. Progetti che richiedono un test intenso svolto manualmente da parecchi tester sono irreali e sicuramente anti-economici, quando lo stesso lavoro può essere eseguito in maniera efficiente da un software.

Test Automation: Tecniche e strumenti per eseguire test case automatici

Tecniche e strumenti

La fase di testing può essere suddivisa in più attività. La seguente lista mostra in ordine di maturità le varie attività di testing:

  • Esecuzione dei test e analisi dei risultati;
  • Progettazione dei test, permette di determinare lo stato iniziale, i valori d’ingresso, e i valori attesi;
  • Pianificazione dei test, permette di derivare dai requisiti del sistema cosa bisogna testare e in che ordine;
  • Gestione del test;
  • Misurazione del test, permette, grazie a particolari tecniche, di misurare la complessità del sistema e di valutare il grado di copertura dei test.

Esistono diversi strumenti che supportono tali attività. L’attività di progettazione dei test è assai dispendiosa e difficile da automatizzare con ben pochi tool di supporto.
L’efficacia e la fattibilità dell’esecuzione di test automatici dipende dalla testabilità del SUT (System Under Test). Attualmente, soprattutto per quanto riguarda il test di interfacce grafiche, la progettazione e l’esecuzione di test è effettuata manualmente. Tale manualità è richiesta nella determinazione dell’entry del test case e dell’associazione dei dati. Assicurare che tutte le combinazioni logiche vengano testate richiede notevoli competenze umane e un notevole dispendio di tempo. Questo tipo di creazione di test è incline ad errori, in quanto, i tester possono incautamente ripetere gli stessi casi mentre altri non vengono per niente considerati.

Approccio Capture/Playback

Gli strumenti a supporto del testing che offrono la funzionalità del capture/playback memorizzano, per poi eseguire autonomamente, la sequenza di azioni effettuate da un tester sull’applicazione da collaudare. Questi test sono eseguiti per verificare che le funzionalità, offerte dal sistema, sono corrette. Sebbene l’alternativa al meccanismo di capture/replay sono i test script, la stragrande maggioranza dei tester preferiscono utilizzare tali tool anziché mettere mano al codice. Il primo beneficio, che apporta l’utilizzo di tali strumenti, è che si prestano efficacemente ad effettuare il testing di regressione.

Ci sono diversi difetti nell’utilizzo del capture/playback, ed essi sono:

  • Quando le funzionalità del sistema cambiano, i casi di test realizzati con la
    tecnica del capture/playback possono essere invalidati e quindi si rende necessario doverli ridefinire.
  • Gli strumenti per il capture/playback sono progettati per memorizzare tutti
    gli eventi generati su particolari oggetti o in posizioni assolute. Nel primo caso vi è un minimo di prevenzione di invalidazione degli script quando gli oggetti in un’interfaccia grafica vengono riposizionati. Mentre, nel secondo caso, la funzione del cattura, memorizza la posizione assoluta del pixel per ogni evento generato. Utilizzando tale approccio basta un semplice riposizionamento di un pulsante di qualche decina di pixel per invalidare il test script realizzato in precedenza.
  • L’effettivo utilizzo dei tool che offrono la funzionalità del capture/playback dipende dall’ambiente su cui tale tool dovrà operare. Per cui, i tester hanno il compito di ricercare lo strumento di supporto che meglio si adatti alle proprie esigenze.
  • La maggioranza di tale tipologia di tool offrono la possibilità di aggiungere degli script, grazie ai quali gli ingegneri possono modificare e manutenere come se fosse codice applicativo, purtroppo tale caratteristica richiede particolari capacità di programmazione.
    Alla luce di tutto ciò, si può dedurre che, gli strumenti che si basano sul meccanismo del capture/playback offrono ben pochi benefici nell’effettuare test automatici.
Approcci basati sugli eventi generati da tastiera

Gli approcci basati su tastiera (anche detti “basati su azioni”) aiutano gli ingegneri nello sviluppo e nella manutenzione dei test. Il progettista che possiede un’ottima esperienza del SUT e poche competenze di programmazione può, mediante l’esecuzione di talune azioni da tastiera, definire i casi di test. Ogni azione viene mappata e implementata all’interno di uno script. Tali tipologie di tool combinano i vari frammenti di script associati alle azioni intraprese, per poi, eseguire il caso di test. In questo modo il test automatico diventa molto semplice da realizzare.

Approcci orientati agli oggetti

Gli approcci orientati agli oggetti, introducono all’interno degli script di collaudo, concetti derivati dalle tecniche di programmazione Object Oriented (OO) e aggiungono funzionalità che permettono di controllare la GUI. Possono essere definiti dei nuovi oggetti e classi, in base a funzionalità personalizzate. Tale approccio è equivalente ad un approccio basato sugli eventi generati da tastiera dove, in questo caso, il codice dei casi di test sono associati ad attributi e metodi degli oggetti da controllare.

Monkey testing

Le applicazioni che offrono un’interfaccia grafica offrono meccanismi che permettono di gestire eventuali input non corretti, tali meccanismi guidano l’utente nella giusta direzione. In tali applicazioni, esistono delle particolari sequenze di eventi che portano il sistema in uno stato non valido, determinando così, il crash. Qualora l’organizzazione, che deve eseguire il collaudo, non ha abbastanza competenze nel trovare gli eventuali bug del sistema, potrà utilizzare il Monkey Testing. Tale approccio consiste nel generare dei casi di test, che a loro volta, generano eventi casuali sulle interfacce grafiche come ad esempio click, inserimento di valori, etc., al fine di portare il sistema ad un eventuale crash. Durante l’esecuzione di tale test viene memorizzato il log delle azioni compiute al fine di individuare la sequenza di eventi che hanno causato l’anomalia. James Tierney, responsabile dell’attività di testing di Microsoft, in una sua presentazione ha comunicato che la società in cui opera utilizzando il Monkey Testing sono riusciti ad individuare dal 10 al 20% dei bug totali. Tale approccio, purtroppo, è assai limitato: permette solo di trovare quegli errori che causano un crash del sistema, non permette di verificare la sua correttezza.

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 *