Friday, June 26, 2009


In general, I think that one of the characteristics of testing is seeking for predictability. We find a bug, and we want to find a way to reproduce it every time. We look for inconsistencies in a product, seeking to normalize the user interaction. We seek to reduce customer surprise by providing knowledge.

Unfortunately for our seeking, we live in an unpredictable world. And thus we find ourselves attempting to normalize, or at least predict the unpredictable.  These are the things we find in the field that you never would have dreamed of. There's the drive that's failing but doesn't actually have any bad sectors, so it wreaks havoc without anyone getting notified by the bad sector detector. There's the narrow race condition that you don't fix because it's so narrow... and then it happens in the field. There's the customs official who decides to hold your shipment for two weeks' inspection, when the client needed it in three days and you shipped it overnight. There's the potential deal you really shouldn't win but you do.

In the end, we can't predict the unpredictable (it is, after all, unpredictable!). But we can predict that something unpredictable will occur. We can look at history and say that unpredictable things happen about X often, or about Y times a release. And that's something we can plan for. Sometimes the project plan needs to include "major unpredicted event (2 weeks)". We're not sure what it is, but something is sure to come up.

It's not complete predictability, but the unpredictable deserves your consideration. Don't waste time trying to imagine what it might be. Just understand how you're going to deal with an event dropped right in the middle of your carefully constructed plan and your carefully constructed product.

No comments:

Post a Comment