论文

使用大型语言模型增强 NLP 库的自动单元测试生成

Enhancing Automated Unit Test Generation for NLP Libraries Using Large Language Models

摘要

EvoSuite 等自动化单元测试生成工具在通用软件上表现良好,但在处理特定领域软件(例如自然语言处理 (NLP) 库)时常常遇到困难,其中输入必须遵循语义、句法和结构约束。大型语言模型 (LLM) 可以生成领域相关的测试代码,但仅由 LLM 生成的测试通常无法编译或无法实现足够的覆盖范围。我们提出了 LLMSuite,这是一种混合测试生成框架,它将自我细化提示与类级 LLM 推理集成到基于搜索的测试过程中。在这种机制中,大语言模型根据前几代的反馈迭代改进其测试片段。这使得模型能够生成越来越精确、领域一致的代码片段,引导进化搜索练习复杂且难以达到的行为。当底层进化算法中的多代目标没有改进时,这些精炼的片段将被解析并注入到 EvoSuite 的群体中以扩展搜索空间。为了支持我们的评估,我们构建了一个新数据集,其中包含来自五个广泛使用的 Java NLP 项目的 100 个类。我们还用 Java 重新实现了 CodaMOSA,这是一种最近的混合 SBST-LLM 技术,以实现直接比较。在此数据集中,LLMSuite 将分支和线路覆盖率分别提高了约 10% 和 8%,并且突变得分比 CodaMOSA-J 高 11%。与 EvoSuite 相比,LLMSuite 的分支和线路覆盖率高出大约 15%,突变得分高出 5%。与仅 LLM 基线相比,其结构覆盖率提高了 36%,突变得分提高了约 24.7 个百分点。最后,LLMSuite 通过执行通常未经测试的特定于域的行为来补充手动编写的测试套件。