Strange Loop

Simulation Testing

Testing is not about proving a system is correct. It's a search problem. We look for paths through state space that result in errors. Unit testing explores a tiny subset of possible pathways. Even 100% unit test coverage doesn't guarantee 100% state space coverage. Scripted automated tests are only as rigorous as your most devious testers' imaginations.

We can improved our results with controlled randomness. We can simulate inputs to the system under test, using randomness to broaden our search of the state space. At the same time, we control the randomness to ensure our tests are repeatable and that we can verify when bugs are fixed.

This talk will introduce the structure of simulation testing as a general technique. We will briefly discuss the Simulant open source framework as an instantiation of these ideas.

Michael Nygard

Michael Nygard


Michael Nygard strives to raise the bar and ease the pain for developers around the world. He shares his passion and energy for improvement with everyone he meets, sometimes even with their permission. Living with systems in production taught Michael about the importance of operations and writing production-ready software. Highly-available, highly-scalable commerce systems are his forte. Michael has written and co-authored several books, including "97 Things Every Software Architect Should Know" and the best seller "Release It!", a book about building software that survives the real world.