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

Les LLM sont-ils tout ce dont vous avez besoin ? Amélioration des tests de fuzzing pour MOJO avec les grands modèles de langage

Informations de base

  • ID de l'article : 2510.10179
  • Titre : LLMs are All You Need? Improving Fuzz Testing for MOJO with Large Language Models
  • Auteurs : Linghan Huang, Peizhou Zhao, Huaming Chen (Université de Sydney)
  • Classification : cs.SE (Génie logiciel), cs.AI (Intelligence artificielle)
  • Date de publication : 11 octobre 2025 (prépublication arXiv)
  • Lien de l'article : https://arxiv.org/abs/2510.10179

Résumé

Le développement rapide des grands modèles de langage (LLM) a révolutionné les tests logiciels, en particulier les tests de fuzzing, en générant automatiquement des entrées de test diversifiées et efficaces. Parallèlement, l'introduction de MOJO, un langage de programmation haute performance pour l'IA qui fusionne la facilité d'utilisation de Python avec l'efficacité du C/C++, offre de nouvelles opportunités pour améliorer l'extensibilité et la programmabilité des modèles d'IA. Cependant, en tant que langage émergent, MOJO manque d'un cadre de test complet et de corpus d'entraînement LLM suffisant, ce qui aggrave le problème des hallucinations du modèle. Pour relever ce défi, cet article propose MOJOFuzzer, le premier cadre de fuzzing LLM adaptatif conçu pour l'apprentissage sans exemple dans les langages de programmation émergents. Les résultats expérimentaux montrent que MOJOFuzzer surpasse considérablement les tests de fuzzing traditionnels et les méthodes de fuzzing basées sur les LLM de pointe en termes d'efficacité des tests, de couverture des API et de performance de détection des erreurs, découvrant avec succès 13 erreurs inconnues dans MOJO.

Contexte et motivation de la recherche

Problème fondamental

Le problème fondamental que cette recherche vise à résoudre est le défi des tests de fuzzing pour les langages de programmation émergents, en particulier comment effectuer des tests efficaces dans un environnement d'apprentissage sans exemple où les données d'entraînement sont insuffisantes.

Importance du problème

  1. Besoins du développement de l'IA : Avec l'application généralisée de l'IA dans les domaines critiques tels que la conduite autonome, le diagnostic médical et les services financiers, des langages de programmation efficaces sont nécessaires
  2. Potentiel du langage MOJO : MOJO peut réaliser une amélioration de performance 68 000 fois plus rapide que Python, ce qui en fait un outil important pour le développement de l'IA
  3. Absence de cadre de test : En tant que langage émergent, MOJO manque d'un cadre de test mature, avec des erreurs logicielles et des vulnérabilités de sécurité non découvertes

Limitations des méthodes existantes

  1. Les testeurs de fuzzing LLM traditionnels dépendent de grandes quantités de données d'entraînement spécifiques au domaine, ce qui limite leur application aux langages émergents
  2. Problème des hallucinations du modèle : Dans un environnement sans exemple, les LLM génèrent facilement du code syntaxiquement correct mais sémantiquement erroné
  3. Manque de spécificité : Les outils existants n'ont pas été optimisés spécifiquement pour les caractéristiques du langage MOJO

Motivation de la recherche

Développer le premier cadre de fuzzing LLM spécialement conçu pour le langage MOJO, en utilisant des techniques innovantes d'ingénierie des invites et d'ajustement fin, pour réaliser une détection d'erreurs efficace dans un environnement d'apprentissage sans exemple.

Contributions principales

  1. Premier cadre de fuzzing LLM sans exemple : MOJOFuzzer est le premier cadre de fuzzing basé sur LLM conçu pour un environnement d'apprentissage sans exemple, atténuant efficacement le problème des hallucinations des LLM
  2. Mécanisme de contrôle de qualité multi-étapes : Intègre un mécanisme systématique de filtrage des entrées de faible qualité, améliorant considérablement la validité des cas de test
  3. Stratégie de mutation adaptative : Ajuste dynamiquement les invites LLM en fonction des retours d'exécution, réalisant un processus d'apprentissage itératif
  4. Découverte d'erreurs pratiques : Découverte avec succès de 13 erreurs inconnues dans MOJO, dont 9 ont été confirmées et corrigées par l'équipe officielle
  5. Amélioration significative des performances : Surpasse considérablement les méthodes existantes en termes de validité des tests (98%), de couverture des API (77,3%) et de capacité de détection des erreurs

Explication détaillée de la méthode

Définition de la tâche

Entrée : Environnement du langage de programmation MOJO et règles syntaxiques limitées, rapports d'erreurs historiques Sortie : Cas de test valides capables de déclencher des erreurs dans MOJO Contraintes : Environnement d'apprentissage sans exemple, sans données d'entraînement spécifiques à MOJO en grande quantité

Architecture du modèle

Cadre global

