Path exploration based on symbolic output
D Qi, HDT Nguyen, A Roychoudhury - ACM Transactions on Software …, 2013 - dl.acm.org
D Qi, HDT Nguyen, A Roychoudhury
ACM Transactions on Software Engineering and Methodology (TOSEM), 2013•dl.acm.orgEfficient program path exploration is important for many software engineering activities such
as testing, debugging, and verification. However, enumerating all paths of a program is
prohibitively expensive. In this article, we develop a partitioning of program paths based on
the program output. Two program paths are placed in the same partition if they derive the
output similarly, that is, the symbolic expression connecting the output with the inputs is the
same in both paths. Our grouping of paths is gradually created by a smart path exploration …
as testing, debugging, and verification. However, enumerating all paths of a program is
prohibitively expensive. In this article, we develop a partitioning of program paths based on
the program output. Two program paths are placed in the same partition if they derive the
output similarly, that is, the symbolic expression connecting the output with the inputs is the
same in both paths. Our grouping of paths is gradually created by a smart path exploration …
Efficient program path exploration is important for many software engineering activities such as testing, debugging, and verification. However, enumerating all paths of a program is prohibitively expensive. In this article, we develop a partitioning of program paths based on the program output. Two program paths are placed in the same partition if they derive the output similarly, that is, the symbolic expression connecting the output with the inputs is the same in both paths. Our grouping of paths is gradually created by a smart path exploration. Our experiments show the benefits of the proposed path exploration in test-suite construction.
Our path partitioning produces a semantic signature of a program—describing all the different symbolic expressions that the output can assume along different program paths. To reason about changes between program versions, we can therefore analyze their semantic signatures. In particular, we demonstrate the applications of our path partitioning in testing and debugging of software regressions.
