Michael Bolton’s distinction between testing and checking seems to have had some unintended consequences. Don’t get me wrong: I have found immense value in this distinction. It’s just that there is some confusion that needs clearing up.
The first confusion relates to value. Some of us (myself included) have fallen into the trap of undervaluing checking. I wrote about this in Checking is Not Evil, and I’m not going to explore that any further today.
The second confusion relates to the relationship between testing and checking. I’ve seen some of this locally, and it is also apparent in some of the comments to Checking is Not Evil. It’s easy to read blog post titles like “Testing vs. Checking” (and possibly reading no further) whilst imaging testing and checking as a Venn diagram that looks like this:
That would be a mistake. As Michael points out in that self-same post, testing involves checking. In other words: checking is something that we can do as part of testing. It is a subset:
The third confusion relates to the content of the-bit-of-testing-that-is-not-checking. One response I’ve run into involves some vague hand waving and allusions to mystical powers that I know about but am not going to share with you. Another is something along the lines of “well obviously that’d be exploratory testing”. There is some truth in this, in that many of the things that make for good ET will fall under this category, but more generally this answer is not a good fit: ET is an approach, a style of testing. It’s definition is too narrow to encompass all of testing less checking.
So what IS the-bit-of-testing-that-is-not-checking? It is what you – as a human being – bring to testing: any skill, any mindset, and any insight that serves your testing mission. You might have skills at identifying checks or automating them, you might have a nose for trouble or a mind made for modeling, you might be a master relationship builder. That-which-is-testing-but-is-not-checking is anything and everything that you can do that a tool cannot, anything and everything that you can bend to the purpose of investigating software so as to provide information about it.