
Introducing Chaos Mode - mbrubeck
http://robert.ocallahan.org/2014/03/introducing-chaos-mode.html
======
voidmain
At FoundationDB we use this technique extensively (we call it
"buggification"), along with deterministic simulation to make the results
debuggable.

Amusingly (and embarrassingly), some of our early alpha and beta releases
shipped with buggification accidentally _enabled_! It hurt performance a
little, but didn't break the database for anyone that we know of.

------
ibrahima
Hah, neat. The name reminds me of Netflix's Chaos Monkey[1] but this is a
little different in that everything it does is supposed to be valid behavior.

[1] [http://techblog.netflix.com/2012/07/chaos-monkey-released-
in...](http://techblog.netflix.com/2012/07/chaos-monkey-released-into-
wild.html)

~~~
dexen
Also the _Monkey_ [1] testing tool used on the original Macintosh.

On the lower level, _Jester_ [2] tests your Test Cases, by randomly chaning
boolean conditionals in the code undergoing testing (mutation testing).

[1]
[http://www.folklore.org/StoryView.py?project=Macintosh&story...](http://www.folklore.org/StoryView.py?project=Macintosh&story=Monkey_Lives.txt)

[2] [http://jester.sourceforge.net/](http://jester.sourceforge.net/)

------
girvo
So this seems cool, and is a great idea, similar to fuzzing I guess.

But why would you write tests that _assume_ something is complete before a
setTimeout fires? I can't ever see a reason as to why that would be a good way
of writing that particular test, but I'm aware that I might not have come
across the reasons, so I thought I'd ask.

~~~
dbaupp
By accident?

------
mathattack
I like the term gorilla testing rather than monkey testing. Less offensive to
the gorillas.

------
drodgers
C and C++ need this.

