EmbC-Test: How to Speed Up Embedded Software Testing Using LLMs and RAG

该论文提出了一种结合检索增强生成(RAG)与大语言模型的嵌入式 C 软件测试自动化方案,通过利用项目特定工件减少幻觉,在工业评估中实现了 100% 的语法正确率和 85% 的运行时验证通过率,有望将测试时间缩短 66% 并达到每小时生成 270 个测试的效率。

Maximilian Harnot, Sebastian Komarnicki, Michal Polok, Timo Oksanen

发布于 Wed, 11 Ma
📖 1 分钟阅读☕ 轻松阅读

Each language version is independently generated for its own context, not a direct translation.

这篇论文讲述了一个关于如何给嵌入式软件(比如控制汽车、机器人或工业设备的软件)快速“体检”的故事

想象一下,你是一家大型工厂的质检主管。你的任务是确保生产线上每一个新零件(软件代码)都是完美的。以前,你需要雇佣一群经验丰富的老工匠(测试工程师),让他们一个个手工编写“检查清单”(测试用例),看看零件会不会坏。

问题出在哪?
现在的工厂生产速度太快了(软件迭代快),老工匠们忙得脚不沾地,根本写不完检查清单。如果让他们随便写,或者让一个刚毕业的实习生(普通的 AI 大模型)来写,他们可能会:

  1. 瞎编乱造:发明一些根本不存在的零件型号(幻觉)。
  2. 用错工具:拿着扳手去拧螺丝(API 调用错误)。
  3. 漏掉重点:只检查了外观,没检查内部结构。

这就像让一个没去过你家、没看过你家装修图纸的装修工,凭想象给你家写一份“房屋安全报告”,他可能会说“你的厨房有个不存在的窗户”,这反而让你更担心,而不是更放心。


这篇论文提出了什么解决方案?

作者们(来自德国慕尼黑工业大学和 Hydac 软件公司)发明了一套**“超级智能助手 + 专属知识库”**的组合拳,叫做 EmbC-Test

我们可以把它想象成给那个“刚毕业的实习生”配了一位**“老法师”和一本“家谱”**。

1. 核心魔法:RAG(检索增强生成)

普通的 AI 就像一个博闻强记但没来过现场的“百科全书”。而 RAG 就像是给这个 AI 配了一个**“随身档案袋”**。

  • 以前(零样本生成):AI 只能靠脑子里的通用知识瞎猜。
  • 现在(RAG):当 AI 要写一份检查清单时,它会先打开“档案袋”,里面装着:
    • 你们公司的设计图纸(源代码和头文件)。
    • 以前写过的优秀检查清单(旧测试用例)。
    • 公司规矩(编码规范)。

AI 会先读这些资料,然后说:“哦,原来这个零件叫‘液压阀’,以前大家是这么检查它的,而且我们要用‘蓝色扳手’。好,我现在照着这个规矩写。”

2. 聪明的“切菜”方法(分块策略)

要把这些厚厚的图纸和旧清单塞进 AI 的“档案袋”,不能整本塞进去,得切成小块。

  • 笨办法:不管三七二十一,每 100 个字切一刀。结果可能把“发动机”这个词切成了“发”和“动机”,AI 就看不懂了。
  • 聪明办法(论文中的 AST 分块):像切蛋糕一样,顺着“结构”切。把“函数”、“结构体”这些完整的逻辑单元切在一起。这样 AI 拿到的每一块都是完整的“逻辑积木”,而不是碎渣。

3. 混合搜索(双重保险)

AI 找资料时用了两招:

  • 语义搜索:找“意思”相近的。比如你搜“刹车”,它能找到“停止”相关的文档。
  • 关键词搜索:找“字面”完全一样的。比如你搜特定的变量名 Hydraulic_Pressure,它能精准匹配。
    两者结合,确保 AI 找到的资料既懂行精准

效果怎么样?(用数据说话)

这套系统在实际工厂里试用后,效果惊人:

  1. 语法全对:生成的检查清单,100% 没有错别字或格式错误(就像实习生写的字全是工整的)。
  2. 真的能跑85% 的检查清单直接运行就能通过验证(不像以前,很多是“看起来像那么回事,一跑就崩”)。
  3. 速度起飞
    • 老工匠:写一个检查清单需要 1 小时
    • AI 助手:每小时能生成 270 个 检查清单!
    • 最终结果:虽然 AI 生成的不能 100% 直接用(有些需要微调),但经过人工简单修改后,整体工作量减少了 66%

这对我们意味着什么?

这就好比以前你需要花 3 天时间手写一份 50 页的体检报告,现在 AI 帮你 10 分钟生成了一份草稿,你只需要花 1 天时间审核和修改它。

最大的改变是角色的转变:

  • 以前:工程师是“写手”,整天埋头写枯燥的代码,容易累出错。
  • 现在:工程师变成了“主编”和“专家”。AI 负责打草稿、做基础工作,人类专家负责把关、分析极端情况、提升质量

总结

这篇论文告诉我们:不要指望 AI 能完全替代人类专家,但如果你给 AI 配上正确的“参考资料”(RAG)和“切分方法”,它就能成为人类最得力的助手。

它让嵌入式软件的开发不再被“写测试代码”这个瓶颈卡住,让工程师能把精力花在更聪明、更有价值的事情上,就像给工厂装上了一个不知疲倦的“超级实习生”,让生产速度和质量同时起飞。