The essence of Mental Models for Software Testers

During TestAway Goa 2022 and Worqference 2023, I got an opportunity to attend a hands-on workshop on “Mental Models” by Ajay Balamurugadas. It made me curious to dig deeper into this topic. I have gone through multiple blogs, and videos, and read some books to explore more on this topic. In this article, I would like to share my learnings and findings about Mental Models

What are Mental models?

Mental models explain someone’s thought process about how something works in the real world. To be more precise, Mental models are a representation of our thought process of something that is stored in our mind. As humans, we won’t be able to process more information about the world in our minds. So, we use models to store complex information in our minds as understandable and organizable structures.

Why do software testers need to understand mental models?

Mental models help to practice critical thinking. It allows testers to come up with great test ideas and analyze risks. It makes us aware of our cognitive biases by guiding us to identify blind spots in our own thinking. Mental models provide the base for practising exploratory testing. Here is some information that I learned from some of the testing books on mental models that explain their importance:

This is the part I took from A Practitioner’s Guide to software test design book that explains the importance of creating a mental model for designing better tests.

This is the part I took from the Software Testing Techniques book, that conveys that testing is a process of creating mental models.

This is the part I took from the Lessons Learned in software testing book. It highlights the essence of creating better mental models for exploring the software without any product documents.

All these points really helped me to understand the importance of mental models.

How to practice applying mental models?

Here are some mental models which testers can get started to practice with:

Inversion:

This mental model helps in inverting a problem and forces us to look at it differently which helps in unlocking new solutions. Practising this mental model, allows us to avoid being stupid and help to think about the opposites of the action that we need to perform. Some simple examples can be like giving opposite characters other than characters supported for a particular line field, giving the opposite format of an Email ID to check whether that makes some problem or not etc…

Framing:

This mental model helps in presenting the same information in multiple ways. Bug advocacy is one of the examples here. Because you need to present your bug findings and highlight their impact to Software developers and Product owners for convincing them to fix the important bugs. Another example is creating user personas as we need to frame personas for different kinds of users under different age categories for using a particular software. You can know more about framing mental model here: Framing mental model.

The Map is not the Territory:

This mental model helps to evaluate our assumptions and their reality, theoretical and practical approach. One example is whatever we learned from theory books, if we try to apply it in real life, It might not be accurate or practical or its behaviour will be different from what we learned. So we need to know what exactly it is by applying it which is actually the territory. From a software testing perspective, requirements are a great example here because when we start implementing those requirements, they might get change over the course of time. Requirements are like maps here. It can guide us in creating test ideas but it can be inaccurate or not practical sometimes. You need to check the technical implementation of both the front end and back end of the software requirements which all are the actual territories.

Second-order Thinking:

This mental model helps to practice deep thinking. It can help us to identify risks when we are going to perform some actions or take some decisions. It can help to evaluate the long-term consequences of the decision that we make. What If? and 5 whys? can be good examples and a great way to start practising this mental model. It’s like charting out the next connecting thought by asking questions like ‘What if we perform this action? What if this action cause this effect?’

Opportunity cost:

This mental model helps to evaluate the benefits of the options that we are going to select and we are going to miss. There are two options A and B. If you select option A, then what is the cost of missing option B? If the cost of missing option B is lesser, then there is no problem. Or else there might be a problem.

Fixing a bug earlier than fixing it during production is a better example here. Because fixing the important software bug during the production period proves to have the most cost than fixing it during the software development period.

First principles thinking :

This mental model helps to break down complicated problems into basic elements and then reassemble them from the base. It’s a very useful mental model for software testers which helps in Test design and Automation framework development. The Product Coverage Outline can be a great example here.

I have shared only a few mental models here but there are 100+ mental models which we can learn to improve our thinking.

Relationship between mental models and heuristics:

I had a long discussion with Michael Bolton regarding the difference between mental models and heuristics. During that conversation, I was able to figure out the relationship between mental models and heuristics. I learnt that,

“Mental models are representations of something complex in simplified form and Heuristics can be a set of tools to develop and evaluate our mental models”

Through all these learnings, I understood the importance of mental models. I also found that practising mental models help software testers to get better at their test craftsmanship and enhance their thinking skills. I hope this article benefits software testers to get started with mental models and help them to become great thinkers.


One thought on “The essence of Mental Models for Software Testers

Leave a comment