arrow
Return

Unified and Split Symbolic Execution for Exposing Semantic Differences

delete2025-01-06
delete0
PRE
AI
H
Hongliang Liang
L
Luming Yin
W
Wenying Hu
Y
Y. Q. Li
W
Wuwei Shen
DOI:10.1145/3705299delete
deleteOriginal
deleteOriginal request for help
deleteShare
deleteSave
Abstract

Abstract

En 中文
Software evolution is an important activity during a software development life cycle. Understanding semantic differences between two versions of a software system is a crucial yet challenging task, especially in many safety critical sectors. Consequently, various techniques have been proposed to check semantic differences between a program and its evolution. But, many current techniques are still far from being satisfactory in terms of the accuracy and efficiency. In this paper, we propose a novel framework, called US \({}^{2}\) E , which can efficiently and effectively generate the minimal number of test cases that reveal as many semantic differences across two versions as possible. Specifically, given a unified control flow graph that denotes two versions of a program, US \({}^{2}\) E executes as many common nodes as possible and leaves execution of non-common nodes separately in a single concolic execution instance. We evaluate US \({}^{2}\) E on 86 pairs of C programs from four benchmarks, and experimental results show that US \({}^{2}\) E can efficiently and effectively generate test cases demonstrating the semantic differences across two versions, with better performance than six baseline tools.
Keywords:
software evolution
semantic difference detection
test case generation
concolic execution
control flow graph

Journal

A
ACM Transactions on Software Engineering and Methodology
IF:
6.2
Papers:
1.2K
Citations:
3.4K

Organization

No organization information available