逻辑驱动测试(Logic Driven Testing,LDT)是在程序边界及可操作范围之内,通过程序扫描,检测程序的基本功能、逻辑结构、程序状态、执行过程及代码与规则模式的匹配性,检出数据类型、数据结构、代码逻辑、内存管理、数据定义、数据使用等缺陷,是基于程序逻辑结构,研究解决软件质量问题的重要方法。逻辑驱动测试将程序视为一个透明、开放、可拆解的结构,程序逻辑结构、运行方式、执行动作、执行结果一览无遗,故称之为白盒测试(White-box Testing),亦称之为结构测试或基于代码的测试。
逻辑驱动测试面向源代码,基于程序逻辑结构,始于软件单元或函数,目标明确,针对性强,环境依赖性低,具有完备的理论基础和较强的工具支撑,能够实现自动执行及回归,便于缺陷定位和修复,易于质量度量,有助于统一编程风格,优化程序结构,改进代码质量,具有显著的效率、成本和质量改进优势。但是,逻辑驱动测试需要对程序的逻辑结构进行全面剖析、深入了解,要求测试人员具备较强的软件设计、代码理解、缺陷分析、工具使用等能力,否则将导致脆弱测试(Flaky Test);同时,虽然通过静态分析能够检出规则匹配、CRLF注入、信息泄露等常见缺陷,但逻辑覆盖算法实现过程中的工程化约减,导致覆盖精度损失,进而导致缺陷漏报、误报、误判,且理论上不可彻底根除,现行静态分析工具的误报率为5%~10%,且路径遗漏、数据敏感性错误检测力有不逮;此外,受规则库、缺陷库的充分性、有效性及分析的自动化、智能化能力的制约,逻辑驱动测试的效能尚无法得以充分发挥。