L’onda lunga dell’Intelligenza Artificiale investe anche il Testing Automation
Nell’era del DevOps si discute, spesso animatamente, sull’integrazione tra il mondo dei Dev(eloper) e degli Op(eration)s. L’enfasi è quasi sempre sull’automazione delle build, degli Unit Test, dei rilasci. Ma in un contesto dove i cicli di sviluppo diventano sempre più brevi, dove i rilasci direttamente in produzione sono il nuovo credo, il testing funzionale manuale rischia di diventare un collo di bottiglia.

D’altro canto, l’automazione dei test, che prevede comunque sviluppo e rilascio di script, dovrebbe rientrare a buon diritto nel ciclo, ma non trattandosi di sviluppo di funzionalità applicative, viene data per assunta e finisce spesso fuori dei piani. Il risultato è che diventa sempre più difficile mantenere script di automazione allineati con i rilasci applicativi, e un test non allineato è un test inutilizzabile. Senza dimenticare che tutte le fasi del SDLC (Software Development Life Cycle) andrebbero testate, ne consegue che laddove si parla di Continuous Development e Continuous Integration, bisognerebbe introdurre il concetto di Continuous Testing.

Il messaggio è che alla base del concetto di testing automation c’è un problema: chi li fa deve saper sviluppare. I tool per il testing automation sono talmente tanti oramai che esistono anche distribuzioni stile Anaconda con la pretesa di integrarli. La situazione oramai in QA è quella di una sorta di confine fumoso di DevOps, dove si sviluppano complicati test cases con insiemi di strumenti eterogenei come Cucumber, Jenkins, e persino linguaggi di scripting ad-hoc come Gherkin. Il problema è ora che servono sviluppatori per testare (non solo sviluppare) nuovo codice.
Ma se il DevOps ha la missione di integrare tutto il ciclo di sviluppo, come è possibile che il testing sia diventato un’altra fase di sviluppo? La ragione sta nel fatto che i framework e i tool utilizzati (primo fra tutti Selenium), non hanno al loro interno alcun genere di intelligenza. Ne consegue che, pur essendo molto efficaci nell’automatizzare, sono ottimi solo per uno sviluppatore.
La “Third Wave”, ovvero Intelligenza Artificiale e Continuous Testing
Oggi la maggior parte delle GUI (interfacce utente) sono sviluppate con Javascript e Node.js, e i test automatizzati vengono prevalentemente implementati con framework come Selenium e Appium. Il problema di questi approcci è che richiedono una grande quantità di scripting, sono spesso difficili da mantenere, e fanno fatica a tenere il passo con i continui cambiamenti che avvengono nei rilasci.
L’introduzione del Machine Learning nel testing automatizzato introduce alcuni punti cruciali:
- Generazione automatica: il principio di base non è differente da quello del “recording” di Selenium, con la differenza che in questo caso il tool genera un vero e proprio test step funzionale, direttamente eseguibile. Alcuni tool come Functionize rendono anche possibile la generazione di test eseguibili a partire da testbook in linguaggio naturale, tramite NLP.
- Self-Healing: uno dei concetti più innovativi di queste tecnologie è la capacità di adattare i test alle modifiche delle interfacce in modo autonomo. Nei casi più difficili (es: bottone che oltre a cambiare di posizione cambia anche dicitura) consentono all’utente di modificare il comportamento in modo immediato, a volte anche con un semplice click.
- No scripting: la generazione dei test avviene in modo trasparente, senza necessità di sviluppare alcun codice.
- Cross-browser e cross-device: i tool di ultima generazione consentono di creare test funzionanti su diverse piattaforme, requisito oramai irrinunciabile.
- Zero o minima manutenzione: grazie alla generazione automatica e al self-healing, diventa possibile creare test che rimangano al passo con gli sviluppi e i rilasci senza spargimenti di sangue.
Gli attori
Functionize
Functionize si presenta come la “prima piattaforma di testing completamente autonoma”. La feature più interessante è la creazione in modo autonomo di test a partire da una testlist scritta in linguaggio naturale (sotto), tramite NLP. I test vengono creati con tanto di screenshot cliccabili, la piattaforma si “adatta” all’applicazione tramite algoritmi di Machine Learning e diventa più robusta alle modifiche di layout col numero di esecuzioni. È possibile vedere una presentazione delle features più interessanti qui sotto.
Applitools
Il cavallo di battaglia di Applitools è quello che chiamano “Visual Validation Testing”, ovvero la capacità di validare interi layout emulando i processi visivi umani, senza alcun bisogno di calibrazione o configurazione. Il sistema si avvale di algoritmi adattivi di AI che sarebbero in grado di identificare entro certi livelli di confidenza anche potenziali bug di interfaccia, senza chiamare esplicitamente gli elementi da codice.

Altra rivendicazione interessante è quella di poter integrare la piattaforma con eventuali test già esistenti, grazie a una compatibilità particolarmente ampia di piattaforme e framework supportati.
Tricentis Tosca
“Test automation @ DevOps speed” è il motto di Tricentis, nella cui offerta spiccano Tosca per il testing automation e Flood per il performance testing.

Altri
Resources
How right are you in using AI Test Automation (qainfotech)
Reinvent Testing to Galvanize Digital Transformation (devops.com)
8 Innovative AI Test Automation Tools for the Future: The Third Wave (joecolantonio.com)
Marlabs and
How Machine Learning and AI Bring a New Dimension to Software Testing (towardsdatascience.com)
Artificial Intelligence – New Buzz in Automation Testing (xoriant)
Leveraging AI in Quality Assurance (infosys)
McKinsey: AI, jobs, and workforce automation (zdnet)
Top 10 Automation Testing Tools in 2018 (guru99)
Andrea lavora nel campo dell’IT da quasi 20 anni coprendo un po’ tutto, da sviluppo a business analysis, alla gestione di progetti.
Oggi possiamo dire che è uno gnomo spensierato, appassionato di Neuroscienze, Intelligenza Artificiale e fotografia.