A Tool for Generating Exceptional Behavior Tests With Large Language Models
作者: Linghan Zhong, Samuel Yuan, Jiyang Zhang, Yu Liu, Pengyu Nie, Junyi Jessy Li, Milos Gligoric
分类: cs.SE, cs.AI
发布日期: 2025-05-28
备注: FSE 2025 Demo (Camera Ready)
💡 一句话要点
exLong:利用大语言模型自动生成异常行为测试用例,提升软件测试覆盖率
🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 异常行为测试 大语言模型 代码生成 软件测试 CodeLlama 自动化测试 测试用例生成
📋 核心要点
- 开发者往往忽视异常场景的测试,导致软件在异常处理方面的潜在风险。
- exLong利用微调的CodeLlama大语言模型,结合异常追踪和条件表达式,自动生成高质量的EBTs。
- 演示视频表明,exLong能够有效辅助开发者创建更全面的EBTs,提升软件测试的覆盖率。
📝 摘要(中文)
异常行为测试(EBTs)在软件开发中至关重要,用于验证代码是否能正确处理异常事件并抛出适当的异常。然而,以往的研究表明,开发者通常更倾向于测试“happy path”,即没有异常事件的路径,而忽略异常场景。本文提出了exLong,一个自动生成EBTs的框架,旨在解决这一问题。exLong利用基于CodeLlama微调的大语言模型(LLM),并结合了对抛出异常的追踪、用于保护throw语句的条件表达式以及执行类似追踪的非异常行为测试的推理。演示视频展示了exLong如何有效地帮助开发者为其项目创建全面的EBTs。
🔬 方法详解
问题定义:现有软件测试中,开发者往往更关注正常流程(happy path)的测试,而忽略了异常行为的测试。这导致软件在面对异常情况时,可能出现未预期的错误或崩溃。因此,需要一种方法能够自动生成针对异常行为的测试用例,以提高软件的健壮性和可靠性。
核心思路:exLong的核心思路是利用大语言模型(LLM)的强大代码生成能力,通过学习已有的代码和测试用例,自动生成能够触发异常的测试用例。同时,结合对异常抛出轨迹和条件表达式的分析,确保生成的测试用例能够有效地覆盖各种异常场景。
技术框架:exLong框架主要包含以下几个模块:1) 基于CodeLlama微调的LLM:负责生成测试用例的代码。2) 异常追踪模块:分析代码中可能抛出异常的位置和条件。3) 条件表达式分析模块:提取throw语句的保护条件,用于指导测试用例的生成。4) 非异常行为测试模块:生成与异常行为测试相似的正常行为测试,以确保代码的正确性。整个流程是,首先利用异常追踪和条件表达式分析模块提取异常信息,然后将这些信息输入到微调的LLM中,LLM生成相应的测试用例。
关键创新:exLong的关键创新在于将大语言模型应用于异常行为测试用例的自动生成。与传统的基于规则或搜索的测试用例生成方法相比,exLong能够更好地理解代码的语义,并生成更具创造性和多样性的测试用例。此外,结合异常追踪和条件表达式分析,使得生成的测试用例能够更准确地覆盖各种异常场景。
关键设计:exLong使用CodeLlama作为基础模型,并使用大量的代码和测试用例数据进行微调,以提高其代码生成能力。在异常追踪模块中,使用静态分析和动态分析相结合的方法,以提高异常位置的识别准确率。在条件表达式分析模块中,使用符号执行技术提取throw语句的保护条件。此外,还设计了一种特殊的提示工程(prompt engineering)方法,以指导LLM生成高质量的测试用例。
🖼️ 关键图片
📊 实验亮点
论文的主要亮点在于提出了一个基于大语言模型的异常行为测试用例自动生成框架exLong。虽然论文中没有给出具体的性能数据,但通过演示视频展示了exLong能够有效地辅助开发者创建更全面的EBTs,表明其在提高软件测试覆盖率方面具有潜力。未来的研究可以进一步量化exLong的性能提升,并与其他基线方法进行比较。
🎯 应用场景
exLong可应用于各种软件开发场景,尤其适用于对可靠性和健壮性要求较高的系统,如金融系统、医疗系统和航空航天系统。通过自动生成异常行为测试用例,exLong可以帮助开发者尽早发现和修复潜在的异常处理问题,从而提高软件的质量和可靠性,降低维护成本。未来,该技术可以进一步扩展到其他类型的软件测试,如安全测试和性能测试。
📄 摘要(原文)
Exceptional behavior tests (EBTs) are crucial in software development for verifying that code correctly handles unwanted events and throws appropriate exceptions. However, prior research has shown that developers often prioritize testing "happy paths", e.g., paths without unwanted events over exceptional scenarios. We present exLong, a framework that automatically generates EBTs to address this gap. exLong leverages a large language model (LLM) fine-tuned from CodeLlama and incorporates reasoning about exception-throwing traces, conditional expressions that guard throw statements, and non-exceptional behavior tests that execute similar traces. Our demonstration video illustrates how exLong can effectively assist developers in creating comprehensive EBTs for their project (available at https://youtu.be/Jro8kMgplZk).