SymDrive: Testing Drivers without Devices
Device drivers are critical to operating-system reliability, yet are difficult to test and debug. They run in kernel mode, which prohibits the use of many runtime program-analysis tools available for user-mode code, such as Val-grind. Their need for hardware can prevent testing altogether: over two dozen driver Linux and FreeBSD patches include the comment "Compile tested only," indicating that the developer was unable or unwilling to run the driver. Even with hardware, it is difficult to test error-handling code that runs in response to a device error or malfunction. Thorough testing of failure-handling code is time consuming and requires exhaustive fault-injection tests with a range of faulty inputs.