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

LLM — это всё, что вам нужно? Улучшение фаззинга для MOJO с использованием больших языковых моделей

Основная информация

  • ID статьи: 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

Аннотация

Быстрое развитие больших языковых моделей (LLM) революционизировало тестирование программного обеспечения, в частности фаззинг, путём автоматического создания разнообразных и эффективных тестовых входных данных. Одновременно с этим введение MOJO — высокопроизводительного языка программирования для ИИ, сочетающего простоту Python с эффективностью C/C++, открывает новые возможности для повышения масштабируемости и программируемости моделей ИИ. Однако как новый язык MOJO лишён комплексной платформы тестирования и достаточного корпуса обучающих данных для LLM, что усугубляет проблему галлюцинаций модели. В ответ на этот вызов мы предлагаем MOJOFuzzer — первую адаптивную платформу фаззинга на основе LLM, разработанную специально для среды нулевого обучения новых языков программирования. Экспериментальные результаты показывают, что MOJOFuzzer значительно превосходит традиционный фаззинг и современные методы фаззинга на основе LLM по эффективности тестирования, покрытию API и производительности обнаружения ошибок, успешно обнаружив 13 неизвестных ошибок в MOJO.

Исследовательский контекст и мотивация

Основная проблема

Основная проблема, которую решает данное исследование, — это вызовы фаззинга для новых языков программирования, в частности, как эффективно проводить тестирование в среде нулевого обучения при отсутствии достаточных обучающих данных.

Важность проблемы

  1. Требования развития ИИ: С широким применением ИИ в критических областях, таких как автономное вождение, медицинская диагностика и финансовые услуги, необходимы эффективные языки программирования
  2. Потенциал языка MOJO: MOJO может обеспечить повышение производительности в 68 000 раз по сравнению с Python, что делает его важным инструментом для разработки ИИ
  3. Отсутствие платформы тестирования: Как новый язык, MOJO лишён зрелой платформы тестирования, содержит необнаруженные ошибки программного обеспечения и уязвимости безопасности

Ограничения существующих методов

  1. Традиционные фаззеры на основе LLM зависят от большого количества данных, специфичных для предметной области, что ограничивает их применение к новым языкам
  2. Проблема галлюцинаций модели: В среде нулевого обучения LLM легко генерирует синтаксически корректный, но семантически ошибочный код
  3. Отсутствие специализации: Существующие инструменты не оптимизированы специально для характеристик языка MOJO

Исследовательская мотивация

Разработка первой платформы фаззинга на основе LLM, специально предназначенной для языка MOJO, которая через инновационную инженерию подсказок и методы тонкой настройки обеспечивает эффективное обнаружение ошибок в среде нулевого обучения.

Основные вклады

  1. Первая платформа фаззинга на основе LLM для нулевого обучения: MOJOFuzzer — первая платформа фаззинга, управляемая LLM, разработанная специально для среды нулевого обучения, эффективно смягчающая проблему галлюцинаций LLM
  2. Многоэтапный механизм контроля качества: Интегрирует систематический механизм фильтрации низкокачественных входных данных, значительно повышающий эффективность тестовых случаев
  3. Адаптивная стратегия мутации: Динамически корректирует подсказки LLM на основе обратной связи во время выполнения, реализуя итеративный процесс обучения
  4. Обнаружение реальных ошибок: Успешно обнаружил 13 неизвестных ошибок в MOJO, из которых 9 подтверждены и исправлены официальной командой
  5. Значительное повышение производительности: Значительно превосходит существующие методы по эффективности тестирования (98%), покрытию API (77,3%) и способности обнаружения ошибок

Подробное описание методологии

Определение задачи

Входные данные: Среда программирования MOJO и ограниченные синтаксические правила, исторические отчёты об ошибках Выходные данные: Действительные тестовые случаи, способные вызвать ошибки в MOJO Ограничения: Среда нулевого обучения, отсутствие большого количества данных, специфичных для MOJO

Архитектура модели

Общая структура

