Wednesday, August 17, 2011

Martin Fowler on Non-Determinism in Tests

Any Agile project depends on fearless change because Agile values responding to change over planning.  Identifying, isolating, and removing non-deterministic tests is important to the success of an Agile team but it is often overlooked.

Martin Fowler always has something interesting to say.  I ran across his article from April 2011on non-determinism in tests.  I think the whole article is worth reading but here is a summary for the tl;dr crowd:

Non-deterministic tests fail ambiguously -- either because of a real failure or because of a set up issue or a timing issue.
This ambiguity undermines confidence in the test suite.
Without confidence in the test suite, the developers become fearful of change.
The fear of change prevents the kind of continuous improvement needed for Agile to work

His solution is to quarantine the non-deterministic tests and convert them to deterministic tests in short order.