论文

先写代码再生成测试的风险:LLM测试工作流实证研究

On the risk of coding before testing: An empirical study on LLM-based test generation workflow

摘要

大语言模型 (LLM) 越来越多地用于软件工程工作流程中,以生成源代码和测试套件。这种双重功能启用了新兴的开发范例,包括测试优先和代理工作流程,其中单个模型生成和验证实现。然而,这些方法假设生成的测试充当独立且可靠的预言机——这是有效软件测试的基本要求。在本文中,我们挑战这一假设,并研究 LLM 生成的代码是否会导致后续测试的生成产生偏差。我们介绍并实证研究错误传播现象,其中生成代码中的错误会系统地复制到相关的测试工件中。这会导致错误的实现和测试相互一致,掩盖缺陷而不是揭示缺陷。我们在一系列编程任务和代理工作流程中评估这种效果,分析生成的代码和测试断言之间的一致性,特别关注对齐失败的场景。我们的研究检查(i)错误的代码工件是否会导致测试生成产生偏差,(ii)这种偏差是否在不同的提示策略(包括思想链推理)下持续存在,以及(iii)错误如何在中间输出被重用为上下文的多步骤工作流程中传播。结果表明,错误传播非常普遍且影响深远:与独立生成测试相比,在错误代码后生成测试会显着降低故障检测效率(14% 与 25%)。这些发现凸显了当前工作流程的根本局限性,即生成的工件之间缺乏独立性,从而破坏了自动化测试的可靠性。此外,我们的结果揭示了依赖于联合生成流程的实证研究中先前未充分研究的有效性威胁。