MOJOFuzzer использует многоэтапную архитектуру, включающую следующие основные компоненты:

  1. Этап подготовки данных
    • Сбор примерно 300 отчётов об ошибках и 1 500 синтаксических образцов из GitHub и официальной документации
    • Очистка и стандартизация данных
  2. Этап инициализации
    • Банк подсказок (Prompt Bank): Хранит структурированные шаблоны подсказок
    • Банк семян (Seed Bank): Управляет созданием и хранением тестовых семян
  3. Стратегии мутации
    • Механизм оценки мутации: Вычисляет оценку на основе количества вызовов API и сложности кода
    • Полумутация (Half Mutation): Мутация на уровне кода для семян с высокой оценкой
    • Полная мутация (Full Mutation): Мутация на уровне подсказок для семян с низкой оценкой

Ключевые технические детали

Формула оценки мутации:

S_mutation = N_API + C_complexity

где:

  • N_API: количество вызовов API
  • C_complexity: оценка сложности кода (различные баллы назначаются для временной сложности от O(1) до O(n³))

Стратегия инженерии подсказок: Использует методику цепочки мышления (CoT) и техники ролевых подсказок, включающие 5 основных компонентов:

  1. Инструкции синтаксического анализа
  2. Структура на основе ролей
  3. Автоматическая фильтрация данных
  4. Суммирование содержания
  5. Создание семян подсказок

Стратегия тонкой настройки

Использует модель LLAMA2 13B для двухэтапной тонкой настройки:

  1. Первый этап: Изучение структуры языка на основе набора данных синтаксиса MOJO
  2. Второй этап: Изучение паттернов дефектов на основе исторических отчётов об ошибках

Технические инновации

  1. Адаптивность нулевого обучения: Первое достижение эффективного фаззинга на основе LLM при отсутствии большого количества обучающих данных
  2. Двухуровневый механизм мутации: Сочетает мутацию на уровне кода и подсказок, повышая разнообразие тестирования
  3. Адаптивная система оценки: Динамически оценивает качество семян, оптимизируя распределение ресурсов
  4. Многоэтапный контроль качества: Систематически фильтрует низкокачественные входные данные, снижая проблемы галлюцинаций

Экспериментальная установка

Набор данных

  • Синтаксические данные MOJO: Примерно 1 500 синтаксических правил и примеров кода
  • Исторические отчёты об ошибках: Примерно 300 отчётов об ошибках из GitHub
  • Тестовая среда: Компилятор и среда выполнения MOJO

Метрики оценки

  1. Количество уникальных действительных программ: Доля синтаксически и семантически корректных тестовых программ
  2. Эффективность мутации: Улучшение разнообразия тестирования, эффективности и способности обнаружения ошибок
  3. Покрытие API: Количество уникальных функций API MOJO, вызванных во время тестирования
  4. Количество обнаруженных ошибок: Количество различных обнаруженных дефектов программного обеспечения

Методы сравнения

  • Традиционный метод: MojoCoder
  • Фаззеры на основе LLM: Fuzz4All, TitanFuzz
  • Универсальные LLM: GPT-4o, LLAMA3-8B, LLAMA2-7B

Детали реализации

  • Аппаратная платформа: NVIDIA A6000 Ada
  • Техника тонкой настройки: LoRA (Low-Rank Adaptation)
  • Максимальное количество итераций: 10 раундов
  • Пороговое значение мутации: Оценка 50 как точка разделения между полумутацией и полной мутацией

Результаты экспериментов

Основные результаты

Сравнение покрытия API

МодельПокрытие API
MOJOFuzzer77,3%
Fine-tuned MojoCoder68,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. Осуществимость нулевого обучения: Доказывает возможность эффективного тестирования при отсутствии большого количества обучающих данных

Связанные работы

Развитие фаззинга на основе LLM

  1. Фаззеры на основе LLM: TitanFuzz, ChatAFL, Fuzz4All и другие используют LLM для улучшения создания семян и мутации
  2. Фаззеры с тонкой настройкой: FuzzGPT и другие повышают эффективность путём тонкой настройки на данных, специфичных для предметной области
  3. Традиционный фаззинг: Ограничения традиционных инструментов, таких как OSS-Fuzz, на новых языках

