2025-11-12T23:04:10.380766

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

Informazioni di base

  • ID articolo: 2510.10179
  • Titolo: LLMs are All You Need? Improving Fuzz Testing for MOJO with Large Language Models
  • Autori: Linghan Huang, Peizhou Zhao, Huaming Chen (University of Sydney)
  • Classificazione: cs.SE (Ingegneria del Software), cs.AI (Intelligenza Artificiale)
  • Data di pubblicazione: 11 ottobre 2025 (preprint arXiv)
  • Link articolo: https://arxiv.org/abs/2510.10179

Riassunto

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.

Contesto della ricerca e motivazione

Problema centrale

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.

Importanza del problema

  1. 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
  2. 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
  3. Mancanza di framework di testing: Come linguaggio emergente, MOJO manca di framework di testing maturi, con errori software e vulnerabilità di sicurezza non scoperti

Limitazioni dei metodi esistenti

  1. I fuzz tester LLM tradizionali dipendono da grandi quantità di dati di training specifici del dominio, limitando l'applicazione ai linguaggi emergenti
  2. Problema delle allucinazioni del modello: In ambienti zero-shot, gli LLM tendono a generare codice sintatticamente corretto ma semanticamente errato
  3. Mancanza di specificità: Gli strumenti esistenti non sono ottimizzati specificamente per le caratteristiche del linguaggio MOJO

Motivazione della ricerca

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.

Contributi principali

  1. 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
  2. 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
  3. Strategia di mutazione adattiva: Regola dinamicamente i prompt LLM in base al feedback di runtime, realizzando un processo di apprendimento iterativo
  4. Scoperta di errori pratici: Scopre con successo 13 errori sconosciuti in MOJO, di cui 9 sono stati confermati e corretti dal team ufficiale
  5. 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

Spiegazione dettagliata del metodo

Definizione del compito

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

Architettura del modello

Framework generale

MOJOFuzzer adotta un'architettura multistadio che include i seguenti componenti principali:

  1. Fase di preparazione dei dati
    • Raccolta di circa 300 rapporti di errori e 1.500 campioni sintattici da GitHub e documentazione ufficiale
    • Pulizia e normalizzazione dei dati
  2. Fase di inizializzazione
    • Banca dei prompt (Prompt Bank): Memorizza modelli di prompt strutturati
    • Banca dei semi (Seed Bank): Gestisce la generazione e l'archiviazione dei semi di test
  3. Strategie di mutazione
    • Meccanismo di punteggio della mutazione: Calcola il punteggio in base al numero di chiamate API e alla complessità del codice
    • Mutazione parziale (Half Mutation): Mutazione a livello di codice per semi con punteggio elevato
    • Mutazione completa (Full Mutation): Mutazione a livello di prompt per semi con punteggio basso

Dettagli tecnici chiave

Formula di punteggio della mutazione:

S_mutation = N_API + C_complexity

Dove:

  • N_API: Numero di chiamate API
  • C_complexity: Punteggio di complessità del codice (basato sulla complessità temporale da O(1) a O(n³) con diversi punteggi assegnati)

Strategia di prompt engineering: Utilizza tecniche di chain-of-thought (CoT) e prompt basati su ruoli, includendo 5 componenti principali:

  1. Istruzioni di analisi sintattica
  2. Framework basato su ruoli
  3. Filtraggio automatico dei dati
  4. Riepilogo dei contenuti
  5. Generazione di semi di prompt

Strategia di fine-tuning

Utilizza il modello LLAMA2 13B per il fine-tuning in due fasi:

  1. Prima fase: Apprendimento della struttura del linguaggio basato sul dataset di sintassi MOJO
  2. Seconda fase: Apprendimento dei modelli di difetti basato sui record di errori storici

