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

هل نماذج اللغات الكبيرة هي كل ما تحتاجه؟ تحسين اختبار الضبابية لـ MOJO باستخدام نماذج اللغات الكبيرة

المعلومات الأساسية

  • معرّف الورقة: 2510.10179
  • العنوان: LLMs are All You Need? Improving Fuzz Testing for MOJO with Large Language Models
  • المؤلفون: Linghan Huang, Peizhou Zhao, Huaming Chen (جامعة سيدني)
  • التصنيف: cs.SE (هندسة البرمجيات)، cs.AI (الذكاء الاصطناعي)
  • تاريخ النشر: 11 أكتوبر 2025 (نسخة أولية على arXiv)
  • رابط الورقة: https://arxiv.org/abs/2510.10179

الملخص

أحدثت التطورات السريعة في نماذج اللغات الكبيرة (LLMs) ثورة في اختبار البرمجيات، خاصة اختبار الضبابية، من خلال توليد مدخلات اختبار متنوعة وفعالة تلقائياً. في الوقت ذاته، يوفر إدخال لغة MOJO كلغة برمجة عالية الأداء للذكاء الاصطناعي تجمع بين سهولة استخدام Python وكفاءة C/C++ فرصاً جديدة لتعزيز قابلية التوسع والبرمجة لنماذج الذكاء الاصطناعي. ومع ذلك، كلغة ناشئة، تفتقر MOJO إلى إطار عمل اختبار شامل وبيانات تدريب كافية للنماذج اللغوية، مما يؤدي إلى تفاقم مشكلة الهلوسة في النماذج. ردّاً على هذا التحدي، تقترح هذه الورقة MOJOFuzzer، وهو أول إطار عمل لاختبار الضبابية المدفوع بنماذج اللغات الكبيرة التكيفية المصمم خصيصاً لبيئات التعلم بدون عينات للغات البرمجة الناشئة. تُظهر نتائج التجارب أن MOJOFuzzer يتفوق بشكل كبير على اختبار الضبابية التقليدي وأحدث طرق اختبار الضبابية المستندة إلى نماذج اللغات الكبيرة من حيث فعالية الاختبار وتغطية واجهات برمجة التطبيقات والأداء في كشف الأخطاء، حيث نجح في اكتشاف 13 خطأ غير معروف في MOJO.

خلفية البحث والدافع

المشكلة الأساسية

تتمثل المشكلة الأساسية التي يعالجها هذا البحث في تحديات اختبار الضبابية للغات البرمجة الناشئة، خاصة كيفية إجراء اختبار فعال في بيئات التعلم بدون عينات حيث تنقص البيانات التدريبية الكافية.

أهمية المشكلة

  1. احتياجات تطوير الذكاء الاصطناعي: مع التطبيق الواسع للذكاء الاصطناعي في المجالات الحرجة مثل القيادة الذاتية والتشخيص الطبي والخدمات المالية، هناك حاجة إلى لغات برمجة فعالة
  2. إمكانيات لغة MOJO: يمكن لـ MOJO تحقيق تحسن في الأداء بمعامل 68,000 مرة مقارنة بـ Python، مما يجعلها أداة مهمة لتطوير الذكاء الاصطناعي
  3. غياب أطر العمل الاختبارية: كلغة ناشئة، تفتقر MOJO إلى أطر عمل اختبار ناضجة، مما يترك أخطاء برمجية وثغرات أمنية غير مكتشفة

قيود الطرق الموجودة

  1. أجهزة اختبار الضبابية المستندة إلى نماذج اللغات الكبيرة التقليدية تعتمد على كميات كبيرة من بيانات التدريب الخاصة بالمجال، مما يحد من تطبيقها على اللغات الناشئة
  2. مشكلة الهلوسة في النماذج: في بيئات التعلم بدون عينات، تميل نماذج اللغات الكبيرة إلى توليد كود صحيح نحوياً لكن خاطئ دلالياً
  3. عدم التخصص: لم تتم تحسين الأدوات الموجودة خصيصاً لخصائص لغة MOJO

دافع البحث

تطوير أول إطار عمل لاختبار الضبابية المدفوع بنماذج اللغات الكبيرة متخصص في لغة MOJO، من خلال تقنيات هندسة الأوامر والضبط الدقيق المبتكرة، لتحقيق كشف أخطاء فعال في بيئات التعلم بدون عينات.

