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

LLMs are All You Need? Improving Fuzz Testing for MOJO with Large Language Models

基本信息

  • 论文ID: 2510.10179
  • 标题: LLMs are All You Need? Improving Fuzz Testing for MOJO with Large Language Models
  • 作者: Linghan Huang, Peizhou Zhao, Huaming Chen (University of Sydney)
  • 分类: cs.SE (Software Engineering), cs.AI (Artificial Intelligence)
  • 发表时间: 2025年10月11日 (arXiv预印本)
  • 论文链接: https://arxiv.org/abs/2510.10179

摘要

大型语言模型(LLMs)的快速发展通过自动生成多样化和有效的测试输入,彻底改变了软件测试,特别是模糊测试。与此同时,MOJO作为一种融合Python易用性与C/C++效率的高性能AI编程语言的引入,为增强AI模型的可扩展性和可编程性提供了新机遇。然而,作为新兴语言,MOJO缺乏全面的测试框架和足够的LLM训练语料,这加剧了模型幻觉问题。针对这一挑战,本文提出MOJOFuzzer,首个专为新兴编程语言零样本学习环境设计的自适应LLM模糊测试框架。实验结果表明,MOJOFuzzer在测试有效性、API覆盖率和错误检测性能方面显著优于传统模糊测试和最先进的基于LLM的模糊测试方法,成功发现了MOJO中13个未知错误。

研究背景与动机

核心问题

本研究要解决的核心问题是新兴编程语言的模糊测试挑战,特别是在缺乏充足训练数据的零样本学习环境中如何有效进行测试。

问题重要性

  1. AI发展需求: 随着AI在自动驾驶、医疗诊断、金融服务等关键领域的广泛应用,需要高效的编程语言支持
  2. MOJO语言潜力: MOJO能够实现比Python快68,000倍的性能提升,是AI开发的重要工具
  3. 测试框架缺失: 作为新兴语言,MOJO缺乏成熟的测试框架,存在未发现的软件错误和安全漏洞

现有方法局限性

  1. 传统LLM模糊测试器依赖大量特定领域的训练数据,限制了在新兴语言上的应用
  2. 模型幻觉问题:在零样本环境中,LLM容易生成语法正确但语义错误的代码
  3. 缺乏针对性:现有工具未专门针对MOJO语言的特性进行优化

研究动机

开发首个专门针对MOJO语言的LLM模糊测试框架,通过创新的提示工程和微调技术,在零样本学习环境中实现有效的错误检测。

核心贡献

  1. 首创零样本LLM模糊测试框架:MOJOFuzzer是首个专为零样本学习环境设计的LLM驱动模糊测试框架,有效缓解了LLM幻觉问题
  2. 多阶段质量控制机制:集成了系统性的低质量输入过滤机制,显著提高测试用例有效性
  3. 自适应变异策略:基于运行时反馈动态调整LLM提示,实现迭代学习过程
  4. 实际错误发现:成功发现MOJO中13个未知错误,其中9个已被官方确认并修复
  5. 性能显著提升:在测试有效性(98%)、API覆盖率(77.3%)和错误检测能力方面显著优于现有方法

方法详解

任务定义

输入:MOJO编程语言环境和有限的语法规则、历史错误报告 输出:能够触发MOJO错误的有效测试用例 约束条件:零样本学习环境,无大量MOJO特定训练数据

模型架构

整体框架

MOJOFuzzer采用多阶段架构,包含以下核心组件:

  1. 数据准备阶段
    • 从GitHub和官方文档收集约300个错误报告和1,500个语法样本
    • 数据清洗和标准化处理
  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覆盖率:测试期间调用的唯一MOJO API函数数量
  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_si64random_float64random_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. 技术方案完整:从数据收集到错误检测的完整pipeline
  4. 实验充分:包含全面的对比实验和消融研究
  5. 写作清晰:技术细节描述准确,实验设计合理

不足

  1. 评估范围有限:主要针对MOJO语言,泛化能力有待验证
  2. 基线对比:部分基线方法可能不是最优选择
  3. 长期有效性:随着MOJO生态成熟,方法优势可能减弱
  4. 计算成本分析:缺乏详细的计算资源消耗分析

影响力

  1. 学术贡献:为新兴语言测试提供了重要的方法论基础
  2. 实践价值:直接帮助MOJO语言改进,具有immediate impact
  3. 可复现性:作者承诺开源代码和数据,有利于后续研究
  4. 领域推动:可能催生更多针对新兴技术的AI测试方法

适用场景

  1. 新兴编程语言:缺乏成熟测试框架的编程语言
  2. 零样本测试环境:训练数据稀缺的测试场景
  3. AI系统测试:需要高效测试工具的AI开发环境
  4. 安全关键系统:需要发现潜在错误的关键应用

参考文献

论文引用了58篇相关文献,涵盖了LLM、模糊测试、软件工程等多个领域的重要工作,为研究提供了坚实的理论基础。


总体评价:这是一篇高质量的软件工程研究论文,针对实际问题提出了创新解决方案,实验设计严谨,结果令人信服。该工作不仅在技术上有所突破,更重要的是为新兴技术的测试提供了可行的方法论,具有重要的学术和实践价值。