This is a guest post by James Thomas. James is one of the founders of Linguamatics, the world leader in innovative natural language-based text mining. Over the years he’s had many roles in the company and is currently the test manager, a position in which he strives to provide an environment where his testers have an opportunity to do their best work. He’s on Twitter as @qahiccupps and blogs at Hiccupps.
I view software testing as an inherently creative act, and I’m excited and inspired by the challenge of finding ways to generate ideas repeatedly, reliably, and regardless of familiarity with the task at hand.
Get TestRail FREE for 30 days!
I want to be creative when looking for non-happy paths through a product, both those that are desirable and those that should be ruled out. I appeal to creativity when seeking edge case scenarios that users will bump up against (because they always do!) and to explore how the product behaves in them before the customer does. I value creative thinking when examining the possible relationships between components of a system, looking for misalignments, contradictions and non-sequiturs: those results that I didn’t expect based on my assumptions, inputs or actions.
Where do these Ideas Come From?
They come from inside our heads. Duh!
In his book, Conceptual Blockbusting, James L. Adams takes this as his starting point. His thesis is that although we all have ideas, most of us most of the time do not think about how we get our ideas nor attempt to improve or expand our ability to generate them.
According to him, we often restrict ourselves to patterns of thinking that have become habitual, and so we will find the same kinds of solutions in the same kinds of situations by following the same kinds of thought processes over and again. We are also subject to contextual, social and cultural constraints that tend to limit the extent to which we can be creative. But he thinks we can do better, and his book aims to show us how.
He does this by talking about different kinds of conceptual blocks, which he describes as (p. 13):
mental walls that block the problem-solver from correctly perceiving a problem or conceiving its solution.
He then runs through a variety of practical strategies for overcoming these blocks, with inline exercises that he hopes will illustrate and illuminate some of his observations and suggestions.
The four types of blocks to creativity that Adams identifies are:
- Perceptual: where the problem or the information needed to solve the problem are not clearly identified.
- Emotional: where fear or some other emotion inhibits the ability to think or communicate thoughts.
- Cultural: where solutions that lie outside of acceptable cultural or social boundaries are excluded.
- Intellectual: where technique, or lack of it, prevents the identification of solutions.
It would be a poor reflection on his own creative capacity if he wasn’t able to propose ways to reduce the impact of these blocks. Fortunately, he doesn’t disappoint, and his ideas are numerous and diverse. I picked out three of my favourites below.
Verbal thinking is claimed to be prevalent in problem solving, and possibly even the basis of all thinking (p. 98). In this mode, an “internal voice” will talk through problem and attempts to solve it, and then perhaps form the basis of an explanation to someone else. But there are classes of problem for which verbal thinking is sub-optimal, such as:
Bob has three times as many pine cones as Dan. Between them they have 28 pine cones. How many does each have?
In this case, mathematical thinking is much better suited to quick resolution, with greater confidence that the solution is plausible. Adams identifies visual thinking as a third mode with its own advantages and disadvantages.
I find that this notion is particularly useful with intellectual or perceptual blockers, such as when I’m trying to make sense of a system in order to generate test ideas. Visual thinking, even something as basic as a few hand-drawn circles, dots and lines, can turn a complex verbal description into a comprehensible graphical model. Likewise for mathematical thinking and an ordered table of data.
Adams proposes that pausing to give yourself the chance to choose a mode of thinking has benefits too: it makes you more likely to avoid getting stuck, repeatedly trying to apply an unproductive mode. And which of us haven’t burned through hours or days stuck in a rut on some problem, with the same thoughts going round and round in our head?
Let’s say I have a product that produces large amounts of textual output and I want to compare it across a couple of runs. Using the different modes in turn I might think of these idea for comparison:
- Verbally – or textually – I could simply eyeball the outputs, I could diff them, I could print them out and hold the pages over one another in front of a bright light, …
- Mathematically, maybe I could do an md5sum of the outputs, I could look at the file lengths, I could perform an analysis of the word frequency in each, …
- Visually, perhaps a tag cloud would be an interesting summary of each of the outputs that could give a high-level comparison cheaply, or maybe a view of the the skeleton of the document – the DOM or the section titles, say – would be interesting, …
Try making lists (p. 133):
List-making is surprising powerful, as it utilizes the compulsive side of most of us in a way that makes us into extremely compulsive conceptualizers.
In some sense, list-making is a kind of solo brainstorming and, because there are no others to reject or criticize, emotional blockers (such as fear of rejection) can be less of an issue.
I like this kind of approach when I am preparing to test an area I don’t know well yet. I have little basis on which to judge my ideas, so I’ll just note them all down regardless of plausibility (and I often end up with duplicates, but I don’t mind that) to be triaged later.
Elsewhere in the book, Adams makes lists of attributes of objects or concepts or scenarios and then grows them by finding related terms. This is an approach I recognise and find incredibly valuable personally: I can start in one place and take several small, obvious steps to find myself somewhere unexpected, somewhere perhaps useful, or perhaps another jumping-off point on the way to something more useful.
Finally, look across disciplines. Reject your prejudices (often cultural blocks) because they are likely stopping you from finding potential solutions. Imagine that you want to generate a million records of test data to populate a database and you put yourself in a box marked manual tester? Hmm, enjoy that typing!
How might other disciplines help you here? Well, someone who can write a program to run against the database could probably populate it for you automatically. Someone who works in the domain your software serves might know of sources that you can just import. Someone who understands statistics might be able to tell you that you only need a tenth of that data to make your experiment useful.
Take it Away
To be a successful tester – that is, a tester who raises issues that matter with the right person, with the right context, at the right time – I believe that you need to have a strong streak of creativity. You need this to identify scenarios that you might want to test, and then to think of ways in which you could test them, and then to rethink those ways when the inevitable problems occur, and then to interpret the results of the experiments you ran.
Conceptual Blockbusting can help in these situations by alerting you to the kinds of blocks you are probably encountering (whether you realise it or not) and by providing suggestions for ways to overcome them.
Now, what’s stopping you?
James read Conceptual Blockbusting (Fourth Edition) by James L. Adams. Basic Books.