Program Structure-aware Language Models: Targeted Software Testing beyond Textual Semantics
作者: Khang Tran, Khoa Nguyen, Cristian Borcea, NhatHai Phan
分类: cs.SE, cs.LG
发布日期: 2026-04-20
备注: Accepted in The 64th Annual Meeting of the Association for Computational Linguistics (ACL Findings 2026)
💡 一句话要点
GLMTest:利用程序结构感知的语言模型实现定向软件测试
🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 软件测试 语言模型 代码属性图 图神经网络 定向测试用例生成
📋 核心要点
- 现有基于LLM的测试用例生成方法缺乏有效机制,难以引导模型关注高风险执行分支,限制了其发现深层bug和安全漏洞的能力。
- GLMTest通过集成代码属性图和代码语义,利用图神经网络和语言模型,实现以执行分支为条件的定向测试用例生成。
- 实验结果表明,GLMTest在分支准确率上显著优于现有最先进的LLM,表明其在定向测试用例生成方面的有效性。
📝 摘要(中文)
针对当前大型语言模型在测试用例生成中,缺乏引导模型关注高风险执行分支的有效机制,从而限制了其在发现细微错误和安全漏洞方面的能力,本文提出了GLMTest,这是一个首个程序结构感知的LLM框架,用于定向测试用例生成。GLMTest无缝集成了代码属性图和代码语义,利用图神经网络和语言模型,使测试用例的生成以执行分支为条件。这种结构化的条件作用实现了可控的和以分支为目标的测试用例生成,从而有可能增强错误和安全风险的发现。在真实项目上的实验表明,基于Qwen2.5-Coder-7B-Instruct模型构建的GLMTest,在TestGenEval基准测试中,分支准确率从27.4%提高到50.2%,优于最先进的LLM,即Claude-Sonnet-4.5和GPT-4o-mini。
🔬 方法详解
问题定义:现有基于大型语言模型的测试用例生成方法,虽然可以通过prompt工程化的变异提高分支覆盖率,但缺乏针对特定高风险执行分支的引导机制。这导致模型难以发现隐藏较深的bug和安全漏洞,测试效率和效果受到限制。现有方法无法有效利用代码的结构信息,仅仅依赖文本语义进行测试用例生成。
核心思路:GLMTest的核心思路是将代码的结构信息(通过代码属性图表示)和代码的语义信息结合起来,并利用图神经网络和语言模型,使测试用例的生成过程能够以特定的执行分支为条件。通过这种结构化的条件作用,可以实现可控的和以分支为目标的测试用例生成,从而提高发现特定类型bug和安全漏洞的概率。
技术框架:GLMTest框架主要包含以下几个模块:1) 代码属性图生成模块:将源代码转换为代码属性图,捕捉代码的结构信息。2) 图神经网络模块:利用图神经网络对代码属性图进行编码,提取代码的结构特征。3) 语言模型模块:利用语言模型生成测试用例,并以图神经网络提取的结构特征作为条件。4) 分支选择模块:选择需要覆盖的特定执行分支,作为测试用例生成的目标。整个流程是,首先选择目标分支,然后生成代码属性图,通过GNN编码,最后语言模型根据编码信息生成测试用例。
关键创新:GLMTest的关键创新在于将代码属性图和图神经网络引入到基于语言模型的测试用例生成中,实现了程序结构感知的测试用例生成。与现有方法相比,GLMTest能够更有效地利用代码的结构信息,从而生成更具有针对性的测试用例。这是首次将代码属性图和GNN结合到LLM测试用例生成中。
关键设计:GLMTest使用代码属性图来表示代码的结构信息,并使用图神经网络(具体类型未知)对代码属性图进行编码。语言模型采用Qwen2.5-Coder-7B-Instruct模型。损失函数和具体的网络结构等技术细节在论文中可能有所描述,但摘要中未提及,因此未知。
🖼️ 关键图片
📊 实验亮点
GLMTest在TestGenEval基准测试中,分支准确率从27.4%提高到50.2%,显著优于最先进的LLM,如Claude-Sonnet-4.5和GPT-4o-mini。这表明GLMTest在定向测试用例生成方面具有显著优势,能够更有效地覆盖目标执行分支,从而提高bug和安全漏洞的发现能力。
🎯 应用场景
GLMTest可应用于软件测试、安全漏洞检测、代码质量评估等领域。通过定向生成测试用例,可以更有效地发现软件中的bug和安全漏洞,提高软件的可靠性和安全性。该研究成果有助于提升软件开发效率,降低软件维护成本,并为构建更安全可靠的软件系统提供技术支撑。
📄 摘要(原文)
Recent advances in large language models for test case generation have improved branch coverage via prompt-engineered mutations. However, they still lack principled mechanisms for steering models toward specific high-risk execution branches, limiting their effectiveness for discovering subtle bugs and security vulnerabilities. We propose GLMTest, the first program structure-aware LLM framework for targeted test case generation that seamlessly integrates code property graphs and code semantics using a graph neural network and a language model to condition test case generation on execution branches. This structured conditioning enables controllable and branch-targeted test case generation, thereby potentially enhancing bug and security risk discovery. Experiments on real-world projects show that GLMTest built on a Qwen2.5-Coder-7B-Instruct model improves branch accuracy from 27.4% to 50.2% on TestGenEval benchmark compared with state-of-the-art LLMs, i.e., Claude-Sonnet-4.5 and GPT-4o-mini.