# FoundationDB Test Technologies
## 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.
## References
* [Simulation and Testing — FoundationDB 6.2](https://apple.github.io/foundationdb/testing.html)
* [Testing Distributed Systems w/ Deterministic Simulation - Will Wilson - YouTube](https://www.youtube.com/watch?v=4fFDFbi3toc)
* [Autonomous Testing and the Future of Software Development - Will Wilson - YouTube](https://www.youtube.com/watch?v=fFSPwJFXVlw)
* [My Diigo Outline](https://www.diigo.com/outliner/irpef3/Archive---202004---FoundationDB-Test?key=tnfaeajeb1)