Critical thinking is not enough for a tester

Alternative topic: Specification Review tips

I was recently analyzing how I do specification review. I discovered that Edvard De Bono is completely right that Critical Thinking is Excellent but it is not enough. I believe I’m using what he calls lateral thinking to obtain more ideas, but I need to study it in more details yet. I don’t use the techniques he describes, but have developed my own. I will describe those techniques in details, but I want to note that at least two are somewhat bound to my background: poetry (developed metaphor skills) math (modelling) was my primary hobbies at high school and university. So those techniques may or may not be effective reused by you.

The metaphor technique

- What hybrid would it make if we cross (crossbreed) a snake and a hedgehog?
- Barbed wire!

So project manager comes to me and say we are creating an application named X and you will have to test it. I’m not sure what he means by X, but certainly means something. Suppose I don’t know what “Barbed wire” but PM knows and I ask him is it like cross of a snake and a hedgehog. He would laugh and say – well generally yes. I have chosen this metaphor on a purpose – it combines live creatures and human made item. I may try to imagine the new product as combination of existing or as metaphor from real world.

- “We are creating source control system”, it will support multiple users working in parallel with shared data

- Is it self-organizing like people swimming in the same pool, or managed like hotel rooms with reception giving keys to one person at a time?

- Well it’s something in between …

… discussion goes on where I better understand the idea of the system. And whenever there is any mismatch bet system specification and metaphor I ask why? If there is an attribute that is logical for metaphor that the system does not possess or there is a feature of a system that does no match with metaphor. It gives ideas, not always right. If I want to jump in a pool I should take a look at what’s going on there and forecast the next few seconds. Why don’t we have “temporal lock” feature in source control system that assures lock will be removed very soon so you may simply wait a few seconds and repeat….

the What Does It Mean technique

In my context in most cases everything begins with reading specs – in whatever form, but there are something written or described in plural by someone. The metaphor technique is usable here as well, but I want to discuss another one. I will use them both together to make sure specs itself do not talk in metaphors.
Sometimes author uses verb or adverb as a metaphor without even realizing it. For example “you can’t rename file if another person use it”. How does a person use a file? File is a computer term, an object with well defined operations: copy, move, rename, open, close, etc. There is no operation use. Author most probably means any (or some) of the operations in progress, or any transactional operation started but not finished (like opened but not yet closed). This is where the biggest issue of specs comes from – ambiguity. This is bad if author and developer are different persons, but even if it is the same person… the person may be blinded by simplicity of the metaphor and miss to think of complexity of underlying technical aspects. And miss that one of the operation (move) are somewhat different from others because upon it’s completion the file will no longer be there, not only it’s content be updated.

Model provocation technique

I’ve stolen the name provocation from Edvard De Bono. I never considered it to be a provocation until seen his ideas. My idea was simple – to draw a model with all the expected relations and think of any unexpected ones. Just draw a line between any two objects and ask what does this line could mean? I’m not going to tell you deails – you could try to realize yourself how this would help to prevent the tragic bug addressed by Cem Kaner in his training materials about impossibility of complete testing.
Or well, OK I know in source control system there are folders with files. Files have versions. What is the relation between file version and folder? None? How about attaching a file into folder that already has such file? Shouldn’t this be treated as adding a new version of a file?

More tips on applying techniques

I do typically put my red hat on. Note that this contrast with black hat – the typically expected for critical thinking.
Whenever I FEEL that author is uncertain about what he say or write, I ask what does it mean. Whenever I FEEL this does not makes sense or are over-complicated stop to analyze it deeper (and search for metaphor). I may need a time to find it so I may ask to come back to it later if it’s a conversation. When I create a model and there are too much items (30 of them) analyzing all pairs means 30*29/2=435. It’s a ay too much. So I try to draw only the lines I FEEL to be of my interest. More over sometimes I want to analyze 3 or more object complex interaction.

Browse by topic: