Library-Aware Doubles and Iterative Repair for Large Language Model-Generated Unit Tests in OpenSIL Firmware
作者: Ma Toan Bach, Yuchi Zheng, Haingo Razafindranto, Tanvir Alam, Aric Leather, Ranveer Sandhu, Jitesh Arora
分类: cs.SE, cs.AI, cs.MA
发布日期: 2026-06-18
备注: 20 pages, 10 figures
💡 一句话要点
提出基于大语言模型的自动化单元测试生成与修复方法以解决固件测试问题
🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 单元测试 固件验证 自动化测试 大语言模型 多代理系统 行覆盖率 开源软件
📋 核心要点
- 现有方法在低级C固件的单元测试中面临高成本和脆弱性,导致频繁的编译和链接失败。
- 论文提出了一种基于大语言模型的自动化UT生成和修复工作流,旨在减少手动调试工作量。
- 实验表明,该方法在行覆盖率和编译成功率上显著提升,展示了其在固件环境中的有效性。
📝 摘要(中文)
验证低级C固件中的变更成本高昂,因为在严格的构建约束下,单元测试(UT)往往脆弱,缺失头文件、未解析符号和依赖不匹配等问题频繁导致编译和链接失败。本研究为Advanced Micro Devices(AMD)维护的开源硅初始化库(openSIL)固件代码库引入了一种自动化UT编写工作流,通过大语言模型(LLM)指导的多代理管道减少人工工作。该工作流结合了测试脚手架的自动生成、库感知的存根、模拟和假对象的创建或重用,以及由构建日志和行覆盖反馈驱动的迭代编译-调度修复循环。实验结果显示,该方法在76个测试函数中生成了73个可编译的UT,且在行覆盖指导下,行覆盖率达到了98.8%。
🔬 方法详解
问题定义:本论文旨在解决低级C固件单元测试的高成本和脆弱性问题,现有方法在严格构建约束下常常导致编译失败,影响测试的有效性。
核心思路:论文提出了一种自动化的UT编写工作流,利用大语言模型(LLM)指导的多代理管道,结合自动生成测试脚手架和库感知的存根、模拟、假对象的创建,减少人工干预。
技术框架:整体架构包括三个主要模块:自动生成测试脚手架、库感知的存根创建与重用,以及迭代编译-调度修复循环。该流程通过构建日志和行覆盖反馈进行优化。
关键创新:最重要的技术创新在于结合了大语言模型与多代理系统,形成了一个高效的自动化UT生成与修复流程,显著提升了固件环境下的测试效率。
关键设计:在设计中,设置了行覆盖指导和向量数据库检索等关键参数,确保生成的UT不仅可编译且覆盖率高,具体实验中行覆盖率达到了98.8%。
🖼️ 关键图片
📊 实验亮点
实验结果显示,在76个测试函数中,工作流成功生成了73个可编译的单元测试,且在没有行覆盖指导的配置下,平均行覆盖率达到了73.9%。在行覆盖指导下,平均行覆盖率提升至98.8%,显示出该方法在固件环境中的显著优势。
🎯 应用场景
该研究的潜在应用领域包括嵌入式系统开发、固件验证和自动化测试工具的开发。通过减少手动调试的需求,能够显著提高固件开发的效率和可靠性,未来可能推动更广泛的自动化测试技术在行业中的应用。
📄 摘要(原文)
Validating changes in low-level C firmware is expensive because unit tests (UTs) are fragile under strict build constraints, where missing headers, unresolved symbols, and dependency mismatches frequently prevent compilation and linking. This study introduces an automated UT authoring workflow for the Open-Source Silicon Initialization Library (openSIL) firmware codebase maintained by Advanced Micro Devices (AMD) that reduces manual effort through a large language model (LLM) guided multi-agent pipeline. The workflow combines automated generation of test scaffolds, library-aware creation or reuse of stubs, mocks, and fakes, and an iterative compile-dispatch repair loop driven by build logs and line-coverage feedback. We evaluate the approach using compilation success, repair iterations, dispatch success, and line coverage, with time, cost, and token usage as secondary measures. Across 76 functions under test, the workflow generated compilable UTs for 73 functions. In a configuration without line coverage guidance or retrieval augmentation, mean line coverage reached 73.9%. On a 48-function subset evaluated under both configurations, mean line coverage reached 98.8% with line-coverage guidance alone and reached 94.7% when combined with vector-database retrieval. Results show that automated generation-and-repair pipelines can substantially improve UT creation efficiency and coverage for constrained firmware environments while reducing manual debugging effort.