2026-06-25
LLM 自动化测试用例生成:Agentless 思路的背景调研
缘起
我在思考一个问题:现在有很多用 LLM Agent 自动生成测试用例的研究,但大部分都是在调优 Agent 策略来提升质量。能不能反过来——用 Agentless(固定流程) 的思路,通过定义清晰的测试生成流水线,既保证效果、又避免 Agent 过度调用工具的 Token 成本?
带着这个想法做了一轮背景调研,以下是核心发现。
一、当前的方法格局
LLM 测试生成领域在过去两年经历了爆炸式增长。按技术路线可以分成这几类:
1. 纯 LLM 提示(Zero-shot / Few-shot)
早期工作,直接将被测函数丢给 LLM 让它生成测试。
ChatTester(Yuan et al., arXiv 2023)最早系统评估了 ChatGPT 的单元测试生成能力。发现生成的测试可读性不错,但 50%+ 存在编译或执行错误。他们提出了迭代精化策略——让 LLM 自我修复——把可编译测试量提升了 34.3%。
2. 生成-验证-修复循环
ChatUniTest(Chen et al., FSE 2024 Demo)用自适应焦点上下文机制筛选有用上下文,配合生成-验证-修复的流水线。本质上是固定流程。
TestPilot(Schäfer et al., TSE 2024, Microsoft Research)针对 JS/TS API 函数生成单元测试,中位语句覆盖率 70.2%。核心是把函数签名、实现、文档中的使用示例拼成 prompt,测试失败后用错误信息再提示 LLM 修复。这其实是一个典型的 Agentless 风格方案——没有工具调用,没有 Agent 决策。
3. SBST + LLM 混合
CodaMOSA(Lemieux et al., ICSE 2023, Microsoft Research)在经典的 SBST 工具 Pynguin 覆盖率停滞时,调 Codex 生成示例测试注入搜索空间。SBST 主导,LLM 辅助跳出局部最优。
TELPA(Yang et al., TOSEM 2025, 天津大学)针对「难覆盖分支」,通过程序分析提取对象构造信息和分支依赖,引导 LLM 生成能覆盖复杂分支的测试。分支覆盖率比 Pynguin 高 31%、比 CodaMOSA 高 22%。这是一个典型的固定流程 + 程序分析方案。
4. 程序分析 / 覆盖率引导
ASTER(Pan et al., ICSE-SEIP 2025, IBM Research)通过静态分析提取方法签名、调用层级和依赖,构建 prompt 引导 LLM 生成测试,再做后处理修复编译错误。支持 Java 和 Python,覆盖率比 EvoSuite 高 26.4%。关键:这是一个固定流程方案,不是 Agent。 另外发现 GPT-4 不是最优的——Granite-34B、甚至 Llama3-8B 在测试生成上也很有竞争力。
CoverUp(Altmayer Pizzorno & Berger, FSE 2025, UMass Amherst)将覆盖率分析、代码上下文和错误反馈组合进 prompt,迭代引导 LLM 生成测试。中位 line+branch 覆盖率 80%(CodaMOSA 47%)。迭代式固定流程,无 Agent 自主探索。
HITS(ASE 2024)把复杂方法切成切片(slice),逐个切片引导 LLM 生成测试。
5. 变异测试引导
MuTAP(Dakhel et al., arXiv 2023)用存活的变异体增强 prompt,引导生成能检测更多缺陷的测试。
Meta ACH(Harman et al., FSE 2025)针对隐私合规生成变异体,再让 LLM 生成能「杀死」这些变异体的测试。在 Messenger 和 WhatsApp 中,工程师接受了 73% 的生成测试。
6. Agent 自主探索
SWE-agent(Yang et al., NeurIPS 2024, Princeton)首个把 Agent 框架系统化引入软件工程任务的工作。Agent 可以在仓库中自主执行命令、编辑文件、运行测试。
CodiumAI / Qodo(2022-2024, 商业)IDE 插件形式,分析 AST 识别分支和边界条件,用 LLM 生成测试。
7. SWE-bench 生态
SWE-Dev(Wang et al., ACL 2025 Findings, THU)构建了可扩展的测试生成流水线,从 38,000 个 issue 中过滤出 2,000 个可执行测试用例用于训练 SWE Agent。固定流程方案。
Agentless 中的 reproduction tests(Xia et al., FSE 2025)在 patch 生成阶段生成能复现 bug 的测试用例用于验证。这是 Agentless 思路在测试生成上最直接的应用,但目标是服务 bug fix,不是独立的测试生成方法论。
二、反直觉的发现
做完整轮调研,最大的发现是:
目前没有以「Agentless 测试生成」为独立命题的论文。
但更反直觉的是:当前主流的 LLM 测试生成方法,80% 以上实际上就是 Agentless 的——只是没人用这个标签来标识自己。
| 分类 | 代表工作 | 是否 Agentless |
|---|---|---|
| 纯提示 | ChatTester, TestPilot | ✅ 固定流程 |
| 生成-验证-修复 | ChatUniTest | ✅ 固定流程 |
| SBST+LLM 混合 | CodaMOSA, TELPA, CoverUp | ✅ 固定流程 |
| 静态分析引导 | ASTER | ✅ 固定流程 |
| 变异引导 | MuTAP, Meta ACH | ✅ 固定流程 |
| Agent 自主探索 | SWE-agent, OpenHands | ❌ Agent |
| 商业工具 | CodiumAI/Qodo | 混合 |
这些「事实上 Agentless」的工作共享几个特征:
- 没有让 LLM 自主选择工具或决定下一步动作
- 流程是预定好的(preprocess → generate → validate → repair → augment)
- LLM 仅用作生成引擎,而非决策者
三、为什么这是个有趣的研究方向?
Agent 的已知痛点
Token 成本高——Agent 需要维护完整交互历史,上下文快速膨胀。Agent 方法的路径不确定性(LLM 推理 + 工具调用路径双重随机性)导致结果不可复现。此外,测试生成中的幻觉问题严重——50%+ 的 LLM 生成测试存在编译/执行错误。
为什么 Agentless 在测试生成上可能天然合适?
1. 测试生成是「结构明确」的任务
不同于 bug fix 需要探索定位,测试生成的目标函数是确定的。所需信息(源码、依赖)通过静态分析可以一次性获取,不需要 Agent 自主探索。
2. CoverUp 和 ASTER 已经证明
覆盖率引导的迭代固定流程已经能做到 80% 的中位覆盖率——不输任何 Agent 方案。
3. 成本差距巨大
Agentless 在 bug fix 上每 issue 只要 $0.70(用 GPT-4),Agent 方案要高出几倍甚至几十倍。在测试生成上这个差距只会更大,因为测试生成不需要漫长的 bug 定位过程。
4. 可复现性和 CI/CD 集成
固定流程天然适合流水线化、可审计、可复现——这些对于回归测试来说至关重要。
四、研究空白
具体来说,有五个明确的空白点:
| # | 空白 | 机会 |
|---|---|---|
| 1 | 没有 Agentless 测试生成的方法论定义 | 提出系统化的固定流程框架,每个阶段有明确输入/输出 |
| 2 | 没有 Agentless vs Agent 在测试生成上的对比实验 | 设计实验比较覆盖率、成本、可复现性、开发者接受度 |
| 3 | Agentless 的 reproduction tests 未扩展为独立测试生成方法论 | 扩展成能独立生成回归测试套件的框架 |
| 4 | 程序分析 + Agentless 的结合不充分 | ASTER 和 TELPA 的做法可以整合进统一框架 |
| 5 | 低成本企业级方案缺失 | $0.70/issue 级别的方案如果能做到,就是杀手锏 |
五、论文清单
| 工具/论文 | 年份 | 发表 | 类型 |
|---|---|---|---|
| ChatTester | 2023 | arXiv | 纯提示 |
| TestPilot | 2023 | TSE 2024 | 提示+修复 |
| CodaMOSA | 2023 | ICSE 2023 | SBST+LLM 混合 |
| MuTAP | 2023 | arXiv | 变异引导 |
| ChatUniTest | 2024 | FSE 2024 Demo | 生成-验证-修复 |
| TELPA | 2024 | TOSEM 2025 | 程序分析引导 |
| CoverUp | 2024 | FSE 2025 | 覆盖率引导迭代 |
| HITS | 2024 | ASE 2024 | 方法切片 |
| ASTER | 2025 | ICSE-SEIP 2025 | 静态分析引导 |
| Meta ACH | 2025 | FSE 2025 | 变异引导 |
| SWE-Dev | 2025 | ACL 2025 Findings | 测试生成流水线 |
| SWE-agent | 2024 | NeurIPS 2024 | Agent 框架 |
| SpecRover | 2025 | ICSE 2025 | Agent(含固定组件) |
| Agentless | 2025 | FSE 2025 | 固定流程修复(含 reproduction tests) |
六、下一步
这份调研确认了方向的价值。接下来可以:
- 设计 Agentless 测试生成的流程框架——细化每个阶段的输入输出
- 做一个最小原型验证——选一个场景(比如 Django 的简单方法),跑通全流程
- 对比实验——在 CoverUp 或 ASTER 的数据集上做 Agentless vs Agent 的成本/效果对比
以上是背景调研的全部内容。原文 18KB 的完整报告存在本地,感兴趣的细节可以继续深挖。