In one of my classes, I start things off by challenging the students to “make a diagram of testing.” Some people make complicated pictures, some make simple ones. Some are literal, some are metaphorical. But, many have trouble focusing on testing itself. Testing can be an elusive concept. I like this exercise because it introduces the need for philosophical and analytical skill in the world of testing. If you really want to be a craftsman in this arena, you must learn to go within yourself, summon images and words, and construct practical and conceptual artifacts from them.
My recent blog post about why I’m a tester elicited this response from Nicholas Snogren:
This blog post (supplemented by the memories of many others from you and Michael Bolton) led me on a solid 2 hour thinking spree to internalize what it means to be a tester and how best to be one.
This is what I came up with:
– Computers seek to more quickly accomplish what people already accomplish. (-Jerry Weinberg)
– Testers need to see if the computer is truly achieving the accomplishments, in a way that is beneficial to people.
How do we do that?
– We find out what is the work that humans did which is now supposed to be aided/replaced by computer
– We find out the mechanisms and variables accounted for in the software which define the behavior of the computer so that it will replicate the human work
– All the while, we’re forming a representation (or model)
– We determine what is the most important
– We execute testing with the representation as a guide, with priority given to the matters of import
– We communicate the findings
In each of those stages, we gain information from conversations, thought, reading, and interaction with the software.
The most critical goal is to execute the testing in the most important areas to give show-stopper feedback as soon as possible.
He then refined it:
A simplified version, testing represented in 3 steps:
1. Create a representation
– Learn the work
– Learn the design
– Learn the matters of import
– Use the representation as a guide
– Start with the most important
– Document purposefully and succinctly
– What you did and didn’t do
– What you found
– Why it matters
I could critique this, but any critique I could offer pales next to the applause it deserves. Specifically:
- His explanation is evidently a product of systems thinking. He refers to static elements and dynamic elements; processes and artifacts; interactions and independent action. It looks like he has extracted this representation from a simulation in his mind. This gives it a multi-dimensional heft.
- It includes not just the what’s of testing but also the why’s
- It is humanistic. The role and concerns of people pervade his account.
- It is itself an exploratory work. It is presented as an evolving concept rather than an eternal truth that is perfect and preformed.
- It is expressed in his own words, with his authorial voice. He is accepting responsibility for his ideas.
If any blog post of mine triggers thinking like this, I am very pleased. That’s the major goal of writing about testing. I want to leave a legacy, not of frozen words, but live thinkers.
Like too many testers, Nicholas is not yet sure that his ideas matter. After he left the comments, he emailed me:
I made 3 comments on your article “Why I Am a Tester” and realized they’re in bad taste for the subject matter of the article, they’re more self-serving than anything else. They’re still awaiting moderation. I don’t think they don’t belong there and I don’t want to muddy up your blog.
Would you please delete them?
I asked him instead if I could make them the subject of a new post, and he said yes.