Repeatability
- Pseudo-concurrency
- Simulate external communication
- Deterministic
Eliminate any external randomness that cannot be controlled.
Simulation Test
- 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.
Challenges
- It takes efforts to keep deterministic
- Hard to implement test oracles in some apps to tell whether there’s a bug.
Interesting Observations
- Simply stopping and restarting in reverse order finds many bugs.