Date of this Version
Modern computer software systems are prone to various classes of runtime faults due to their reliance on features such as concurrency and peripheral devices such as sensors. Testing remains a common method for uncovering faults in these systems. However, commonly used testing techniques that execute the program with test inputs and inspect program outputs to detect failures are often ineffective on these systems. In addition, existing testing techniques focus primarily on single applications, neglecting elusive faults that occur at the whole-system level due to complex system event interactions.
This research provides a framework, SIMEXPLORER, that allows engineers to effectively test for subtle and intermittent faults in modern software systems by providing them with greater observability and controllability. The testing framework first employs dynamic analysis techniques to observe system execution, identify program locations of interest, and report faults related to oracles. It next employs virtualization to achieve fine-grained controllability that exercises event interleavings that are likely to expose faults. The framework also supports testing of evolving software. The ultimate benefit of SIMEXPLORER is its ability to test for broader classes of elusive faults that cannot be effectively detected by existing approaches. These faults include: (1) concurrency faults between applications and hardware interrupts; (2) concurrency faults caused by improper shared resource accesses among multiple processes, and software signals; (3) violations of expected worst-case interrupt latencies (WCILs); and (4) data races induced in evolving software.
Advisors: Gregg Rothermel and Witawas Srisa-an