Skip to main content

L’uso dell’intelligenza artificiale (IA) nell’automazione dei test è l’ultima tendenza nell’assicurazione della qualità. Il testing in generale, e l’automazione dei test in particolare, sembrano essere stati contagiati dal virus “tutto è meglio con l’IA”.

Dal momento che IA, machine learning e reti neurali sono gli argomenti più caldi del momento, è forse inevitabile che l’IA trovasse in qualche modo la sua strada nell’automazione dei test.

Un po’ di storia sull’automazione dei test

Ricordo alcuni anni fa, quando l’automazione dei test era ancora nuova, uno dei miei team di quality assurance lavorava su un progetto per un grande cliente. Era un’app mobile con milioni di utenti e cicli di rilascio mensili. Il team QA era solitamente rilassato nelle prime due settimane del ciclo e poi lavorava freneticamente fino al rilascio—uno di quegli effetti collaterali peculiari dello sviluppo software agile di cui non si legge mai nei titoli!

Want more from The CTO Club?

Create a free account to finish this piece and join a community of CTOs and engineering leaders sharing real-world frameworks, tools, and insights for designing, deploying, and scaling AI-driven technology.

This field is for validation purposes and should be left unchanged.
Name*

Alla fine, uno dei responsabili QA, stanco di girarsi i pollici durante le due settimane di calma, iniziò a lavorare su un framework per l’automazione dei test. Scrisse alcuni script di test in Ruby con Selenium / Appium e Jenkins per una pipeline rudimentale, includendo dei bei report con indicatori Rosso / Giallo / Verde per la segnalazione di fallimenti o successi dei test.

Riuscì a fare tutto ciò per un paio di cicli di rilascio. A quel punto lo presentammo al nostro responsabile della Qualità, che lo propose ai nostri clienti e li entusiasmò abbastanza da farli accettare di pagare l’automazione dei test come sotto-progetto. Era come essere al settimo cielo, sulla cresta dell’onda innovativa!

Tuttavia, la cresta dell’onda acquisì un nuovo significato dopo pochi mesi, quando scoprimmo quella verità fondamentale sull’automazione dei test con cui oggi qualsiasi ingegnere QA si confronta:

Non si creano semplicemente test automatizzati!

Perché lo dico? Perché, poco dopo, ci siamo sentiti come Alice in un Mordor da favola a correre come pazzi con la Regina Rossa:

“Devi correre più che puoi per restare nello stesso posto.” - Lewis Carroll, Alice nel Paese delle Meraviglie. (Fonte)

Abbiamo appena scoperto la fredda realtà della trappola dell’automazione dei test: uno degli ingegneri QA doveva mantenere la suite di automazione aggiornata con l’applicazione praticamente a ogni ciclo di rilascio, perché i cambiamenti arrivavano in modo rapido e continuo!

Bastava cambiare il nome di un campo ed ecco che i nostri test automatizzati finivano nella proverbiale tana del coniglio. L’inizio di un nuovo rilascio era particolarmente difficile, poiché il team di sviluppo introduceva una valanga di novità.

L’automazione dei test, da allora, non è cambiata radicalmente perché richiede ancora monitoraggio e manutenzione continui. Una vera possibilità di miglioramento radicale dell’approccio e dell’implementazione si è manifestata solo recentemente con l’evolversi delle capacità dell’IA.

IA: Hype contro Realtà

La tecnologia dell’IA, nella sua versione attuale, consiste prevalentemente nell’usare algoritmi di machine learning per addestrare modelli con grandi (ma non enormi) volumi di dati, e poi utilizzare quei modelli per fare previsioni o generare risultati desiderati. Praticamente tutta l’IA rientra in questa, per quanto semplificata, descrizione. Tuttavia, la domanda più importante per noi qui è:

L’IA sarà davvero in grado di generare e aggiornare automaticamente i casi di test? Trovare bug? Migliorare la copertura del codice?

La risposta a questa domanda non è affatto chiara al momento, perché siamo nel pieno del ciclo delle aspettative esagerate su IA. Un sottoinsieme specifico, il deep learning, è stato responsabile di gran parte di questo entusiasmo.

Il Gartner Hype Cycle per l’Intelligenza Artificiale, 2019. (Fonte)

Quello che trovo più curioso di questo grafico è questo:

Se Siri dovrebbe essere già oltre la curva dell’hype, allora siamo davvero molto lontani da casa, Dorothy!

Voglio dire, conosco molte persone che devono ripetere più volte per farsi capire da Siri (nessuna offesa ai fan di Siri. Davvero 😉).

