2025-11-21T20:16:16.286197

The Potential of LLMs in Automating Software Testing: From Generation to Reporting

Sherifi, Slhoub, Nembhard
Having a high quality software is essential in software engineering, which requires robust validation and verification processes during testing activities. Manual testing, while effective, can be time consuming and costly, leading to an increased demand for automated methods. Recent advancements in Large Language Models (LLMs) have significantly influenced software engineering, particularly in areas like requirements analysis, test automation, and debugging. This paper explores an agent-oriented approach to automated software testing, using LLMs to reduce human intervention and enhance testing efficiency. The proposed framework integrates LLMs to generate unit tests, visualize call graphs, and automate test execution and reporting. Evaluations across multiple applications in Python and Java demonstrate the system's high test coverage and efficient operation. This research underscores the potential of LLM-powered agents to streamline software testing workflows while addressing challenges in scalability and accuracy.
academic

The Potential of LLMs in Automating Software Testing: From Generation to Reporting

基本信息

  • 论文ID: 2501.00217
  • 标题: The Potential of LLMs in Automating Software Testing: From Generation to Reporting
  • 作者: Betim Sherifi, Khaled Slhoub, Fitzroy Nembhard (佛罗里达理工学院)
  • 分类: cs.SE (软件工程), cs.AI (人工智能)
  • 发表时间: 2024年12月31日
  • 论文链接: https://arxiv.org/abs/2501.00217

摘要

软件工程中高质量软件的开发需要强健的验证和确认过程。虽然手工测试有效,但耗时且成本高昂,因此对自动化方法的需求日益增长。大语言模型(LLMs)的最新进展显著影响了软件工程,特别是在需求分析、测试自动化和调试等领域。本文探索了一种面向智能体的自动化软件测试方法,利用LLMs减少人工干预并提高测试效率。所提出的框架集成了LLMs来生成单元测试、可视化调用图,并自动化测试执行和报告。在Python和Java多个应用程序上的评估表明,该系统具有高测试覆盖率和高效运行能力。

研究背景与动机

问题定义

  1. 核心问题: 传统软件测试方法存在效率低下、成本高昂、人工干预过多的问题
  2. 现实需求: 软件质量保证需要全面的验证和确认过程,但手工测试难以满足现代软件开发的效率要求

重要性分析

  • 软件测试被认为是软件工程教育中最重要的领域之一
  • 回归测试等手工测试方法特别耗时和昂贵
  • 确保软件产品按预期执行并满足质量标准对软件工程至关重要

现有方法局限性

  • 手工测试: 虽然有效但耗时且成本高
  • 传统自动化测试: 无法完全替代手工方法,在GUI测试等场景下仍需人工参与
  • 传统基于智能体的软件测试(ABST): 缺乏智能化的测试用例生成能力

研究动机

利用LLMs的强大能力,结合多智能体系统,构建一个能够动态生成测试用例、显著减少手工输入、最小化测试用例创建和执行时间的智能化测试框架。

核心贡献

  1. 提出了基于LLM的多智能体软件测试框架,实现了从测试生成到报告的端到端自动化
  2. 设计了四层架构系统,包括音频Web客户端、软件测试智能体、LLMs和开发环境
  3. 实现了动态测试用例生成,利用LLMs自动生成定制化单元测试和测试理由
  4. 集成了可视化功能,自动生成DOT图形式的调用图来展示应用程序交互
  5. 验证了系统有效性,在Python和Java项目上实现了高测试覆盖率(平均93.45%-97.71%)

方法详解

任务定义

输入: 用户通过语音或文本提供的测试请求(包含项目名称、子文件夹、编程语言等信息) 输出: 包含测试结果、覆盖率分析、测试理由和调用图的综合PDF报告 约束: 支持Python和Java项目,专注于单元测试层面

模型架构

高层架构

系统包含四个主要组件:

  1. 音频Web客户端: 捕获用户输入(语音命令或文本),通过HTTP GET请求启动测试工作流
  2. 软件测试智能体: 系统核心组件,协调各组件间的交互,作为测试脚本生成、执行和报告创建的抽象层
  3. 大语言模型(LLMs): 执行实体提取、测试生成和DOT图生成任务
  4. 开发环境: 提供项目代码访问、执行生成的测试用例并显示结果

低层架构工作流程

  1. 初始化: 客户端发送语音命令到测试生成器API
  2. 实体提取: LLM从用户提示中提取项目名称、子文件夹和编程语言
  3. 文件定位: FileLocator模块定位指定项目文件夹并提取文件内容
  4. 测试生成: LLM(使用Gemini)生成单元测试和相应理由
  5. 图形生成: LLM生成DOT图字符串用于可视化调用图
  6. 执行与报告: 测试执行器运行测试,PDF报告生成器创建包含结果、覆盖率和调用图的综合报告

技术创新点

  1. 智能实体提取: 利用LLM自动从自然语言指令中提取关键测试参数
  2. 动态测试生成: 基于代码分析自动生成包含基本用例和边缘用例的测试脚本
  3. 理由生成: 为每个测试用例提供详细的测试理由和覆盖场景说明
  4. 集成可视化: 自动生成调用图帮助理解代码库交互关系
  5. 端到端自动化: 从用户输入到最终报告的完全自动化流程

实验设置

数据集

使用四个不同复杂度的应用程序:

Python项目:

  • Experiment: 基础计算器功能(47行代码)
  • Cinema: 电影院管理系统(183行代码)

Java项目:

  • StudentAverage: 学生成绩计算(114行代码)
  • LibrarySystem: 图书馆管理系统(269行代码)

评价指标

  1. 执行成功率: 完成所有步骤(测试生成、执行、PDF报告生成)的运行比例
  2. 测试覆盖率: 生成测试用例覆盖的代码百分比
  3. 执行时间: 各操作阶段的耗时分析
  4. 语言对比: Python vs Java项目的性能差异

