Enforcer – efficient failure injection

  • Authors:
  • Cyrille Artho;Armin Biere;Shinichi Honiden

  • Affiliations:
  • National Institute of Informatics, Tokyo, Japan;Johannes Kepler University, Linz, Austria;National Institute of Informatics, Tokyo, Japan

  • Venue:
  • FM'06 Proceedings of the 14th international conference on Formal Methods
  • Year:
  • 2006

Quantified Score

Hi-index 0.00

Visualization

Abstract

Non-determinism of the thread schedule is a well-known problem in concurrent programming. However, other sources of non-determinism exist which cannot be controlled by an application, such as network availability. Testing a program with its communication resources being unavailable is difficult, as it requires a change on the host system, which has to be coordinated with the test suite. Essentially, each interaction of the application with the environment can result in a failure. Only some of these failures can be tested. Our work identifies such potential failures and develops a strategy for testing all relevant outcomes of such actions. Our tool, Enforcer, combines the structure of unit tests, coverage information, and fault injection. By taking advantage of a unit test infrastructure, performance can be improved by orders of magnitude compared to previous approaches. Our tool has been tested on several real-world programs, where it found faults without requiring extra test code.