Punti di innovazione tecnica

  1. Adattabilità zero-shot: Prima implementazione efficace del fuzz testing LLM in assenza di grandi quantità di dati di training
  2. Meccanismo di mutazione a doppio livello: Combina mutazione a livello di codice e a livello di prompt, aumentando la diversità del testing
  3. Sistema di punteggio adattivo: Valuta dinamicamente la qualità dei semi, ottimizzando l'allocazione delle risorse
  4. Controllo della qualità multistadio: Filtra sistematicamente gli input di bassa qualità, riducendo il problema delle allucinazioni

Configurazione sperimentale

Dataset

  • Dati di sintassi MOJO: Circa 1.500 regole sintattiche ed esempi di codice
  • Rapporti di errori storici: Circa 300 record di errori da GitHub
  • Ambiente di testing: Compilatore e runtime di MOJO

Metriche di valutazione

  1. Numero di programmi validi unici: Proporzione di programmi di test sintatticamente e semanticamente corretti
  2. Efficienza della mutazione: Miglioramenti nella diversità del testing, validità e capacità di rilevamento degli errori
  3. Copertura delle API: Numero di funzioni API MOJO univoche chiamate durante il testing
  4. Numero di errori rilevati: Numero di difetti software distinti scoperti

Metodi di confronto

  • Metodo tradizionale: MojoCoder
  • Fuzz tester LLM: Fuzz4All, TitanFuzz
  • LLM generici: GPT-4o, LLAMA3-8B, LLAMA2-7B

Dettagli di implementazione

  • Piattaforma hardware: NVIDIA A6000 Ada
  • Tecnica di fine-tuning: LoRA (Low-Rank Adaptation)
  • Numero massimo di iterazioni: 10 cicli
  • Soglia di mutazione: Punteggio 50 come punto di separazione tra mutazione parziale e completa

Risultati sperimentali

Risultati principali

Confronto della copertura delle API

ModelloCopertura API
MOJOFuzzer77,3%
MojoCoder con fine-tuning68,2%
Fuzz4All37,8%
TitanFuzz17,2%
GPT-4o25,6%

Tasso di generazione di programmi validi

ModelloTasso di validità
MOJOFuzzer98%
Mojo-Coder-it 7B66,4%
GPT-4o~25%
LLaMA3-8B~10%
LLaMA2-7B~10%

Capacità di rilevamento degli errori

  • Errori totali scoperti: 13 errori sconosciuti
  • Errori confermati e corretti: 9 errori confermati dal team MOJO e corretti
  • Tipi di errori: Includono difetti del generatore di numeri casuali, problemi di integrazione della libreria Python, ecc.

Esperimenti di ablazione

La ricerca di ablazione valuta il contributo di tre componenti chiave:

Configurazione componentiTasso di allucinazioneTasso di codice validoCorrettezza semantica
Baseline40%60%50%
Solo prompt engineering (PE)28%75%65%
Solo fine-tuning (FT)15%88%78%
Solo mutazione parziale (HM)35%68%55%
PE + FT8%95%88%
PE + FT + HM (completo)5%98%90%

Analisi dei casi

Esempi di errori chiave scoperti:

  1. Errore del generatore di numeri casuali:
    • Le funzioni random_si64, random_float64, random_ui64 restituiscono sempre valori fissi
    • Influisce sulla correttezza della generazione di numeri casuali
  2. Errore di integrazione della libreria Python:
    • Errore di recupero del modulo quando si chiamano funzioni numpy
    • Rivela errori logici sottostanti nell'integrazione di MOJO con le librerie Python

Scoperte sperimentali

  1. Ruolo critico del fine-tuning: Il fine-tuning è il singolo fattore più efficace per ridurre il problema delle allucinazioni
  2. Effetto sinergico dei componenti: I tre componenti combinati producono i migliori risultati
  3. Fattibilità dell'apprendimento zero-shot: Dimostra la possibilità di condurre test efficaci in assenza di grandi quantità di dati di training

Lavori correlati

