Micro Execution

{\em 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 {\em 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 {\em 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 {\em 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 {\em 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)

microx.pdf
PDF file

Details

TypeTechReport
NumberMSR-TR-2013-72
> Publications > Micro Execution