返回
Unified and Split Symbolic Execution for Exposing Semantic Differences
DOI:10.1145/3705299.png)
摘要
En 中文
软件演化是软件开发生命周期中的一个重要活动。理解软件系统两个版本之间的语义差异是一项关键但具有挑战性的任务,特别是在许多安全关键领域。因此,已提出各种技术来检查程序及其演化之间的语义差异。但是,许多现有技术在准确性和效率方面仍远未令人满意。在本文中,我们提出了一种新型框架,称为US2E,它能够高效有效地生成尽可能少的测试用例,以揭示两个版本之间的尽可能多的语义差异。具体来说,给定一个统一的控制流图,该图表示程序的两种版本,US2E尽可能多地执行公共节点,并将非公共节点的执行单独留在单个符号执行实例中。我们在4个基准测试的86对C程序上评估了US2E,实验结果表明,US2E能够高效有效地生成测试用例,以展示两个版本之间的语义差异,其性能优于6个基线工具。
Keyword:
software evolution
semantic difference detection
test case generation
concolic execution
control flow graph

