Michael Bolton beat me on blogging about it. Though, I still want to throw in my pieces to the structure in Exploratory Testing debate. The source of the conversation was
On Twitter, Johan Jonasson reported today that he was about to attend a presentation called “Structured Testing vs Exploratory Testing”.
as Bolton writes. The implication of the talk is probably, that Exploratoy Testing and Structured Testing are opposite and mutually exclusive. Let’s see if this holds.
First things first. What is “structure” or “structured”? Firing up my dictionary on my Mac, I get the following:
the arrangement of and relations between the parts or elements of something complex : flint is extremely hard, like diamond, which has a similar structure.
- the organization of a society or other group and the relations between its members, determining its working.
- a building or other object constructed from several parts.
- the quality of being organized : we shall use three headings to give some structure to the discussion.
Let’s take a look on the noun definition first. It mentions the arrangements of parts of a more complex thing. I don’t consider testing to be thing in first place, but taking a look on the arrangements of parts in Testing are test design, test execution, and learning. In “structured testing” people often mean, we arrange test design, test execution, and learning into separate parts. In “Exploratory Testing” by definition we take a contrary arrangement by defining
Exploratory testing is simultaneous learning, test design, and test execution.
(James Bach, Exploratory Testing Explained, 2002-2003)
This means that Exploratory Testing does not separate those parts recognized by “structured testing” as separated. Yet, Exploratory Testing recognizes more parts than the “structured testing” approach. Michael Bolton refers to his currently 18 different structures and models in his blog post here, and I suspect there are more to be discovered. The heuristics, oracles, and touring models provided are different structures that we use in Exploratory Testing. Accompanied with the structure of proper test notes, and a debriefing activity of testing sessions, I claim there is often way more structure in Exploratory Testing approaches as in “structured testing”.
But there is more to structure as being a noun, despite in “structured testing” the word is used as a verb. Fortunately my dictionary also has a definition for this:
construct or arrange according to a plan; give a pattern or organization to : the game is structured so that there are five ways to win.
Adapting to the example given, there are no five ways to win the (cooperative, by the way) game of software testing. The problem with this is based on the notion that testing is hard to predict. There are way too many parameters influencing testing progress. Software Engineering tried to address this problem by providing more order to the overall software development.
In last week’s class on Management 3.0 by Jurgen Appelo I learned, that confusing lack of understandability and lack of predictability are often confused. Here is a brief discussion on the topic. Taking Appelo’s definition of understandability and predictability, I would claim that software testing is hard to predict (complex), but can be easy to understand (simple), or as well hard to understand (complicated).
The fallacy describes that either linearization or simplification as ways to solve either the predictability problem or the understandability problem respectively. But often linearization, that is the introduction of more rules, to tackle the problem of understanding rather than the problem of predictability. This over-structured system then undermines the self-organization of the system, i.e. by trying to convert people into machine parts. Unfortunately people are not machines, and will probably resist this attempt in one way or the other. Surprisingly the Machine Fallacy (treating people as if they were a part of a machine) was another management fallacy that Appelo mentioned in his class.
While Appelo refers to structure in regards to understandability of the system, this notation probably does not mean the same “structure” as in “structured testing”.
Finally, one lesson I learned early on as a swimming trainer. For young kids in swimming one professor, Gunter Frank, found out that a rich variety of practice allows kids to quickly adapt to the changing conditions during the puberty, and adolescence. While the body might grow at a rate of one centimeter per month, proportions of body parts change dramatically, and movements that works for the past ten years suddenly become a mess to execute. This puts a challenge on most swimmers – as it’s accompanied with an unpredictability by nature. Early swimming training programs provided structures for movements, but these stopped to work when kids got into puberty.
What Frank experimented with were various movements. He asked kids to swim butterfly feet first, and turning the arms backwards. He asked kids to swim breaststroke just with the right arm and the left leg, or to combine crawl leg movements with breaststroke arm movements. What he found out was that having trained these kids with the diversity in movements made them more adaptable to the changing conditions during puberty. These kids had a clear competitive advantage during this time – competitive enough for Frank to write five book editions up to the time of this writing on the topic.
Now, what I learned when I asked kids at the age of 6-8 to do some of these exercises during swimming classes was something that I also apply nowadays. While I went through the swimming trainer classes (seven weekends, finished with a practical and written exam in the end) we were asked to perform these exercises on our own. Usually there were two to four hours of time spent in the pool in each class. By going through the exercises on our own, we got the own experience on how hard a particular exercise was, and if a 6 or 8 year-old got do this as well.
Countless times I heard the phrase “this doesn’t work” when I confronted kids with a new challenge based upon such an exercise. Having gone through the exercise myself, I immediately could reframe that sentence to “I don’t know – yet – how to do that exercise”. Often by pointing at others who already swam 10 meters (or so) in the way I asked them to I could also point out that it seems to work.
That said, “Exploratory Testing” nowadays I reframe “Exploratory Testing is unstructured” to “I don’t know where the structure in Exploratory Testing is”. Sometime I may even refer to others successfully doing Exploratory Testing, and sometimes I have to simply show them how to do it.