论文
LLM 与人体单元测试:真实 Python 错误的故障检测
LLM vs. Human Unit Tests: Fault Detection on Real Python Bugs
摘要
大语言模型 (LLM) 在自动化单元测试生成方面显示出了巨大的前景,但它们相对于人工编写的测试的实际有效性仍然知之甚少。现有的评估通常依赖于面向覆盖范围的基准,这些基准不直接评估故障检测能力。我们对 LLM 生成的和人工编写的单元测试在三个互补的 Python 基准测试中进行了实证比较:来自 BugsInPy 的 29 个真实历史错误、从 python-slugify 和打包中提取的函数级基准测试,以及受控的配对基准测试。我们的生成管道将 Gemini 2.5 Flash 与轻量级词汇检索机制结合起来,该机制在生成时提供与错误相关的上下文。在八个质量维度上,LLM 生成的具有检索增强上下文的测试在 69% 的情况下检测到错误,而通用人类编写的测试为 17.2%(Fisher 精确,$p < 0.001$,Cohen's $h = 1.10$)。重要的是,两种方法之间的线路和分支覆盖率几乎相同(84.8% vs. 88.5% 和 75.2% vs. 82.1%),这证实了覆盖率不足以代表故障检测能力。我们讨论了每种方法表现出色的条件,描述了它们的互补优势,并确定了检索上下文和可重复的基准构建在有意义的测试质量评估中的关键作用。