Test automatici per snellire il processo di sviluppo di software
Prima di poter essere commercializzata, un’applicazione software deve essere pienamente convalidata, un processo che comporta costosi e approfonditi test. Sebbene esistano numerosi strumenti e metodi per eseguire automaticamente i test a livello di unità e di integrazione, il test di sistema resta un’operazione prettamente manuale, pertanto costituisce un costoso intralcio nel processo di sviluppo di un software. Per sopperire a ciò, il progetto AST finanziato dall’UE, con il supporto del Consiglio europeo della ricerca, ha sviluppato uno strumento pre-commerciale in grado di generare casi di prova per applicazioni software in modo efficiente ed automatico. «Attualmente gli ingegneri informatici trascorrono una notevole quantità di tempo a verificare la correttezza delle applicazioni da loro sviluppate e manutenute», afferma Leonardo Mariani, professore presso l’Università di Milano-Bicocca e coordinatore del progetto AST. «Convalidando velocemente diversi scenari, i casi di prova automatici consentiranno agli ingegneri di concentrare il proprio tempo sui casi più delicati che necessitano di verifica manuale».
Una soluzione di test automatici
Mediante la combinazione di una serie di tecniche diverse tra cui l’intelligenza artificiale, il progetto è riuscito a sviluppare una soluzione di test automatici. «La nostra soluzione per la generazione di test automatici utilizza l’apprendimento per rinforzo per apprendere progressivamente come si comporta il software sottoposto a test», spiega Mariani. «Sulla base di ciò che ha appreso, la soluzione migliora gradualmente l’efficacia dei test generati». Secondo Mariani, quando una soluzione viene eseguita in parallelo su più macchine, il processo di apprendimento diventa persino più veloce. «Ci siamo anche occupati di come ottenere automaticamente valori di ingresso significativi, ad esempio il nome di un indirizzo reale da inserire in un’applicazione», aggiunge. «Per fare ciò abbiamo creato una soluzione che riutilizza archivi di dati esistenti, quali le banche dati di test e di produzione, che solitamente sono disponibili all’interno di un’organizzazione».
Un buon inizio per l’automazione dei test
Quando la pandemia di Covid-19 ha scombussolato i lavori del progetto, il team si è riassestato velocemente, trovando il modo per accedere ai server e al software da remoto. «Lavorare da remoto e organizzare solo riunioni virtuali non è la stessa cosa che lavorare insieme fisicamente», osserva Mariani. «Tuttavia siamo riusciti a raggiungere l’obiettivo che ci eravamo prefissati, ovvero creare delle soluzioni tecnologiche in grado di generare in modo efficiente casi di prova per complesse applicazioni web». Sebbene lo strumento sviluppato da AST rappresenti un buon inizio per l’automazione dei test, c’è ancora molto lavoro da fare. Alla luce di ciò, il team del progetto sta attualmente potenziando lo strumento, affinché possa essere applicato a sistemi di software sempre più ampi e complessi. I ricercatori stanno inoltre lavorando per fare in modo che lo strumento sia in grado di riconoscere il crescente numero di problemi a cui potrebbero essere soggetti i software durante i test. «Abbiamo esteso la nostra base di conoscenze nel campo dell’automazione dei test, sviluppando strumenti che possono essere utilizzati sia per promuovere la ricerca nei test delle applicazioni web, sia per studiare l’applicazione industriale della generazione di casi di prova automatici», conclude Mariani.
Parole chiave
AST, software, sviluppo software, applicazioni software, ingegnere informatico, test di sistema, intelligenza artificiale, automazione test