Proceedings of the 2011 International Symposium on Software Testing and Analysis 2011
DOI: 10.1145/2001420.2001423
|View full text |Cite
|
Sign up to set email alerts
|

Statically-directed dynamic automated test generation

Abstract: We present a new technique for exploiting static analysis to guide dynamic automated test generation for binary programs, prioritizing the paths to be explored. Our technique is a three-stage process, which alternates dynamic and static analysis. In the first stage, we run dynamic analysis with a small number of seed tests to resolve indirect jumps in the binary code and build a visibly pushdown automaton (VPA) reflecting the global control-flow of the program. Further, we augment the computed VPA with statica… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

0
65
0

Year Published

2012
2012
2020
2020

Publication Types

Select...
6
1
1

Relationship

0
8

Authors

Journals

citations
Cited by 90 publications
(65 citation statements)
references
References 54 publications
0
65
0
Order By: Relevance
“…requiring no program execution). We suspect that the main reason behind the scarcity of studies focusing on dynamic metrics lies in the difficulty of running multiple software versions, 1 especially since doing so involves evolving dependencies and unstable (including non-compilable) versions. For example, prior work [41] cites the manual effort and the long time needed to run different revisions as the reason for reporting dynamic measurements for only a small number of versions.…”
Section: Introductionmentioning
confidence: 99%
See 1 more Smart Citation
“…requiring no program execution). We suspect that the main reason behind the scarcity of studies focusing on dynamic metrics lies in the difficulty of running multiple software versions, 1 especially since doing so involves evolving dependencies and unstable (including non-compilable) versions. For example, prior work [41] cites the manual effort and the long time needed to run different revisions as the reason for reporting dynamic measurements for only a small number of versions.…”
Section: Introductionmentioning
confidence: 99%
“…For example, the research community has invested a lot of effort in designing techniques for improving the testing of software patches, ranging from test suite prioritisation and selection algorithms [11,30,35] to program analysis techniques for test case generation and bug finding [1,2,20,21,27,28,36,40] to methods for surviving errors introduced by patches at runtime [14]. Many of these techniques depend on the existence of a manual test suite, sometimes requiring the availability of a test exercising the patch [24,37], sometimes making assumptions about the stability of program coverage or external behaviour over time [14,29], other times using it as a starting point for exploration [10,16,22,39], and often times employing it as a baseline for comparison [3,6,9,26].…”
Section: Introductionmentioning
confidence: 99%
“…In this CFG, control flow can even reach addresses such as 1 and 2, which lie between existing instructions. 1 Moreover, the imprecision of over-approximating the jump edges propagates: through the spurious edge (6, assume (x = 22), 22), the second indirect jump can be reached, leading to a self-loop at location 22.…”
Section: Overviewmentioning
confidence: 99%
“…In recent work, Babic et al [1] construct a CFG by folding a set of concrete traces and exploring the unexecuted branches of conditional jumps. In our own framework, this corresponds to using trace replay with a trivial static analysis that only knows a single state and thus always enables both branches of conditional jumps.…”
Section: Related Workmentioning
confidence: 99%
“…Synthesizing inputs which cover a target is an essential problem in automated test generation and debugging [1,16,27,29,30,32]. While we borrow ideas from the state of the art in these areas, and combine symbolic execution, static analysis and various heuristics, our approach differs by treating the task as an optimization problem with the goal of exploring paths that minimize the estimated distance to the target.…”
Section: Designmentioning
confidence: 99%