Преимущества данной работы

По сравнению с существующими работами, основные преимущества MOJOFuzzer:

  1. Возможность нулевого обучения: Не требует большого количества предварительно обученных данных
  2. Двухуровневая мутация: Мутация одновременно на уровне кода и подсказок
  3. Адаптивный механизм: Динамическая корректировка стратегии на основе обратной связи во время выполнения

Заключение и обсуждение

Основные выводы

  1. MOJOFuzzer успешно решает вызовы фаззинга для новых языков программирования
  2. Фаззинг на основе LLM в среде нулевого обучения осуществим в практических приложениях
  3. Метод, сочетающий тонкую настройку, инженерию подсказок и адаптивную мутацию, значительно превосходит отдельные технологии

Ограничения

  1. Угроза временной валидности: По мере того как продвинутые LLM постепенно интегрируют знания MOJO, преимущество нулевого обучения может ослабнуть
  2. Зависимость от данных: По-прежнему требуется минимальное количество синтаксических правил и отчётов об ошибках
  3. Требования вычислительных ресурсов: Процессы тонкой настройки и вывода требуют значительных вычислительных затрат

Направления будущих исследований

  1. Полная автоматизация тестирования: Развитие в направлении полностью автоматизированного фаззинга
  2. Больше новых языков: Расширение метода на другие новые языки программирования
  3. Оптимизация предварительно обученного набора данных: Исследование способов лучшего использования ограниченных обучающих данных

Глубокая оценка

Преимущества

  1. Высокая инновационность: Первая платформа фаззинга на основе LLM для нулевого обучения, специально предназначенная для новых языков
  2. Высокая практическая ценность: Успешное обнаружение 13 реальных ошибок доказывает эффективность метода
  3. Полное техническое решение: Полный конвейер от сбора данных до обнаружения ошибок
  4. Достаточные эксперименты: Включает комплексные сравнительные эксперименты и абляционные исследования
  5. Ясное изложение: Точное описание технических деталей, разумный дизайн экспериментов

Недостатки

  1. Ограниченный диапазон оценки: Главным образом ориентирован на язык MOJO, способность к обобщению требует проверки
  2. Выбор базовых линий: Некоторые методы сравнения могут быть неоптимальными
  3. Долгосрочная эффективность: По мере созревания экосистемы MOJO преимущества метода могут снизиться
  4. Анализ вычислительных затрат: Отсутствует подробный анализ потребления вычислительных ресурсов

Влияние

  1. Академический вклад: Обеспечивает важную методологическую базу для тестирования новых языков
  2. Практическая ценность: Непосредственно помогает улучшить язык MOJO, имеет немедленное воздействие
  3. Воспроизводимость: Авторы обещают открыть исходный код и данные, что способствует дальнейшим исследованиям
  4. Продвижение области: Может стимулировать разработку большего количества методов тестирования ИИ для новых технологий

Применимые сценарии

  1. Новые языки программирования: Языки программирования, лишённые зрелых платформ тестирования
  2. Среда тестирования нулевого обучения: Сценарии тестирования с дефицитом обучающих данных
  3. Тестирование систем ИИ: Среды разработки ИИ, требующие эффективных инструментов тестирования
  4. Системы, критичные по безопасности: Критические приложения, требующие обнаружения потенциальных ошибок

Библиография

Статья цитирует 58 связанных работ, охватывающих важные исследования в области LLM, фаззинга, инженерии программного обеспечения и других областей, обеспечивая прочную теоретическую базу для исследования.


Общая оценка: Это высококачественная научная работа в области инженерии программного обеспечения, предлагающая инновационное решение практической проблемы с тщательным дизайном экспериментов и убедительными результатами. Эта работа не только достигает технического прорыва, но, что более важно, предоставляет осуществимую методологию для тестирования новых технологий, имеющую значительную академическую и практическую ценность.