La curva dell’hype ci dice che c’è molto entusiasmo intorno al potenziale dell’IA, entusiasmo che si raffredda prima che tutti si mettano a lavorare nel quotidiano, tra lavoro di routine e pane quotidiano. In termini semplici, ciò che il sofisticato grafico di Gartner vuole dire è questo:

Artificial Intelligence: Expectation vs Reality Screenshot
Intelligenza artificiale: aspettativa vs realtà.

Tuttavia, anche se siamo ancora lontani dalla singolarità, l’IA nel suo stato attuale ha comunque il potenziale per migliorare significativamente l'automazione dei test.

Come il machine learning produce test automatici?

  1. Addestramento: Nella fase di addestramento, il modello di machine learning deve essere addestrato su un dataset organizzativo specifico, che include la base di codice, l’interfaccia applicativa, i log, i casi di test e persino i documenti di specifica. Non avere un dataset di addestramento sufficientemente ampio può ridurre l’efficacia dell’algoritmo.

    Alcuni strumenti dispongono di modelli pre-addestrati che vengono aggiornati tramite apprendimento continuo per applicazioni specifiche come i test UI, così che l'apprendimento generalizzato possa essere utilizzato in una specifica organizzazione.

  2. Output / Generazione del risultato: A seconda del caso d’uso, il modello genera casi di test, verifica i casi di test esistenti in termini di copertura del codice, completezza, accuratezza e può anche eseguire i test. In ogni caso, un tester deve controllare il risultato generato per validarlo e assicurarsi che sia utilizzabile.

    Se usiamo l’analogia delle auto a guida autonoma, i risultati sono più simili a un'assistenza alla guida che a una vera auto senza conducente.

  3. Miglioramento continuo: Man mano che un’organizzazione continua a utilizzare lo strumento regolarmente, i dati di addestramento aumentano, potenzialmente migliorando l’accuratezza e l’efficacia delle reti neurali già addestrate. In breve, il sistema di intelligenza artificiale continua ad apprendere e a migliorare.

Gli algoritmi di machine learning stanno rivoluzionando l’automazione dei test. Per trovare strumenti che incorporano questi algoritmi avanzati, esplora la nostra guida ai migliori strumenti di software testing

Applicazioni dell’IA nell’automazione dei test

Esaminiamo più da vicino alcune applicazioni dell’IA nell’automazione dei test, tra cui test unitari, test dell’interfaccia utente, test delle API e la manutenzione di una suite di test automatizzati.

Upgrade your inbox with more tech leadership wisdom for delivering better software and systems.

Upgrade your inbox with more tech leadership wisdom for delivering better software and systems.

This field is for validation purposes and should be left unchanged.
Name*

Creazione e aggiornamento dei test unitari

I test unitari, spesso utilizzati come parte del continuous testing, continuous integration/continuous delivery (CI / CD) nei processi DevOps, possono essere una vera scocciatura… come una cintura di asteroidi.

Tipicamente, gli sviluppatori passano molto tempo a scrivere e mantenere test unitari, un’attività di certo meno divertente che scrivere codice applicativo. In questo caso, i prodotti basati su IA per la creazione automatica dei test unitari possono essere utili, soprattutto per quelle organizzazioni che intendono introdurre test unitari in ritardo nel ciclo di vita del prodotto.

Vantaggi: 

  • I test unitari automatizzati basati su IA rappresentano un notevole passo avanti rispetto alla generazione di test unitari tramite modello, che usa analisi statica o dinamica. I test così generati sono vero codice, e non solo "stubs".
  • I test unitari prodotti tramite IA possono essere generati molto rapidamente, il che è utile per una base di codice esistente molto ampia.
  • Gli sviluppatori devono solo modificare i test e possono predisporre una suite di regressione unitaria in tempi relativamente brevi.

Limitazioni: 

  • I test unitari generati tramite IA semplicemente rispecchiano il codice su cui sono basati. Non sono ancora in grado di capire la funzionalità intesa del codice. Se il codice non si comporta come dovrebbe, il test unitario generato per quel codice rifletterà quel comportamento non voluto.

    Questo è un grande svantaggio, perché lo scopo dei test unitari è proprio quello di verificare ed imporre un contratto implicito o esplicito.
  • I test unitari generati tramite machine learning possono rompere test unitari funzionanti ed esistenti, ed è compito dello sviluppatore accertarsi che ciò non accada.
  • Gli sviluppatori devono scrivere autonomamente i test per le logiche di business complesse.

Test automatico dell'interfaccia utente 

