- Simulate external communication
Eliminate any external randomness that cannot be controlled.
- Repeatable thus saving time to reproduce the bug.
- Explore the space more efficiently than the real world.
- For example, simulating random network disconnection, power shortage.
- It takes efforts to keep deterministic
- Hard to implement test oracles in some apps to tell whether there’s a bug.
- Simply stopping and restarting in reverse order finds many bugs.