MOJOFuzzer adopte une architecture multi-étapes, comprenant les composants principaux suivants :

  1. Phase de préparation des données
    • Collecte d'environ 300 rapports d'erreurs et 1 500 exemples de syntaxe à partir de GitHub et de la documentation officielle
    • Nettoyage et normalisation des données
  2. Phase d'initialisation
    • Banque d'invites (Prompt Bank) : Stocke les modèles d'invites structurés
    • Banque de semences (Seed Bank) : Gère la génération et le stockage des semences de test
  3. Stratégies de mutation
    • Mécanisme de notation de mutation : Calcule les scores en fonction du nombre d'appels API et de la complexité du code
    • Mutation partielle (Half Mutation) : Mutation au niveau du code pour les semences à score élevé
    • Mutation complète (Full Mutation) : Mutation au niveau de l'invite pour les semences à score faible

Détails techniques clés

Formule de notation de mutation :

S_mutation = N_API + C_complexity

Où :

  • N_API : Nombre d'appels API
  • C_complexity : Score de complexité du code (basé sur la complexité temporelle O(1) à O(n³) avec des scores différents attribués)

Stratégie d'ingénierie des invites : Utilise les techniques de chaîne de pensée (CoT) et d'invite basée sur les rôles, comprenant 5 composants principaux :

  1. Instructions d'analyse syntaxique
  2. Cadre basé sur les rôles
  3. Filtrage automatique des données
  4. Résumé du contenu
  5. Génération de semences d'invite

Stratégie d'ajustement fin

Utilise le modèle LLAMA2 13B pour un ajustement fin en deux étapes :

  1. Première étape : Apprentissage de la structure du langage basé sur l'ensemble de données de syntaxe MOJO
  2. Deuxième étape : Apprentissage des modèles de défauts basé sur les enregistrements d'erreurs historiques

Points d'innovation technique

  1. Adaptabilité sans exemple : Première réalisation d'un fuzzing LLM efficace en l'absence de grandes quantités de données d'entraînement
  2. Mécanisme de mutation double couche : Combine la mutation au niveau du code et au niveau de l'invite, améliorant la diversité des tests
  3. Système de notation adaptatif : Évalue dynamiquement la qualité des semences, optimisant l'allocation des ressources
  4. Contrôle de qualité multi-étapes : Filtre systématiquement les entrées de faible qualité, réduisant les problèmes d'hallucination

Configuration expérimentale

Ensemble de données

  • Données de syntaxe MOJO : Environ 1 500 règles de syntaxe et exemples de code
  • Rapports d'erreurs historiques : Environ 300 enregistrements d'erreurs provenant de GitHub
  • Environnement de test : Compilateur et environnement d'exécution MOJO

Métriques d'évaluation

  1. Nombre de programmes valides uniques : Proportion de programmes de test syntaxiquement et sémantiquement corrects
  2. Efficacité de mutation : Amélioration de la diversité des tests, de la validité et de la capacité de détection des erreurs
  3. Couverture des API : Nombre de fonctions API MOJO uniques appelées pendant les tests
  4. Nombre d'erreurs détectées : Nombre de défauts logiciels distincts découverts

Méthodes de comparaison

  • Méthode traditionnelle : MojoCoder
  • Testeurs de fuzzing LLM : Fuzz4All, TitanFuzz
  • LLM généralistes : GPT-4o, LLAMA3-8B, LLAMA2-7B

Détails de mise en œuvre

  • Plateforme matérielle : NVIDIA A6000 Ada
  • Technique d'ajustement fin : LoRA (Low-Rank Adaptation)
  • Nombre maximum d'itérations : 10 tours
  • Seuil de mutation : Score 50 comme point de démarcation entre mutation partielle/complète

Résultats expérimentaux

Résultats principaux

Comparaison de la couverture des API

ModèleCouverture des API
MOJOFuzzer77,3%
MojoCoder affiné68,2%
Fuzz4All37,8%
TitanFuzz17,2%
GPT-4o25,6%

Taux de génération de programmes valides

ModèleTaux de programmes valides
MOJOFuzzer98%
Mojo-Coder-it 7B66,4%
GPT-4o~25%
LLaMA3-8B~10%
LLaMA2-7B~10%

Capacité de détection des erreurs

  • Erreurs totales découvertes : 13 erreurs inconnues
  • Erreurs confirmées et corrigées : 9 erreurs confirmées et corrigées par l'équipe MOJO
  • Types d'erreurs : Incluent les défauts du générateur de nombres aléatoires, les problèmes d'intégration de la bibliothèque Python, etc.

Études d'ablation

L'étude d'ablation évalue la contribution de trois composants clés :

Configuration des composantsTaux d'hallucinationTaux de code valideCorrection sémantique
Ligne de base40%60%50%
Ingénierie des invites uniquement (PE)28%75%65%
Ajustement fin uniquement (FT)15%88%78%
Mutation partielle uniquement (HM)35%68%55%
PE + FT8%95%88%
PE + FT + HM (tous)5%98%90%

Analyse de cas

