what’s the chance of randomly generating (x, y) to trigger crash? 1/264
blackbox: infinite monkey theorem
symbolic execution
whitebox: implementation knowledge - draw the tree of paths
compare the search space to the space of input
we need an oracle that is able to efficiently solve the path conditions
SAT/SMT solver
termininology
SAT: boolean satisfiability
SMT: satisfiability modulo theories
breakthrough in SAT/SMT solving
building block for modern tools:
MS Office (FlashFill),
Visual Studio (IntelliTest, StaticDV), …
try Z3 yourself; demo mini-mc
is a “minimal” implementation of KLEE’s key ideas (~15 lines of Python code).
Download it and run the examples, such as
mod_eqv and
test_me.
If you want to run it on your own machine,
install Z3 first;
you may use apt-get, homebrew, or build it from source code.