La qualità del software per la qualità del business

VALUE PARTNER ZONE

18 Maggio 2022 alle 10:00

La qualità del software per la qualità del business

Top trends on Machine Learning, AI, Cloud & Micro servizi

FORMULA WEBINAR

Per informazioni: Kelen Zakelj
kelen.zakelj@soiel.it - 02 30453321

Smartesting

From Logs to Regression Tests using AI

Prof. Bruno Legeard - University of Franche-Comté / Smartesting / French Testing Board Julien Botella, Gravity Product Manager - Smartesting

Il ruolo dell'apprendimento automatico nel processo "logs to test" e i requisiti dei dati di input.
Il supporto e l'automazione di queste attività all'interno dello strumento Gravity si basano su due tipi di tecnologie, ovvero Machine Learning e Model-Based Testing, che costituiscono il core know-how di Smartesting. Esaminiamo queste tecnologie dedicando particolare attenzione alla qualità dei dati di input necessari per l'apprendimento automatico e gli algoritmi di generazione di test automatizzati.

I passi necessari:
1- Acquisizione dei dati e analisi dell'utilizzo - I dati di input sono costituiti da registri di produzione. Il problema principale che si incontra, raramente, è una possibile mancanza di precisione delle chiamate (per quanto riguarda ad esempio i valori dei dati). In generale, questi dati sono di buona qualità, provenienti da strumenti di monitoraggio delle applicazioni disponibili sul mercato, come Datadog, Splunk, Dynatrace o Kibana. L'integrazione con tali prodotti per estrarre i log è abbastanza semplice. Gli algoritmi di Machine Learning utilizzati sono principalmente il clustering, come KMeans, e il clustering gerarchico, ovvero algoritmi non supervisionati in grado di rilevare pattern e tracce di utilizzo all'interno di grandi sequenze di eventi di log.

2- Visualizzazione e copertura dei test - Gli algoritmi per visualizzare le tracce sotto forma di flussi di lavoro grafici (sequenze di azioni oppure chiamate API e microservizi) provengono da Model-Based Testing e si basano su calcoli di astrazioni e fattorizzazione di azioni/chiamate. Queste tecniche sono in grado di scalare, ovvero possono elaborare migliaia di tracce. Il completamento delle prove può essere effettuato selezionando le tracce da ricoprire. Stiamo anche sperimentando algoritmi di Deep Learning per questo scopo, provenienti da NLP (Natural Language Processing), in particolare algoritmi di rete di attenzione (come i "trasformatori").

3- Generazione di test (script, parole chiave, dati) - Le tecnologie qui utilizzate si basano ancora sul Model-Based Testing. È un filtraggio e una mappatura tra script esistenti, parole chiave (o raccolte Postman per test API) e passaggi di traccia. Ciò consente un'automazione superiore all'80% nella produzione di artefatti di automazione dei test. Nel caso dei test API, le specifiche Swagger sono un input prezioso per aumentare ulteriormente il grado di automazione (se queste specifiche sono sufficientemente dettagliate).

4- Assegnazione delle priorità all'esecuzione del test - L'assegnazione delle priorità è basata sull'apprendimento automatico, combinando l'apprendimento per rinforzo e gli algoritmi di apprendimento dell'albero decisionale. I dati di input per la fase di apprendimento e il calcolo delle priorità sono (1) la cronologia dei risultati dell'esecuzione, (2) le funzionalità del test (complessità, data dell'ultimo aggiornamento, tempo di esecuzione, ecc.) e (3) le funzionalità sulle modifiche eseguite sul software per una build (pacchetto modificato, granularità della modifica).