Albertsson, Lars (2007) Entropy Injection. [SICS Report]
Testing is the predominant software quality assurance method today, but it has a major flaw --- it cannot reliably catch race conditions, intermittent errors caused by factors that cannot be controlled during testing, such as unpredictable timing behaviour in concurrent software. We present entropy injection, a extension of traditional test methods, which enable developers to create tests for arbitrary types of race conditions in any software application, reusing the application's existing test cases. An entropy injector runs the software under test in an instruction set simulator, where all factors that normally are unpredictable can be explicitly controlled. The injector provokes race condition defects by artificially changing the timing behaviour of the simulated processors, hardware devices, clocks, and input models. Provoked defects can be debugged by developers in a non-intrusive, programmable debugger, which allows race condition defects to be reproduced and provides access to all software state in a distributed system. Developers can use its services to create application-specific injection strategies and directed regression test cases that monitor application state and test specific interleavings of events. Our proof-of-concept entropy injector implementation Njord is built on Nornir, a debugger environment based on the complete system simulator Simics. Njord provokes test case failures by suspending simulated processors, thereby injecting delays in the processes in a concurrent application. We demonstrate Njord on a small test routine, and show how a developer can write a race condition regression test that triggers errors with very high probability, or provoke errors with good probability without using application knowledge.
|Item Type:||SICS Report|
|Uncontrolled Keywords:||entropy injection, noise making, race condition, complete system simulation, full system simulation, Nornir|
|Deposited By:||Vicki Carleson|
|Deposited On:||28 Nov 2007|
|Last Modified:||18 Nov 2009 16:08|
Repository Staff Only: item control page