I had an interesting conversation recently. A fellow tester type made a comment to the effect that "Without knowing what your testing is going to do, what all the steps that need to be done are and what to expect in each step, you're just doing ad hoc testing and what's the point of that?"
I sipped my coffee and said "I suggest all testing should be ad hoc. Otherwise things are rather pointless, no?"
That probably was not the right thing to say in that situation. Judging by the reaction, it probably caused more angst than was needed. Having said that, my dear, long departed Latin teacher would have approved of the response. She had this thing about people incorrectly using language, particularly Latin.
My concern, at least with the point in the conversation, is that people use words based on their understanding of the meaning, typically through common usage. Unfortunately, they don't really know what the words really mean.
I know. I am arguing against custom. I am arguing against the conventional wisdom - the bit that "everyone knows" what something means.
That is precisely the problem.
Everyone thinks they know what something is or what it means and yet no one takes the time to actually find out. The sad thing is that I find this not unusual.
I find it not unusual among testers, nor among other software folks in general. I find it not unusual among other professions either. Alas, it would seem there is a vast conspiracy to pretend people are communicating by repackaging phrases they heard and, without understanding their meaning, attach new meanings that suits their purpose and intent.
Meanings get watered down. Things go pear-shaped. People are astounded when they do because there was always clear communication.
Passing buzzwords off as meaningful communication is only accurate if everyone knows what those terms mean. It is when the terms begin to shift in how they are used, or when they begin to be misused, that their value declines.
And that is how ad hoc stopped having meaning.
The point of ad hoc anything in much of the world is in the lines of an ad hoc committee - a committee formed to deal with a specific purpose or end. It can also be an impromptu occasion. In that case, impromptu refers to the organization and planning of the committee itself - not with how it functions - something totally lost on people unfamiliar with Roberts Rules of Order and other Parliamentary Procedure guides.
Good Testing Is Always To This Testing
Good testing serves a specific purpose. It is directed to a specific end.
Lousy testing is the testing that warranted the "Test is Dead" stuff a year or two ago. The thing that is so wrong is this is precisely the "testing" that so many people hold up as superior work.
It is carefully considered. It is carefully measured. It is carefully scripted. And then the scripts are very carefully followed. It has stuff that is easily counted. Sometimes it is executed by the people who developed these carefully counted scripts. Sometimes it is executed by other people. Sometimes those people get in trouble if they do not follow the script precisely.
We want to believe that this is a dying trend. We want to believe that this is on the way out. We want to believe that we have moved beyond this. And we want to believe that what we read and see in the cool kid hang-outs and in the online forums and in the Agile discussion lists and Lean discussion lists and the coolness that gets talked about at conferences.
And then someone says "But that is just ad hoc testing."
When testing does what testing is supposed to do, it fulfills a specific purpose. That purpose will change based on the mission the testing is expected to fulfill.
Good testing addresses that mission.
When testing is done by people who are encouraged and expected to think, it more likely to fulfill that mission, that purpose, than when "testing" consists of following detailed scripts as written, without variation.
If that is what you consider testing, you should probably have studied Latin.