LLM和符号执行在自动化测试用例生成中的结合,代表了一种神经-符号混合范式。为了用LLM的语义理解和生成能力,去弥补符号执行在复杂环境建模和约束求解上的短板,同时用符号执行的系统性途径探索能力,来约束LLM的幻觉和途径包括缺失。这种融合仍处于能力互补、边界清晰的阶段,边界可从两种技术各自的固有局限以及融合后产生的新约束来理解。
LLM在测试生成中的能力和边界
LLM擅长从代码和文档中提取语义,生成人类可读的测试意图和断言,但生成过程本质上是概率性的,缺乏对程序执行途径的系统性推理能力。
能力表现:
语义理解和定向输入生成:在定向测试输入生成任务中,ChatGPT等模型在43.40%至58.57% 的样本上成功触达目的分支,表现可和传统约束求解工具相媲美甚至更优。
作为辅助启发式:LLM可作为途径探索的启发式向导,在缺乏成熟符号执行工具的语言(如Python)中,用于执行途径推理。
边界:
编译失败和幻觉:LLM生成的测试代码存在较高的编译失败率。研究显示其生成的单元测试编译成功率仅约39%,这直接限制了其实际效用。模型可能错误定义函数签名,或生成无法编译的代码。
包括率短板和浅层包括:LLM生成的测试套件包括率有限,最好模型(GPT-4o)在真实标准上的平均包括率也仅为35.2%,主因是模型难以准确推理复杂代码途径的执行。其测试往往停留在浅层,缺乏对错误场景和边界条件的包括。
系统性途径枚举缺失:LLM本身不有系统地枚举程序途径的机制,直接以完整程序作为提示,会导致其遗漏许多“有趣”的途径。同时,它容易生成大量无意义、无检查的“空用例”,造成“高包括率幻觉”,即包括率数字虚高但缺陷检测能力极低。
符号执行的能力和边界
符号执行通过将输入符号化,系统性地探索程序途径并求解约束,能生成高包括率的测试用例。但短板是可扩展性和环境建模。
能力表现:
系统性途径探索:能够系统性地探索程序所有可执行途径,对于约束清晰的代码,能生成高准确性的测试用例,代码包括率显著高于黑盒测试。
深度途径包括:作用是能生成触达深度执行途径的测试用例,这是LLM难以独立完成的。
边界:
途径爆炸:这是符号执行最根本的扩展性短板。随着分支和循环的增加,需探索的途径数量呈指数级增长,导致分析超时或内存耗尽。
约束求解的局限:SMT求解器在处理复杂数据结构(如指针、动态数组)、浮点数运算或外部API调用时,可能返回“未知”(unknown)或无法求解,导致途径无法被具体化。Z3等求解器的实际分析规模存在约10K行代码的实用上限。
环境和库函数建模困难:符号执行难以精确建模库函数、系统调用及硬件相关行为(如编译期宏),这会导致某些代码分支永远无法被执行,形成包括盲区。为缺失语义生成幽灵代码或替代模型本身就是一个难题。
融合范式的能力边界:
LLM和符号执行的结合(如NexuSym, PALM, GORDIAN等工具)并不是简单的叠加,而是在互补中引入了新的权衡和约束。
融合带来的增益:
引导途径探索以缓解途径爆炸:利用LLM识别代码中的重点或脆弱区域,引导符号执行优先探索相关途径,从而在有限预算内提升漏洞发现效率。如,KLEECopilot使用LLM标记潜在易受攻击的代码来指导途径优先级。
绕过求解器短板:PALM等无求解器方法,通过将途径约束转化为嵌入断言的程序变体,让LLM直接生成能执行该变体的测试输入,从而避免将复杂约束翻译为SMT公式。
生成幽灵代码辅助求解:GORDIAN方法利用LLM生成辅助代码(ghost code),在求解器难以处理的程序片段中传播和调和约束,从而提升符号执行对复杂内部代码片段的分析能力。
融合后的新边界:
全局约束一致性丧失:绕过SMT求解器的LLM直接生成方法(如PALM),代价是牺牲了全局途径约束的一致性,在需要跨多个片段联合约束的深度途径上,可扩展性和有效性会受限。
集成和反馈的复杂性:怎样将LLM生成的测试用例规范化,使其能被符号执行引擎理解和利用,是一个工程挑战。NexuSym为此专门设计了测试用例缩减器和搜索空间摘要器,以弥合两种范式的鸿沟。
对LLM推理能力的依赖:融合系统的有效性高度依赖LLM的途径推理能力。一项实证研究发现,推理能力更强的模型并不总是表现更好,这表示该能力并不是简单随模型规模线性提升。
标准和考虑的缺失:当前领域缺乏完整的标准测试来公正考虑这些混合方法的有效性,同时系统的可解释性和资源效率也是公认的待解难题。
当前LLM+符号执行的能力边界是:能有效缓解符号执行的途径爆炸和部分约束求解难题,并提升LLM生成测试的深度和系统性;但尚未能根治符号执行的根本性扩展短板(如对复杂数据结构和外部环境建模),也未能使LLM完全摆脱对系统化途径推理的依赖。前沿是发展出更紧密的迭代反馈循环(如NexuSym)和神经-符号协同推理机制(如GORDIAN),而不是简单的管道式拼接。未来的突破点可能是自动化生成高质量的符号摘要、面向LLM的可证实中间表示,以及建立能同时测量包括率和缺陷检测有效性的综合考虑体系。