6.3 Mirror your production environment.

This should be obvious. Sadly, for many people, it isn't. The best case scenario is to have the development platform match the production environment not just in software (see section [*]) but in hardware too. Unfortunately the best case scenario is frequently not affordable or even possible. Imagine if every one of Google's developer had their own Google infrastructure to test on. In most cases though, it's possible to have a test server set aside that is either identical to the production box or pretty close. It's also important to replicate any supporting boxes. If your database is on a different box than your web server you need to have a test environment that replicates that setup. Otherwise, you'll never see issues brought on by network latency.

This is incredibly important because otherwise you will never be able to get a realistic idea of how your app performs under a repeatable load. Most of us have mediocre development boxes and fairly sweet servers. We could run a load test on our dev boxes but the data we got from it would be almost meaningless. The only thing you could be confident about is that the production box would do better. Which is fine if your load tests are running great on your dev box but can only really tell you which parts are slower relative to others if the load tests don't run great on it.

K. Rhodes 2007-05-18