Questo è un ambito in cui l’IA sta iniziando a farsi valere. Nel testing UI basato su IA, i tool di test automation analizzano il DOM e il codice correlato per determinare le proprietà degli oggetti. Vengono utilizzate anche tecniche di riconoscimento delle immagini per navigare nell’applicazione e verificare visivamente oggetti ed elementi UI così da generare i test dell’interfaccia utente.

Inoltre, i sistemi di test basati su IA sfruttano il testing esplorativo per trovare bug o variazioni nell’interfaccia utente dell’applicazione e generare screenshot per una successiva verifica da parte di un QA engineer. Allo stesso modo, anche gli aspetti visivi del System Under Test (SUT) come layout, dimensione e colore possono essere verificati.

Vantaggi:

  • I test automatici dell'interfaccia utente possono portare a una maggiore copertura del codice.
  • Le deviazioni minori nell'interfaccia utente non causano il fallimento della suite di test. I modelli AI dei prodotti possono gestirle.

Limitazioni:

  • Per qualsiasi applicazione moderna, il numero di piattaforme, versioni delle app e versioni dei browser è elevato. Non è chiaro quanto bene funzioni l'automazione UI basata su AI in queste condizioni. Tuttavia, gli strumenti di test cloud possono eseguire i test in parallelo, quindi sarà uno spazio interessante da tenere d'occhio!

Utilizzo dell’AI per assistere nel testing delle API

Anche senza l’AI, automatizzare il testing delle API è un compito non banale poiché richiede di comprendere le API e poi impostare i test per una moltitudine di scenari al fine di garantire sia la profondità che l’ampiezza della copertura.

Gli attuali strumenti di automazione dei test API, come Tricentis e SoapUI, registrano le attività e il traffico delle API per analizzare e creare i test. Tuttavia, modificare e aggiornare i test richiede ai tester di addentrarsi nei dettagli delle chiamate REST e dei parametri e poi aggiornare la suite di test API.

Gli strumenti di automazione dei test API basati su AI cercano di mitigare questo problema esaminando il traffico e identificando modelli e connessioni tra le chiamate API, raggruppandole di fatto per scenario. Gli strumenti utilizzano anche i test esistenti per apprendere le relazioni tra API, usandole per comprendere i cambiamenti e per aggiornare i test esistenti o crearne di nuovi basati su scenari. 

Vantaggi:

  • Per i tester principianti o per chi non ha esperienza di programmazione, questo potrebbe essere davvero utile per aiutarli a "partire subito con il piede giusto".

    Ancora una volta, la gestione delle modifiche sarebbe notevolmente più semplice dato che almeno parte dei cambiamenti alle API può essere gestita da uno strumento di automazione AI.

Limitazioni:

  • In generale, il testing delle API è difficile da impostare, e non molti strumenti offrono funzionalità basate su machine learning in questo ambito. Quelli che lo fanno sembrano avere capacità piuttosto rudimentali.

Manutenzione dei test automatici

Gli strumenti basati su AI possono valutare le modifiche al codice e correggere diversi test esistenti che non sono più allineati con queste modifiche, specialmente se tali cambiamenti non sono troppo complessi. Gli aggiornamenti agli elementi UI, ai nomi dei campi e simili non interromperanno più la suite di test.

Alcuni strumenti AI monitorano i test in esecuzione e provano varianti modificate per i test falliti scegliendo elementi dell’interfaccia utente in base alla migliore corrispondenza. Possono anche verificare la copertura dei test e integrare eventuali lacune se necessario. 

Generazione di dati di test basata su AI

La generazione di dati di test è un altro ambito promettente per i modelli AI. Il machine learning può facilmente generare set di dati, come fotografie di profili personali e informazioni come età e peso, basandosi su modelli di apprendimento automatico addestrati con set di dati di produzione esistenti. 

In questo modo, i dati di test generati sono molto simili ai dati di produzione, il che è ideale per l’uso nel collaudo del software. Il modello di machine learning che genera i dati è chiamato Generative Adversarial Network (GAN).

Strumenti di automazione dei test che usano il machine learning

Dai un’occhiata agli strumenti seguenti se cerchi software che utilizzi il machine learning per eseguire e monitorare i test automatici. Molti includono opzioni open source o senza codice per soddisfare le esigenze del tuo team di test.

Conclusione

L’intelligenza artificiale ha avuto un impatto significativo sugli strumenti e sui metodi di testing, e in particolare sull’automazione dei test. Una panoramica degli strumenti attuali che promettono AI mostra che, benché siano aggiunte molte nuove funzionalità, diverse di queste sono ancora lontane dalla piena maturità.

Se hai trovato utile questo articolo, iscriviti alla newsletter The QA Lead per restare aggiornato su tutte le novità del mondo del testing.