المساهمات الأساسية

  1. إطار عمل اختبار ضبابية مدفوع بنماذج اللغات الكبيرة بدون عينات للمرة الأولى: MOJOFuzzer هو أول إطار عمل لاختبار ضبابية مدفوع بنماذج اللغات الكبيرة مصمم لبيئات التعلم بدون عينات، مما يخفف بشكل فعال من مشكلة هلوسة نماذج اللغات الكبيرة
  2. آلية التحكم في الجودة متعددة المراحل: تدمج آلية منهجية لتصفية المدخلات منخفضة الجودة، مما يحسن بشكل كبير من فعالية حالات الاختبار
  3. استراتيجية التحوير التكيفية: تعديل ديناميكي لأوامر نماذج اللغات الكبيرة بناءً على ملاحظات وقت التشغيل، مما يحقق عملية تعلم تكراري
  4. اكتشاف الأخطاء العملية: اكتشاف 13 خطأ غير معروف في MOJO، حيث تم تأكيد 9 منها وإصلاحها من قبل الفريق الرسمي
  5. تحسن الأداء الملحوظ: تحسن كبير في فعالية الاختبار (98%) وتغطية واجهات برمجة التطبيقات (77.3%) وقدرة كشف الأخطاء مقارنة بالطرق الموجودة

شرح الطريقة

تعريف المهمة

المدخلات: بيئة لغة البرمجة MOJO والقواعد النحوية المحدودة والتقارير عن الأخطاء السابقة المخرجات: حالات اختبار فعالة قادرة على تحفيز أخطاء MOJO قيود: بيئة التعلم بدون عينات، بدون بيانات تدريب كبيرة خاصة بـ MOJO

معمارية النموذج

الإطار العام

يعتمد MOJOFuzzer على معمارية متعددة المراحل تتضمن المكونات الأساسية التالية:

  1. مرحلة تحضير البيانات
    • جمع حوالي 300 تقرير خطأ و1,500 عينة نحوية من GitHub والوثائق الرسمية
    • تنظيف البيانات ومعالجة التوحيد
  2. مرحلة التهيئة
    • بنك الأوامر (Prompt Bank): تخزين قوالب الأوامر المنظمة
    • بنك البذور (Seed Bank): إدارة توليد وتخزين بذور الاختبار
  3. استراتيجيات التحوير
    • آلية تسجيل التحوير: حساب النقاط بناءً على عدد استدعاءات واجهات برمجة التطبيقات وتعقيد الكود
    • التحوير الجزئي (Half Mutation): تحوير على مستوى الكود للبذور عالية النقاط
    • التحوير الكامل (Full Mutation): تحوير على مستوى الأوامر للبذور منخفضة النقاط

تفاصيل تقنية رئيسية

صيغة تسجيل التحوير:

S_mutation = N_API + C_complexity

حيث:

  • N_API: عدد استدعاءات واجهات برمجة التطبيقات
  • C_complexity: درجة تعقيد الكود (بناءً على تعقيد الوقت من O(1) إلى O(n³) مع تخصيص درجات مختلفة)

استراتيجية هندسة الأوامر: استخدام تقنية سلسلة الفكر (CoT) وتقنية الأوامر المستندة إلى الأدوار، تتضمن 5 مكونات أساسية:

  1. تعليمات التحليل النحوي
  2. إطار عمل مستند إلى الأدوار
  3. تصفية البيانات التلقائية
  4. تلخيص المحتوى
  5. توليد بذور الأوامر

استراتيجية الضبط الدقيق

استخدام نموذج LLAMA2 بـ 13 مليار معامل للضبط الدقيق على مرحلتين:

  1. المرحلة الأولى: تعلم بنية اللغة بناءً على مجموعة بيانات نحو MOJO
  2. المرحلة الثانية: تعلم أنماط العيوب بناءً على السجلات التاريخية للأخطاء

نقاط الابتكار التقني

  1. التكيف بدون عينات: أول تطبيق فعال لاختبار الضبابية المدفوع بنماذج اللغات الكبيرة في غياب بيانات تدريب كبيرة
  2. آلية التحوير ثنائية المستوى: دمج التحوير على مستوى الكود والأوامر لزيادة تنوع الاختبار
  3. نظام التسجيل التكيفي: تقييم ديناميكي لجودة البذور، تحسين تخصيص الموارد
  4. التحكم في الجودة متعدد المراحل: تصفية منهجية للمدخلات منخفضة الجودة، تقليل مشاكل الهلوسة

إعداد التجارب

مجموعات البيانات

  • بيانات نحو MOJO: حوالي 1,500 قاعدة نحوية وعينة كود
  • تقارير الأخطاء التاريخية: حوالي 300 تقرير خطأ من GitHub
  • بيئة الاختبار: مترجم MOJO وبيئة التشغيل

