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
هل نماذج اللغات الكبيرة هي كل ما تحتاجه؟ تحسين اختبار الضبابية لـ MOJO باستخدام نماذج اللغات الكبيرة
أحدثت التطورات السريعة في نماذج اللغات الكبيرة (LLMs) ثورة في اختبار البرمجيات، خاصة اختبار الضبابية، من خلال توليد مدخلات اختبار متنوعة وفعالة تلقائياً. في الوقت ذاته، يوفر إدخال لغة MOJO كلغة برمجة عالية الأداء للذكاء الاصطناعي تجمع بين سهولة استخدام Python وكفاءة C/C++ فرصاً جديدة لتعزيز قابلية التوسع والبرمجة لنماذج الذكاء الاصطناعي. ومع ذلك، كلغة ناشئة، تفتقر MOJO إلى إطار عمل اختبار شامل وبيانات تدريب كافية للنماذج اللغوية، مما يؤدي إلى تفاقم مشكلة الهلوسة في النماذج. ردّاً على هذا التحدي، تقترح هذه الورقة MOJOFuzzer، وهو أول إطار عمل لاختبار الضبابية المدفوع بنماذج اللغات الكبيرة التكيفية المصمم خصيصاً لبيئات التعلم بدون عينات للغات البرمجة الناشئة. تُظهر نتائج التجارب أن MOJOFuzzer يتفوق بشكل كبير على اختبار الضبابية التقليدي وأحدث طرق اختبار الضبابية المستندة إلى نماذج اللغات الكبيرة من حيث فعالية الاختبار وتغطية واجهات برمجة التطبيقات والأداء في كشف الأخطاء، حيث نجح في اكتشاف 13 خطأ غير معروف في MOJO.
تتمثل المشكلة الأساسية التي يعالجها هذا البحث في تحديات اختبار الضبابية للغات البرمجة الناشئة، خاصة كيفية إجراء اختبار فعال في بيئات التعلم بدون عينات حيث تنقص البيانات التدريبية الكافية.
احتياجات تطوير الذكاء الاصطناعي: مع التطبيق الواسع للذكاء الاصطناعي في المجالات الحرجة مثل القيادة الذاتية والتشخيص الطبي والخدمات المالية، هناك حاجة إلى لغات برمجة فعالة
إمكانيات لغة MOJO: يمكن لـ MOJO تحقيق تحسن في الأداء بمعامل 68,000 مرة مقارنة بـ Python، مما يجعلها أداة مهمة لتطوير الذكاء الاصطناعي
غياب أطر العمل الاختبارية: كلغة ناشئة، تفتقر MOJO إلى أطر عمل اختبار ناضجة، مما يترك أخطاء برمجية وثغرات أمنية غير مكتشفة
أجهزة اختبار الضبابية المستندة إلى نماذج اللغات الكبيرة التقليدية تعتمد على كميات كبيرة من بيانات التدريب الخاصة بالمجال، مما يحد من تطبيقها على اللغات الناشئة
مشكلة الهلوسة في النماذج: في بيئات التعلم بدون عينات، تميل نماذج اللغات الكبيرة إلى توليد كود صحيح نحوياً لكن خاطئ دلالياً
عدم التخصص: لم تتم تحسين الأدوات الموجودة خصيصاً لخصائص لغة MOJO
تطوير أول إطار عمل لاختبار الضبابية المدفوع بنماذج اللغات الكبيرة متخصص في لغة MOJO، من خلال تقنيات هندسة الأوامر والضبط الدقيق المبتكرة، لتحقيق كشف أخطاء فعال في بيئات التعلم بدون عينات.
إطار عمل اختبار ضبابية مدفوع بنماذج اللغات الكبيرة بدون عينات للمرة الأولى: MOJOFuzzer هو أول إطار عمل لاختبار ضبابية مدفوع بنماذج اللغات الكبيرة مصمم لبيئات التعلم بدون عينات، مما يخفف بشكل فعال من مشكلة هلوسة نماذج اللغات الكبيرة
آلية التحكم في الجودة متعددة المراحل: تدمج آلية منهجية لتصفية المدخلات منخفضة الجودة، مما يحسن بشكل كبير من فعالية حالات الاختبار
استراتيجية التحوير التكيفية: تعديل ديناميكي لأوامر نماذج اللغات الكبيرة بناءً على ملاحظات وقت التشغيل، مما يحقق عملية تعلم تكراري
اكتشاف الأخطاء العملية: اكتشاف 13 خطأ غير معروف في MOJO، حيث تم تأكيد 9 منها وإصلاحها من قبل الفريق الرسمي
تحسن الأداء الملحوظ: تحسن كبير في فعالية الاختبار (98%) وتغطية واجهات برمجة التطبيقات (77.3%) وقدرة كشف الأخطاء مقارنة بالطرق الموجودة
المدخلات: بيئة لغة البرمجة MOJO والقواعد النحوية المحدودة والتقارير عن الأخطاء السابقة
المخرجات: حالات اختبار فعالة قادرة على تحفيز أخطاء MOJO
قيود: بيئة التعلم بدون عينات، بدون بيانات تدريب كبيرة خاصة بـ MOJO
أجهزة اختبار الضبابية المستندة إلى نماذج اللغات الكبيرة: TitanFuzz و ChatAFL و Fuzz4All وغيرها تستخدم نماذج اللغات الكبيرة لتحسين توليد البذور والتحوير
أجهزة اختبار الضبابية المضبوطة بدقة: FuzzGPT وغيرها تحسن الأداء من خلال الضبط الدقيق باستخدام بيانات خاصة بالمجال
اختبار الضبابية التقليدي: قيود أدوات مثل OSS-Fuzz على اللغات الناشئة
تستشهد الورقة بـ 58 مرجعاً ذا صلة، تغطي أعمالاً مهمة في مجالات نماذج اللغات الكبيرة واختبار الضبابية وهندسة البرمجيات وغيرها، مما توفر أساساً نظرياً متيناً للبحث.
التقييم العام: هذه ورقة بحثية عالية الجودة في مجال هندسة البرمجيات، تقترح حلاً مبتكراً لمشكلة عملية، مع تصميم تجريبي صارم ونتائج مقنعة. لا يقتصر هذا العمل على الاختراق التقني فحسب، بل يوفر أيضاً منهجية قابلة للتطبيق لاختبار التقنيات الناشئة، مما يتمتع بقيمة أكاديمية وعملية مهمة.