Sviluppo del fuzz testing basato su LLM

  1. Fuzz tester basati su LLM: TitanFuzz, ChatAFL, Fuzz4All e altri utilizzano LLM per migliorare la generazione e la mutazione dei semi
  2. Fuzz tester con fine-tuning: FuzzGPT e altri migliorano l'efficacia attraverso il fine-tuning con dati specifici del dominio
  3. Fuzz testing tradizionale: Limitazioni di strumenti tradizionali come OSS-Fuzz su linguaggi emergenti

Vantaggi di questo articolo

Rispetto ai lavori esistenti, i principali vantaggi di MOJOFuzzer sono:

  1. Capacità zero-shot: Nessuna necessità di grandi quantità di dati di pre-training
  2. Mutazione a doppio livello: Mutazione simultanea a livello di codice e di prompt
  3. Meccanismo adattivo: Regolazione dinamica della strategia in base al feedback di runtime

Conclusioni e discussione

Conclusioni principali

  1. MOJOFuzzer affronta con successo la sfida del fuzz testing per linguaggi di programmazione emergenti
  2. Il fuzz testing LLM zero-shot è fattibile nelle applicazioni pratiche
  3. L'approccio che combina fine-tuning, prompt engineering e mutazione adattiva supera significativamente le tecniche singole

Limitazioni

  1. Minaccia di validità temporale: Con l'integrazione graduale della conoscenza di MOJO nei LLM avanzati, il vantaggio zero-shot potrebbe diminuire
  2. Dipendenza dai dati: Richiede ancora una quantità minima di regole sintattiche e rapporti di errori
  3. Requisiti di risorse computazionali: Il processo di fine-tuning e inferenza richiede risorse computazionali significative

Direzioni future

  1. Testing completamente automatizzato: Sviluppo verso il fuzz testing completamente automatizzato
  2. Più linguaggi emergenti: Estensione del metodo ad altri linguaggi di programmazione emergenti
  3. Ottimizzazione del dataset di pre-training: Ricerca su come utilizzare meglio i dati di training limitati

Valutazione approfondita

Punti di forza

  1. Forte innovatività: Primo framework di fuzz testing LLM zero-shot per linguaggi emergenti
  2. Alto valore pratico: Scoperta di 13 errori reali, dimostrando l'efficacia del metodo
  3. Soluzione tecnica completa: Pipeline completa dalla raccolta dei dati al rilevamento degli errori
  4. Esperimenti sufficienti: Include esperimenti di confronto completi e ricerca di ablazione
  5. Scrittura chiara: Descrizione accurata dei dettagli tecnici, design sperimentale ragionevole

Insufficienze

  1. Ambito di valutazione limitato: Principalmente focalizzato sul linguaggio MOJO, capacità di generalizzazione da verificare
  2. Confronto dei baseline: Alcuni metodi baseline potrebbero non essere scelte ottimali
  3. Validità a lungo termine: Con la maturazione dell'ecosistema MOJO, il vantaggio del metodo potrebbe diminuire
  4. Analisi dei costi computazionali: Manca un'analisi dettagliata del consumo di risorse computazionali

Impatto

  1. Contributo accademico: Fornisce una base metodologica importante per il testing dei linguaggi emergenti
  2. Valore pratico: Aiuta direttamente il miglioramento del linguaggio MOJO, con impatto immediato
  3. Riproducibilità: Gli autori si impegnano a rendere open-source il codice e i dati, facilitando la ricerca successiva
  4. Promozione del settore: Potrebbe catalizzare più metodi di testing dell'IA per tecnologie emergenti

Scenari applicabili

  1. Linguaggi di programmazione emergenti: Linguaggi di programmazione privi di framework di testing maturi
  2. Ambienti di testing zero-shot: Scenari di testing con dati di training scarsi
  3. Testing di sistemi IA: Ambienti di sviluppo dell'IA che richiedono strumenti di testing efficienti
  4. Sistemi critici per la sicurezza: Applicazioni critiche che richiedono la scoperta di errori potenziali

Bibliografia

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.