مؤشرات التقييم

  1. عدد البرامج الفعالة الفريدة: نسبة برامج الاختبار الصحيحة نحوياً ودلالياً
  2. كفاءة التحوير: تحسن تنوع الاختبار والفعالية وقدرة كشف الأخطاء
  3. تغطية واجهات برمجة التطبيقات: عدد وظائف واجهات برمجة التطبيقات الفريدة لـ MOJO المستدعاة أثناء الاختبار
  4. عدد الأخطاء المكتشفة: عدد عيوب البرمجيات المختلفة المكتشفة

طرق المقارنة

  • الطرق التقليدية: MojoCoder
  • أجهزة اختبار الضبابية المدفوعة بنماذج اللغات الكبيرة: Fuzz4All و TitanFuzz
  • نماذج اللغات الكبيرة العامة: GPT-4o و LLAMA3-8B و LLAMA2-7B

تفاصيل التنفيذ

  • منصة الأجهزة: NVIDIA A6000 Ada
  • تقنية الضبط الدقيق: LoRA (التكيف منخفض الرتبة)
  • الحد الأقصى لعدد التكرارات: 10 جولات
  • عتبة التحوير: درجة 50 كنقطة فاصلة بين التحوير الجزئي والكامل

نتائج التجارب

النتائج الرئيسية

مقارنة تغطية واجهات برمجة التطبيقات

النموذجتغطية واجهات برمجة التطبيقات
MOJOFuzzer77.3%
MojoCoder المضبوط بدقة68.2%
Fuzz4All37.8%
TitanFuzz17.2%
GPT-4o25.6%

معدل توليد البرامج الفعالة

النموذجمعدل البرامج الفعالة
MOJOFuzzer98%
Mojo-Coder-it 7B66.4%
GPT-4o~25%
LLaMA3-8B~10%
LLaMA2-7B~10%

قدرة كشف الأخطاء

  • إجمالي الأخطاء المكتشفة: 13 خطأ غير معروف
  • الأخطاء المؤكدة والمصححة: تم تأكيد 9 أخطاء من قبل فريق MOJO وإصلاحها
  • أنواع الأخطاء: تشمل عيوب مولد الأرقام العشوائية ومشاكل تكامل مكتبة Python

دراسات الاستبعاد

تقيّم الدراسات الاستبعادية مساهمة ثلاثة مكونات رئيسية:

تكوين المكونمعدل الهلوسةمعدل الكود الفعالالصحة الدلالية
الخط الأساسي40%60%50%
هندسة الأوامر فقط (PE)28%75%65%
الضبط الدقيق فقط (FT)15%88%78%
التحوير الجزئي فقط (HM)35%68%55%
PE + FT8%95%88%
PE + FT + HM (الكل)5%98%90%

تحليل الحالات

مثال على الأخطاء الرئيسية المكتشفة:

  1. خطأ مولد الأرقام العشوائية:
    • تعيد الدوال random_si64 و random_float64 و random_ui64 قيماً ثابتة دائماً
    • يؤثر على صحة توليد الأرقام العشوائية
  2. خطأ تكامل مكتبة Python:
    • فشل الحصول على الوحدة عند استدعاء وظائف numpy
    • يشير إلى خطأ في المنطق الأساسي لتكامل MOJO مع مكتبات Python

نتائج التجارب

  1. الدور الحاسم للضبط الدقيق: الضبط الدقيق هو العامل الفردي الأكثر فعالية في تقليل مشاكل الهلوسة
  2. التأثير التآزري للمكونات: ثلاثة مكونات مجتمعة توفر أفضل النتائج
  3. جدوى التعلم بدون عينات: إثبات إمكانية إجراء اختبار فعال في غياب بيانات تدريب كبيرة

الأعمال ذات الصلة

تطور اختبار الضبابية المدفوع بنماذج اللغات الكبيرة

  1. أجهزة اختبار الضبابية المستندة إلى نماذج اللغات الكبيرة: TitanFuzz و ChatAFL و Fuzz4All وغيرها تستخدم نماذج اللغات الكبيرة لتحسين توليد البذور والتحوير
  2. أجهزة اختبار الضبابية المضبوطة بدقة: FuzzGPT وغيرها تحسن الأداء من خلال الضبط الدقيق باستخدام بيانات خاصة بالمجال
  3. اختبار الضبابية التقليدي: قيود أدوات مثل OSS-Fuzz على اللغات الناشئة

المزايا الرئيسية لهذا العمل

مقارنة بالأعمال الموجودة، تتمتع MOJOFuzzer بالمزايا الرئيسية التالية:

  1. القدرة بدون عينات: بدون الحاجة إلى بيانات تدريب مسبقة كبيرة
  2. التحوير ثنائي المستوى: التحوير المتزامن على مستوى الكود والأوامر
  3. الآلية التكيفية: تعديل ديناميكي للاستراتيجية بناءً على ملاحظات وقت التشغيل

