Contesto
Nel contesto dello sviluppo software in cloud su Amazon Web Services (AWS), l'adozione delle pratiche DevOps tramite servizi come AWS CodePipeline rappresenta un approccio fondamentale per garantire Continuous Integration e Continuous Delivery, soddisfacendo standard elevati di qualità del software. Tuttavia, l'integrazione di test automatizzati all'interno delle pipeline può essere complessa, specialmente quando si cerca di generare test esaustivi, di alta qualità e con una buona copertura complessiva. In risposta a questa sfida, questa esperienza propone l'uso di tecniche di generazione di test guidate dall'intelligenza artificiale (IA) all'interno di pipeline DevOps su AWS CodePipeline, seguite da una fase di approvazione manuale per i test generati.
Obiettivi
L'obiettivo principale di questo studio è quello di esplorare l’utilizzo dell’IA per generare test automatici al fine di ottimizzare tali pratiche, migliorando la qualità del software e accelerando i cicli di rilascio. La ricerca si basa sulla realizzazione di una pipeline con AWS CodePipeline che dovrà contenere tutte le fasi SDLC tipiche (source, build, test e deploy), identificando la fase di generazione dei test automatici come un'opportunità chiave per introdurre tecniche di generazione di test guidate dall'IA. L’infrastruttura necessaria verrà realizzata mediante AWS CloudFormation, un servizio AWS di Infrastructure as Code (IaC).
La sperimentazione sarà particolarmente focalizzata su architetture a microservizi (Java, Spring Boot) che forniranno la base sorgente per l'obiettivo di tesi: l'approccio proposto prevede l'utilizzo di strumenti di IA come OpenAI o soluzioni personalizzate, integrati nell'architettura della pipeline stessa, per generare test automatici. Successivamente, i test generati verranno sottoposti a una fase di approvazione per valutarne la qualità, la pertinenza e l'adeguatezza, tali da garantire un controllo qualitativo sulle suite di test generate. I risultati di questa ricerca dovranno dimostrare il potenziale delle tecniche di generazione di test guidate dall'IA nel migliorare la qualità del software, la produttività nello sviluppo e nel rilascio di nuove componenti, sfruttando appieno le pratiche DevOps.
Tecnologie
AWS, AWS CodePipeline, AWS CloudFormation, AWS SAM, OpenAI, Java, Spring Boot.