• 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.


  • 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.