الخلاصة والنقاش

الاستنتاجات الرئيسية

  1. نجحت MOJOFuzzer في حل تحديات اختبار الضبابية للغات البرمجة الناشئة
  2. اختبار الضبابية المدفوع بنماذج اللغات الكبيرة بدون عينات قابل للتطبيق في التطبيقات العملية
  3. الطريقة التي تجمع بين الضبط الدقيق وهندسة الأوامر والتحوير التكيفي تتفوق بشكل كبير على التقنيات الفردية

القيود

  1. تهديد الصلاحية الزمنية: مع دمج نماذج اللغات الكبيرة المتقدمة تدريجياً لمعرفة MOJO، قد تضعف المزايا بدون عينات
  2. الاعتماد على البيانات: لا تزال تتطلب الحد الأدنى من القواعد النحوية وتقارير الأخطاء
  3. متطلبات الموارد الحسابية: تتطلب عملية الضبط الدقيق والاستدلال تكاليف حسابية عالية

الاتجاهات المستقبلية

  1. الاختبار المؤتمت بالكامل: التطور نحو اختبار ضبابية مؤتمت بالكامل
  2. لغات ناشئة أخرى: توسيع الطريقة لتشمل لغات برمجة ناشئة أخرى
  3. تحسين مجموعات البيانات المدربة مسبقاً: البحث عن كيفية الاستفادة الأفضل من بيانات التدريب المحدودة

التقييم المتعمق

المزايا

  1. ابتكار قوي: أول إطار عمل لاختبار ضبابية مدفوع بنماذج اللغات الكبيرة بدون عينات للغات الناشئة
  2. قيمة عملية عالية: اكتشاف 13 خطأ فعلي، مما يثبت فعالية الطريقة
  3. حل تقني شامل: خط أنابيب كامل من جمع البيانات إلى كشف الأخطاء
  4. تجارب شاملة: تتضمن تجارب مقارنة شاملة ودراسات استبعاد
  5. كتابة واضحة: وصف دقيق للتفاصيل التقنية وتصميم تجريبي معقول

أوجه القصور

  1. نطاق التقييم محدود: يركز بشكل أساسي على لغة MOJO، مع قابلية تعميم تحتاج إلى التحقق
  2. مقارنة الخطوط الأساسية: قد لا تكون بعض طرق الخطوط الأساسية الخيارات المثلى
  3. الصلاحية طويلة الأجل: مع نضج نظام MOJO البيئي، قد تضعف مزايا الطريقة
  4. تحليل تكاليف الحوسبة: يفتقر إلى تحليل مفصل لاستهلاك موارد الحوسبة

التأثير

  1. المساهمة الأكاديمية: توفير أساس منهجي مهم لاختبار اللغات الناشئة
  2. القيمة العملية: مساعدة مباشرة لتحسين لغة MOJO، مع تأثير فوري
  3. قابلية إعادة الإنتاج: التزام المؤلفين بفتح الكود والبيانات، مما يسهل الأبحاث اللاحقة
  4. دفع المجال: قد يحفز طرقاً اختبارية أكثر موجهة نحو التقنيات الناشئة

السيناريوهات القابلة للتطبيق

  1. لغات البرمجة الناشئة: لغات البرمجة التي تفتقر إلى أطر عمل اختبار ناضجة
  2. بيئات الاختبار بدون عينات: سيناريوهات الاختبار حيث تكون بيانات التدريب نادرة
  3. اختبار أنظمة الذكاء الاصطناعي: بيئات تطوير الذكاء الاصطناعي التي تحتاج إلى أدوات اختبار فعالة
  4. الأنظمة الحرجة للسلامة: التطبيقات الحرجة التي تحتاج إلى اكتشاف الأخطاء المحتملة

المراجع

تستشهد الورقة بـ 58 مرجعاً ذا صلة، تغطي أعمالاً مهمة في مجالات نماذج اللغات الكبيرة واختبار الضبابية وهندسة البرمجيات وغيرها، مما توفر أساساً نظرياً متيناً للبحث.


التقييم العام: هذه ورقة بحثية عالية الجودة في مجال هندسة البرمجيات، تقترح حلاً مبتكراً لمشكلة عملية، مع تصميم تجريبي صارم ونتائج مقنعة. لا يقتصر هذا العمل على الاختراق التقني فحسب، بل يوفر أيضاً منهجية قابلة للتطبيق لاختبار التقنيات الناشئة، مما يتمتع بقيمة أكاديمية وعملية مهمة.