LLMs are All You Need? Improving Fuzz Testing for MOJO with Large Language Models
Huang, Zhao, Chen
The rapid development of large language models (LLMs) has revolutionized software testing, particularly fuzz testing, by automating the generation of diverse and effective test inputs. This advancement holds great promise for improving software reliability. Meanwhile, the introduction of MOJO, a high-performance AI programming language blending Python's usability with the efficiency of C and C++, presents new opportunities to enhance AI model scalability and programmability. However, as a new language, MOJO lacks comprehensive testing frameworks and a sufficient corpus for LLM-based testing, which exacerbates model hallucination. In this case, LLMs will generate syntactically valid but semantically incorrect code, significantly reducing the effectiveness of fuzz testing. To address this challenge, we propose MOJOFuzzer, the first adaptive LLM-based fuzzing framework designed for zero-shot learning environments of emerging programming languages. MOJOFuzzer integrates a mutil-phase framework that systematically eliminates low-quality generated inputs before execution, significantly improving test case validity. Furthermore, MOJOFuzzer dynamically adapts LLM prompts based on runtime feedback for test case mutation, enabling an iterative learning process that continuously enhances fuzzing efficiency and bug detection performance. Our experimental results demonstrate that MOJOFuzzer significantly enhances test validity, API coverage, and bug detection performance, outperforming traditional fuzz testing and state-of-the-art LLM-based fuzzing approaches. Using MOJOFuzzer, we have conducted a first large-scale fuzz testing evaluation of MOJO, uncorvering 13 previous unknown bugs. This study not only advances the field of LLM-driven software testing but also establishes a foundational methodology for leveraging LLMs in the testing of emerging programming languages.
academic
I modelli linguistici di grandi dimensioni sono tutto ciò di cui hai bisogno? Migliorare il Fuzz Testing per MOJO con modelli linguistici di grandi dimensioni
Lo sviluppo rapido dei modelli linguistici di grandi dimensioni (LLM) ha rivoluzionato il testing del software, in particolare il fuzz testing, attraverso la generazione automatica di input di test diversificati ed efficaci. Contemporaneamente, l'introduzione di MOJO come linguaggio di programmazione ad alte prestazioni per l'IA che combina la facilità d'uso di Python con l'efficienza di C/C++ offre nuove opportunità per migliorare la scalabilità e la programmabilità dei modelli di IA. Tuttavia, come linguaggio emergente, MOJO manca di framework di testing completi e di un corpus di training LLM adeguato, il che aggrava il problema delle allucinazioni del modello. Per affrontare questa sfida, il presente articolo propone MOJOFuzzer, il primo framework di fuzz testing LLM adattivo progettato specificamente per ambienti di apprendimento zero-shot in linguaggi di programmazione emergenti. I risultati sperimentali dimostrano che MOJOFuzzer supera significativamente il fuzz testing tradizionale e i metodi di fuzz testing basati su LLM all'avanguardia in termini di efficacia del testing, copertura delle API e prestazioni di rilevamento degli errori, scoprendo con successo 13 errori sconosciuti in MOJO.
Il problema centrale affrontato da questa ricerca è la sfida del fuzz testing per linguaggi di programmazione emergenti, in particolare come condurre test efficaci in ambienti di apprendimento zero-shot privi di dati di training sufficienti.
Esigenze dello sviluppo dell'IA: Con l'ampia applicazione dell'IA in settori critici come la guida autonoma, la diagnostica medica e i servizi finanziari, è necessario un linguaggio di programmazione efficiente
Potenziale del linguaggio MOJO: MOJO può realizzare miglioramenti di prestazioni fino a 68.000 volte più veloci di Python, rendendolo uno strumento importante per lo sviluppo dell'IA
Mancanza di framework di testing: Come linguaggio emergente, MOJO manca di framework di testing maturi, con errori software e vulnerabilità di sicurezza non scoperti
Sviluppare il primo framework di fuzz testing LLM specificamente progettato per il linguaggio MOJO, implementando un rilevamento efficace degli errori in ambienti di apprendimento zero-shot attraverso tecniche innovative di prompt engineering e fine-tuning.
Framework di fuzz testing LLM zero-shot pioneristico: MOJOFuzzer è il primo framework di fuzz testing guidato da LLM progettato per ambienti di apprendimento zero-shot, che mitiga efficacemente il problema delle allucinazioni LLM
Meccanismo di controllo della qualità multistadio: Integra un meccanismo sistematico di filtraggio degli input di bassa qualità, migliorando significativamente la validità dei casi di test
Strategia di mutazione adattiva: Regola dinamicamente i prompt LLM in base al feedback di runtime, realizzando un processo di apprendimento iterativo
Scoperta di errori pratici: Scopre con successo 13 errori sconosciuti in MOJO, di cui 9 sono stati confermati e corretti dal team ufficiale
Miglioramento significativo delle prestazioni: Supera significativamente i metodi esistenti in termini di validità del testing (98%), copertura delle API (77,3%) e capacità di rilevamento degli errori
Input: Ambiente del linguaggio di programmazione MOJO e regole sintattiche limitate, rapporti di errori storici
Output: Casi di test validi in grado di attivare errori in MOJO
Vincoli: Ambiente di apprendimento zero-shot, nessun grande dataset di training specifico per MOJO
L'articolo cita 58 lavori correlati, coprendo importanti ricerche in più campi inclusi LLM, fuzz testing e ingegneria del software, fornendo una base teorica solida per la ricerca.
Valutazione complessiva: Questo è un articolo di ricerca di alta qualità nell'ingegneria del software che propone una soluzione innovativa a problemi pratici, con design sperimentale rigoroso e risultati convincenti. Questo lavoro non solo rappresenta un progresso tecnico, ma più importante ancora, fornisce una metodologia fattibile per il testing di tecnologie emergenti, con significativo valore accademico e pratico.