The following slogans were all automatically generated by The Evil Tester Sloganizer. And I then thought about what they might mean, and posted my reflections on Instagram. I’ve collated them here because they might trigger thoughts for you.
“Have you tried Model Based Testing?”
“Have you tried Model Based Testing?” asked my sloganizer this morning.
And in the world of Software Testing, Model Based Testing normally refers to an approach to automated execution build around executable models e.g. state transition models.
And… it might refer to building models of test data, and automatically generating the data to feed into our testing, etc.
The reality is, that all of our testing is model based.
At a simple level, we build Models of the System we are testing. Then we do stuff and compare what we did, how we did it, and the results we observed, to our models. If our models do not have our observations in it, then we expand our models so that they do. And if our model and the observation doesn’t match we start investigating a possible bug.
As soon as we realise that we are working from Models all our notions of coverage change, because coverage relates to the models that we use, not some vague notion of ‘test coverage’.
There are formal modelling approaches that we can use - finite state machines, markov chains, directed graphs, regular expressions. And these often come with formal and well defined techniques for traversing them e.g. spanning trees.
Model Based Testing doesn’t just mean automating.
“Let thy principles be brief and fundamental”
I will need to add some ‘quotes’ into my sloganizer. I came across this quote in Marcus Aurelius Meditations today. “Let thy principles be brief and fundamental”
I think that this is good advice. The model that we build for ourselves for testing should be as brief and fundamental as we can make it.
Look for the universals in testing rather than itemising lists of specific things.
For every specific thing you identify, can you generalise to something higher that perhaps covers more concepts.
How would you explain testing without using buzzwords and technology?
I’ve found, when I do this, that my resulting model of testing allows me to pull in concepts from psychology, math, systems theory much more easily. Because these seem to be the foundation upon which I have built my model of testing. Your model may have a different foundation when you generalise and identify its core.