实现细节

  • LLM模型: 主要使用Google Gemini,对比实验使用ChatGPT
  • 测试次数: Python项目20次执行,Java项目24次执行
  • 输入格式: 多种自然语言提示格式测试

实验结果

主要结果

成功率表现

  • Python项目: 20次执行全部成功(100%成功率)
  • Java项目: 24次执行中3次失败(87.5%成功率)
  • 失败原因: 主要由模糊提示和生成测试脚本编译错误导致

执行时间分析

  • 总平均执行时间: 83.5秒
  • 测试生成时间: 62.8秒(占最大比重)
  • 文件夹定位: 9.7秒
  • DOT图生成: 5.4秒
  • 测试执行: 3.2秒

语言对比结果

指标JavaPython
平均总执行时间86.7秒80秒
测试生成时间62.4秒63.3秒
测试执行时间5.44秒0.87秒
平均测试覆盖率97.71%93.45%

详细项目分析

项目语言代码行数总时间测试生成测试执行覆盖率
LibrarySystemJava269119.06s92.54s5.39s94.67%
StudentManagerJava11462.55s39.79s5.48s100.00%
CinemaPython183110.13s92.43s0.79s88.30%
ExperimentPython4749.78s34.17s0.96s98.60%

LLM对比实验

ChatGPT vs Gemini (LibrarySystem项目):

  • ChatGPT生成时间: ~180秒(约为Gemini的2倍)
  • ChatGPT测试覆盖率: 98%
  • 注:使用ChatGPT Web应用而非API可能影响生成时间

案例分析

测试理由示例

Cinema项目 - rent_movie函数:

  • 基本用例: "测试将可用电影租给现有会员"
  • 边缘用例: "测试租用不存在的电影、将电影租给不存在的会员、租用已被租出的电影"

Library项目 - getTitle函数:

  • 基本用例: "测试对象创建后检索图书标题"
  • 边缘用例: 不适用

相关工作

传统基于智能体的软件测试(ABST)

  • 发展历程: 自1999年开始受到关注,过去十年达到显著高峰
  • 应用重点: 主要强调系统级测试,Java为主要目标语言
  • 代表工作:
    • Web系统自动化测试框架(多智能体协作)
    • 工业咖啡机测试(模糊逻辑优先级排序)

LLM增强的软件测试

  • 行业应用调研: 48%的从业者已将LLMs集成到测试活动中
  • 应用领域: 需求分析、测试计划开发、测试自动化
  • 常用工具: ChatGPT、GitHub Copilot
  • 研究趋势: 102篇相关论文分析显示LLMs在测试用例生成、断言创建等方面具有显著价值

结论与讨论

主要结论

  1. 高成功率: LLM驱动的智能体在自动化软件测试中表现出色,Python项目100%成功率
  2. 高覆盖率: 平均测试覆盖率超过93%,证明了生成测试用例的有效性
  3. 效率提升: 显著减少了人工干预,实现了从测试生成到报告的端到端自动化
  4. 语言适应性: 框架成功支持Python和Java两种主流编程语言

局限性

  1. Java项目稳定性: Java执行中的失败率相对较高,需要改进自然语言处理和语法准确性
  2. 测试范围限制: 当前仅专注于单元测试,缺乏集成测试和系统级测试
  3. 可视化功能: 调用图虽然有用,但缺乏热力图覆盖等高级功能
  4. 输入依赖: 对提示质量敏感,模糊提示可能导致失败

未来方向

  1. 扩展测试类型: 引入集成测试和系统级测试支持
  2. 增强语言支持: 扩展到更多编程语言
  3. 改进可视化: 添加缺陷倾向性热力图覆盖
  4. 需求集成: 将需求规格文档作为提示输入以提高精确性
  5. 错误处理: 改善对模糊提示的处理和错误恢复机制

深度评价

优点

  1. 创新性强: 首次系统性地将LLM与多智能体架构结合用于端到端软件测试自动化
  2. 实用价值高: 解决了软件测试领域的实际痛点,具有很强的工程应用价值
  3. 实验充分: 跨语言、多项目的全面评估,结果具有说服力
  4. 架构清晰: 高低层架构设计合理,模块化程度高,便于扩展和维护

不足

  1. 测试范围局限: 仅支持单元测试,无法满足完整的软件测试需求
  2. 错误分析不足: 对Java项目失败原因的深入分析有限
  3. 基准对比缺失: 缺乏与现有自动化测试工具的详细对比
  4. 可扩展性验证: 未在大型复杂项目上验证系统的可扩展性

影响力

  1. 学术贡献: 为LLM在软件工程领域的应用提供了新的研究方向
  2. 实用价值: 可直接应用于软件开发流程,提高测试效率
  3. 技术推广: 展示了LLM在自动化测试领域的巨大潜力
  4. 可复现性: 架构描述详细,便于其他研究者复现和改进

适用场景

  1. 中小型项目: 特别适合代码规模在几百行以内的项目
  2. 单元测试自动化: 可以显著减少单元测试的人工编写工作
  3. 快速原型验证: 适用于需要快速生成测试用例的场景
  4. 教育培训: 可用于软件测试教学和培训场景

参考文献

论文引用了13篇重要参考文献,涵盖了传统ABST方法、LLM在软件测试中的应用、以及软件测试基础理论等关键领域,为研究提供了坚实的理论基础。


总体评价: 这是一篇在软件工程和人工智能交叉领域具有重要价值的研究论文。虽然存在一些局限性,但其创新性的方法和实用性的结果为LLM在软件测试自动化领域的应用开辟了新的方向,具有较好的学术价值和实用前景。