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
LLMs sind alles, was Sie brauchen? Verbesserung des Fuzz-Testings für MOJO mit großen Sprachmodellen
Die schnelle Entwicklung großer Sprachmodelle (LLMs) hat das Softwaretesten, insbesondere das Fuzz-Testing, durch die automatische Generierung vielfältiger und effektiver Testeingaben revolutioniert. Gleichzeitig bietet die Einführung von MOJO, einer hochperformanten KI-Programmiersprache, die die Benutzerfreundlichkeit von Python mit der Effizienz von C/C++ verbindet, neue Möglichkeiten zur Verbesserung der Skalierbarkeit und Programmierbarkeit von KI-Modellen. Als neue Sprache mangelt es MOJO jedoch an umfassenden Test-Frameworks und ausreichenden LLM-Trainingsdaten, was das Problem der Modellhalluziationen verschärft. Um diese Herausforderung zu bewältigen, wird MOJOFuzzer vorgestellt – das erste adaptive LLM-Fuzz-Testing-Framework, das speziell für Zero-Shot-Learning-Umgebungen neuer Programmiersprachen entwickelt wurde. Die experimentellen Ergebnisse zeigen, dass MOJOFuzzer traditionelle Fuzz-Testing- und modernste LLM-basierte Fuzz-Testing-Methoden in Bezug auf Test-Effektivität, API-Abdeckung und Fehlererkennungsleistung erheblich übertrifft und erfolgreich 13 unbekannte Fehler in MOJO entdeckt hat.
Das Kernproblem dieser Forschung ist die Herausforderung des Fuzz-Testings für neue Programmiersprachen, insbesondere wie effektives Testen in Zero-Shot-Learning-Umgebungen ohne ausreichende Trainingsdaten durchgeführt werden kann.
KI-Entwicklungsanforderungen: Mit der weit verbreiteten Anwendung von KI in kritischen Bereichen wie autonomes Fahren, medizinische Diagnostik und Finanzdienstleistungen werden effiziente Programmiersprachen benötigt
MOJO-Sprachenpotenzial: MOJO kann eine Leistungssteigerung um das 68.000-fache gegenüber Python erreichen und ist ein wichtiges Werkzeug für die KI-Entwicklung
Fehlende Test-Frameworks: Als neue Sprache mangelt es MOJO an ausgereiften Test-Frameworks, mit unentdeckten Softwarefehlern und Sicherheitslücken
Praktische Relevanz: Die Notwendigkeit, neue Programmiersprachen schnell und zuverlässig zu testen
Entwicklung des ersten LLM-Fuzz-Testing-Frameworks speziell für die MOJO-Sprache, das durch innovative Prompt-Engineering- und Fine-Tuning-Techniken effektive Fehlererkennung in Zero-Shot-Learning-Umgebungen ermöglicht.
Erstes Zero-Shot-LLM-Fuzz-Testing-Framework: MOJOFuzzer ist das erste LLM-gesteuerte Fuzz-Testing-Framework, das speziell für Zero-Shot-Learning-Umgebungen entwickelt wurde und das LLM-Halluziationsproblem effektiv lindert
Mehrstufiger Qualitätskontrollmechanismus: Integriert systematische Filtermechanismen für minderwertige Eingaben und erhöht die Effektivität von Testfällen erheblich
Adaptive Mutationsstrategie: Passt LLM-Prompts basierend auf Laufzeit-Feedback dynamisch an und ermöglicht iterative Lernprozesse
Praktische Fehlererkennung: Entdeckt erfolgreich 13 unbekannte Fehler in MOJO, von denen 9 vom MOJO-Team bestätigt und behoben wurden
Erhebliche Leistungsverbesserung: Zeigt signifikante Verbesserungen in Test-Effektivität (98%), API-Abdeckung (77,3%) und Fehlererkennungsfähigkeit gegenüber bestehenden Methoden
Eingabe: MOJO-Programmiersprache-Umgebung und begrenzte Syntaxregeln, historische Fehlerberichte
Ausgabe: Gültige Testfälle, die Fehler in MOJO auslösen können
Einschränkungen: Zero-Shot-Learning-Umgebung ohne umfangreiche MOJO-spezifische Trainingsdaten
Das Papier zitiert 58 verwandte Arbeiten, die wichtige Arbeiten in den Bereichen LLM, Fuzz-Testing und Softwaretechnik abdecken und eine solide theoretische Grundlage für die Forschung bieten.
Gesamtbewertung: Dies ist ein hochqualitatives Softwaretechnik-Forschungspapier, das innovative Lösungen für praktische Probleme bietet, mit rigorosen Experimentaldesigns und überzeugenden Ergebnissen. Diese Arbeit stellt nicht nur einen technischen Durchbruch dar, sondern bietet vor allem eine praktikable Methodik für das Testen neuer Technologien mit wichtigem akademischem und praktischem Wert.