Wednesday, August 21, 2013

Principles Before Practice

I've been thinking about the role that principles play in the context of software testing. As I was sitting with a test analyst awhile back consulting in a test method, I could see that there were quite a few variables that had to be considered.

It reinforced to me that good test design is a very nuanced thing. It's more than just "Step1, Step2, ..."

Many times, people get frustrated because they do things without understanding the rationale. People may learn a new test technique, try to apply it, and fail because they didn't really understand the nuances of the situation they are in and how they impact the technique they are using.

I'll never forget what someone told me a long time ago about trying to teach someone a skill. They used the analogy of washing dishes. This person said, "I can either teach you how to wash every kind of item in every situation, or I can teach you the principles and let you figure out the rest." I thought the second option sounded reasonable.

There are many ways to wash dishes. Even with appliances, there are some principles that really help. I know because I violate them sometimes and have to repeat the entire load. Things like:

  • Rinse off the big stuff first.
  • Save the really messy dishes until the end so you don't get everything else in the sink messy too.
  • Use hot water, but not too hot or else you will scald yourself.
  • Be careful with sharp knives in sudsy water,
  • You get the idea...

In testing, there are some similar principles, like:

  • Take some sample tests early and find where the big problem areas seem to be.
  • Don't test the really complex areas at first. Get your bearings first.
  • Have strong tests, but if you make every test strong, you may not have time to finish.
  • Early testing is good, expect when the thing you are testing isn't ready even for early testing.

The reason that principles come before practices is because they build understanding of WHY something is done a particular way. Without the WHY the WHAT can become meaningless and wasteful. See, there's the principle behind principles.

So the next time you are conveying your testing knowledge, be sure to convey the principles first.

Keep on testing!