Sakura:一种从自然语言测试描述生成复杂测试的方法
Sakura: An Approach for Generating Complex Tests from Natural Language Test Descriptions
摘要
自动化软件测试的研究已经跨越了几十年。大多数现有方法为各个方法生成单元测试,验证隔离的 API 端点或目标用户界面 (UI) 层,非 API 和非 UI 生成器通常仅执行单个焦点方法。最近的经验证据表明,此类生成的测试与开发人员编写的测试之间存在巨大差距,这些测试通常跨越多个焦点类和方法,涉及多步骤调用序列,并包含链式断言,所有这些特征都是当前方法无法捕获的。为了解决这一差距,我们建议根据开发人员意图的自然语言(NL)描述生成测试,这是一种用于指定复杂测试场景的富有表现力且可访问的媒介。我们推出了 Sakura,这是第一个基于代理的框架,用于从 NL 描述生成结构复杂的测试。 Sakura 将 NL 描述分解为结构化块,并使用多代理系统对其进行处理:本地化代理通过静态分析在具体应用程序代码中建立测试步骤,组合代理合成可编译的测试代码并使用执行反馈迭代地细化它,监督代理协调它们的交互。为了评估 Sakura,我们在三个抽象级别上策划了一个新的 NL 测试描述数据集,反映了不同的最终用户角色,系统地源自 Apache Commons 项目中开发人员编写的测试。在 20 个应用程序和 1,464 个测试场景中,Sakura 的性能明显优于现成的代理工具,例如使用多个 LLM 实例化的 Gemini CLI,与使用相同模型的 真值 测试相比,测试可编译性提高了 50-78%,覆盖重叠率提高了 38-66%。此外,Sakura 与 Devstral Small 2 和 Qwen3-Coder 等小型开源模型配合使用,其性能优于使用大型专有模型的 Gemini CLI,且成本更低。