Micro execution is the ability to execute any code fragment without a user-provided test driver or input data. The user simply identifies a function or code location in an exe or dll. A runtime Virtual Machine (VM) customized for testing purposes then starts executing the code at that location, catches all memory operations before they occur, allocates memory on-the-fly in order to perform those read/write memory operations, and provides input values according to a customizable memory policy, which defines what read memory accesses should be treated as inputs.
MicroX is a first prototype VM allowing micro execution of x86 binary code. No source code or pdb required. No test driver/harness required: MicroX automatically discovers dynamically the Input/Output signature of the code being run. Input values are provided as needed along the execution and can be generated in various ways, e.g., randomly or using some other test-generation tool. To the best of our knowledge, MicroX is the first VM designed for test isolation and generation purposes.
This paper introduces micro execution and discusses how to implement it, strengths and limitations, applications, related work and long-term goals.
(July 2013, revised September 2013)