Pairwise Testing

I’ve just this morning read an interesting article on combinatorial or pairwise testing ( and .) This article has been around for while but it covers a very valid point. Pairwise testing is Domain testing or as ISTQB call it Equivalence Partitioning. Equivalence Partitioning “…is based on the premise that by testing one value within a class the result is representative of all values within that class.”

The technique, on the surface, has merit but how do we test for the unknown? What if our test data doesn’t cover that exception? Pairwise testing is a valid technique BUT as with all testing, it should be combined with the testers skill and judgement. To follow one technique for the sake of the technique is but to limit one’s effectiveness.

Judgement and skill are hallmarks of a good tester. Education and knowledge of the ‘craft’ are more important than the expertise in a particular system or application. There are many good subject matter experts but not alot of really good testers…testers that can think, change and adapt.

As Robert Sauborin likes to frequently quote in his course slides     “No! Try not, Do. Or do not.There is no try.” – (Master Yoda instructing young Luke Skywalker in the ways of the force.)

In otherwords, look beyond what you do know…there may be another way to test your product…do it and evaluate for yourself. In is only after a period of exploration and experimentation that we can become aware of what the system can do.

Just because you (or the team) have always tested the system the same way doesn’t necesarily mean that it is the be all and end all of testing. Look outside the square and think!!

Software Testing and the Intercepting Fist

Master of Software Testing PhilosophyWelcome to my first blog on software testing – hopefully one of many!
Testing is an exciting intellectually stimulating discipline to be involved in. I have been in the ‘game’ now for over 8 years in Wellington, New Zealand. I have worked in both the private and public sectors and over that time, my knowledge and understanding has been shaped by the experiences i have come across and the ‘teachings’ i have absorbed from other practitioners, organisations and learned colleagues around the world (Cem Kaner, James Bach, Brian Marick, Bret Pettichord among others). The combination of these things have shaped my view and understanding of testing as i know it today.

One of the greatest, if not the greatest martial artist of the 20th Century – Bruce Lee – espoused his philosophies on martial arts through a framework called ‘Jeet Kune Do’ (JKD) or Way of the Intercepting Fist.

One of the theories of JKD is that a fighter should do whatever is necessary to defend himself, regardless of where the techniques used come from. This is like testing – should we subscribe to only ‘one way’ or one technique to test software when there is a multitude of methods that may suffice? Should we follow the ‘classical mess’ (scripted testing) or become ‘formless like water'(Exploratory testing)?

Don’t get me wrong – test scripted pre-arranged testing has its place and it works – i have no qualms about that – I’ve been there, lived that. The only voice of dissent i have is when so called Test Practitioners disregard any other way of doing it. I worked once for a bank in which i prepared a paper on the benefits of exploratory testing – especially used in a complementary way with expected mode of scripted testing. It never gained traction no matter how much i tried – the Test Manager went as far as to say “…it doesn’t work and you’ll never find anything with that.”

I beg to differ.

As you can tell, i am an exponent of the Context Driven school and Exploratory testing. However, i know and recognise the need for scripting and i am comfortable with that. The trick is seeing what you test in context of what you are doing and what you are trying to achieve.

You may be familiar with the following – its applies whether you Exploratory test or not…


1. The value of any practice depends on its context.
2. There are good practices in context, but there are no best practices.
3. People, working together, are the most important part of any project’s context.
4. Projects unfold over time in ways that are often not predictable.
5. The product is a solution. If the problem isn’t solved, the product doesn’t work.
6. Good software testing is a challenging intellectual process.
7. Only through judgment and skill, exercised cooperatively throughout the entire project, are we able to do the right things at the right times to effectively test our products.

Have a great week testing!