The Testing Gap
Despite the massive load-testing effort, the system still crashed when it confronted the real world. Two things were missing in our testing.
First, we tested the application the way it was meant to be used. Test scripts would request one URL, wait for the response, and then request another URL that was present on the response page. None of the load-testing scripts tried hitting the same URL, without using cookies, 100 times per second. If they had, we probably would have called the test “unrealistic” and ignored that the servers crashed. Since the site used only cookies for session tracking, not URL rewriting, all of our load test scripts used cookies.
In short, all the test scripts obeyed the rules. It would be like an application ...