Extreme Testing

My wife and I recently had to buy new coats.  Not something that you would think I'd mention in a TechBank blog.  However I have a point, just bear with me. 

I had a coat already and figured that I could just put a few more layers on and I'd be fine.  I'm a northern lad and we northerners are proud of the fact that we class any temperature in double figures as "lovely".  I only conceded that I might need more layers because we were going to Iceland.  Where, as the name suggests, it's fairly nippy. 

"This was not well thought out"

"This was not well thought out"

I had a look at the average March temperatures and it would seem that Iceland in March is a balmy 0 to 3 degrees.  Nothing a string vest and a hat won't fix.  However my wife decided to buy a coat that was tested down to -32! After some cajoling I decided to at least dig out my old ski coat.

So we got to Iceland and the first thing we did was set out the find the northern lights.  We found them! They were amazing!  However Pui was able to stand gazing upwards at the heavens and admiring the show.  I was doing star jumps and shivering.  The wind chill had taken the temperature down to -20.  I was freezing because I hadn't thought about other factors that could change the environment.  And this is the lesson we can take into our code. 

Extreme testing, stress testing etc.  Is vitally important.  You should always go on the assumption that your solution will grow or won't have a great internet connection or will need to run on a slower machine or be translated into Spanish, or something else you didn't expect.  Never code for three options, code for an infinite amount!  

Obviously this is not always possible, but we test all potential test bricks to an order of magnitude (or two) above their expected operating range.  You can have 10 users?  Can it work with a thousand?  What if they all log on at once!  While you might not be able to maintain perfect performance at these high levels, but you should have a graceful degradation.  "We are sorry, the system is currently very busy" is better than a 404 or a blank screen.  

Also, remember the wind chill!  work out your tests on 2d or 3d grids to combine different stressors all at once.  Whining that my coat would have been fine on a WARM windy day wouldn't have helped.  

Right, rant over, I'm off for a soak in a geo-thermal bath.