Recentemente, uno studio ha evidenziato una criticità significativa nell’uso dell’intelligenza artificiale (AI) per la creazione di test di programmazione. Nonostante strumenti come ChatGPT e Copilot abbiano dimostrato buone capacità nel generare codice per algoritmi semplici, le loro prestazioni crollano quando si tratta di creare unit test, cioè test specifici per verificare il corretto funzionamento del codice di produzione.
Ad esempio, la correttezza dei test generati da ChatGPT è scesa al 38% per il linguaggio Java e al 29% per Python. Copilot ha ottenuto risultati solo leggermente migliori, con il 50% per Java e il 39% per Python. Questo problema è significativo, poiché la generazione di test automatizzati è uno dei principali casi d’uso dell’AI nello sviluppo software, come indicato da un sondaggio GitLab del 2023.
Una delle principali difficoltà per l’AI è la mancanza di contesto e comprensione delle sfumature specifiche del codice su cui deve lavorare. Questo porta spesso alla creazione di “test tautologici,” ovvero test che verificano semplicemente che il codice faccia quello che già fa, senza controllare se sta realmente risolvendo il problema previsto. Inoltre, affidarsi esclusivamente all’AI per la creazione di test può dare un falso senso di sicurezza, poiché questi test potrebbero non coprire tutti gli scenari critici, compromettendo la qualità del software.
Un altro problema è che l’AI tende a trattare il codice esistente come corretto, anche quando contiene bug. In questi casi, l’AI genera test che convalidano il comportamento errato del codice, anziché identificarne i difetti. Per migliorare l’efficacia dell’AI in questi compiti, alcuni ricercatori hanno sperimentato metodi come la memoria LangChain, che consiste nel fornire all’AI pezzi più piccoli di codice per aiutarla a completare il resto. Questo approccio ha portato a un significativo miglioramento del tasso di successo nella compilazione dei test.
Nonostante questi progressi, attualmente, è ancora fondamentale che un ingegnere esperto valuti la qualità e l’usabilità del codice o dei test generati dall’intelligenza artificiale. In futuro, con ulteriori sviluppi, potremmo vedere strumenti AI in grado di creare test unitari più efficaci e completi, ma per ora è necessario un controllo umano per garantire l’affidabilità del software.