Exemples d'erreurs clés découvertes :

  1. Erreur du générateur de nombres aléatoires :
    • Les fonctions random_si64, random_float64, random_ui64 retournent toujours des valeurs fixes
    • Affecte la correction de la génération de nombres aléatoires
  2. Erreur d'intégration de la bibliothèque Python :
    • Échec de l'obtention du module lors de l'appel de fonctions numpy
    • Indique une erreur de logique sous-jacente dans l'intégration de MOJO avec les bibliothèques Python

Découvertes expérimentales

  1. Rôle critique de l'ajustement fin : L'ajustement fin est le facteur unique le plus efficace pour réduire les problèmes d'hallucination
  2. Effet synergique des composants : Les trois composants combinés produisent les meilleurs résultats
  3. Faisabilité de l'apprentissage sans exemple : Démontre la possibilité d'effectuer des tests efficaces en l'absence de grandes quantités de données d'entraînement

Travaux connexes

Développement du fuzzing basé sur LLM

  1. Testeurs de fuzzing basés sur LLM : TitanFuzz, ChatAFL, Fuzz4All, etc. utilisent les LLM pour améliorer la génération et la mutation des semences
  2. Testeurs de fuzzing affinés : FuzzGPT et autres améliorent les résultats par ajustement fin avec des données spécifiques au domaine
  3. Fuzzing traditionnel : Les limitations des outils traditionnels comme OSS-Fuzz sur les langages émergents

Avantages de cet article

Par rapport aux travaux existants, les principaux avantages de MOJOFuzzer sont :

  1. Capacité sans exemple : Pas besoin de grandes quantités de données préentraînées
  2. Mutation double couche : Mutation simultanée au niveau du code et de l'invite
  3. Mécanisme adaptatif : Ajustement dynamique de la stratégie en fonction des retours d'exécution

Conclusion et discussion

Conclusions principales

  1. MOJOFuzzer résout avec succès les défis des tests de fuzzing pour les langages de programmation émergents
  2. Le fuzzing LLM sans exemple est réalisable dans les applications pratiques
  3. La méthode combinant ajustement fin, ingénierie des invites et mutation adaptative surpasse considérablement les techniques isolées

Limitations

  1. Menace de validité temporelle : À mesure que les LLM avancés intègrent progressivement les connaissances MOJO, l'avantage sans exemple peut diminuer
  2. Dépendance aux données : Nécessite toujours une quantité minimale de règles syntaxiques et de rapports d'erreurs
  3. Exigences en ressources de calcul : Le processus d'ajustement fin et d'inférence nécessite des ressources de calcul considérables

Directions futures

  1. Tests entièrement automatisés : Évolution vers un fuzzing entièrement automatisé
  2. Langages émergents supplémentaires : Extension de la méthode à d'autres langages de programmation émergents
  3. Optimisation des ensembles de données préentraînés : Recherche sur la meilleure utilisation des données d'entraînement limitées

Évaluation approfondie

Points forts

  1. Innovation forte : Premier cadre de fuzzing LLM sans exemple pour les langages émergents
  2. Valeur pratique élevée : Découverte avec succès de 13 erreurs réelles, prouvant l'efficacité de la méthode
  3. Solution technique complète : Pipeline complet de la collecte de données à la détection des erreurs
  4. Expériences complètes : Comprend des expériences de comparaison complètes et des études d'ablation
  5. Rédaction claire : Description précise des détails techniques, conception expérimentale rationnelle

Insuffisances

  1. Portée d'évaluation limitée : Principalement axée sur le langage MOJO, la capacité de généralisation reste à vérifier
  2. Comparaison des lignes de base : Certaines méthodes de base pourraient ne pas être optimales
  3. Validité à long terme : À mesure que l'écosystème MOJO mûrit, les avantages de la méthode pourraient diminuer
  4. Analyse des coûts de calcul : Manque d'analyse détaillée de la consommation de ressources informatiques

Impact

  1. Contribution académique : Fournit une base méthodologique importante pour les tests de langages émergents
  2. Valeur pratique : Aide directement à l'amélioration du langage MOJO, avec un impact immédiat
  3. Reproductibilité : Les auteurs s'engagent à ouvrir le code et les données, favorisant les recherches futures
  4. Avancement du domaine : Peut catalyser davantage de méthodes de test d'IA pour les technologies émergentes

Scénarios d'application

  1. Langages de programmation émergents : Langages de programmation manquant de cadres de test matures
  2. Environnements de test sans exemple : Scénarios de test où les données d'entraînement sont rares
  3. Tests de systèmes d'IA : Environnements de développement d'IA nécessitant des outils de test efficaces
  4. Systèmes critiques pour la sécurité : Applications critiques nécessitant la découverte d'erreurs potentielles

Références

L'article cite 58 références connexes, couvrant des travaux importants dans plusieurs domaines tels que les LLM, le fuzzing et l'ingénierie logicielle, fournissant une base théorique solide pour la recherche.


Évaluation globale : Cet article est une recherche de haute qualité en génie logiciel qui propose une solution innovante à un problème pratique, avec une conception expérimentale rigoureuse et des résultats convaincants. Ce travail non seulement fait une percée technologique, mais plus important encore, fournit une méthodologie viable pour les tests de technologies émergentes, ayant une valeur académique et pratique importante.