Software testing is detective work 🕵️♀️ To be an effective tester, you need to think like a detective. Both need to rapidly make critical decisions based on limited information at hand. The disciplines involve investigation, finding evidence, and making inferences to arrive at a solution.
Unfortunately, we are not taught how to make good decisions under pressure in our education. In this two part series, we will discuss several ideas that can help you unleash your inner detective, and enable you to approach and solve problems more effectively.
Table of Contents
- You’re here → Part 1
- Part 2
Software testing and detective work have a lot in common. Below are some remarkable similarities in qualities required to be a good at both:
- Both criminal investigation and software testing are about solving complex problems. Detectives try to find out “Who committed the crime and why”? Testers are trying to answer the questions “Is the software of acceptable quality?” And “what are the risks that threaten the value of our product”?
- Detectives interrogate suspects, witnesses, or cops to understand more about the crime. Testers communicate with product managers, developers, and other testers to learn more about the product.
- Detectives may go through case files, photographs, postmortem reports, etc., to learn about the crime. Testers go through requirement document/user stories, designs, and architecture diagrams to understand the product.
- Detectives investigate the crime and create reports by collecting evidence to justify their claims. Testers explore the application and report bugs with evidence.
As a tester, you may have come across a landing page with spelling mistakes, a mobile app where the UI elements overlap, or a broken link in a website ❌ In these cases, someone wasn’t paying close enough attention to pick up those minor errors. And even though the errors are minor, they can have severe consequences on the business.
“Attention to detail” is one of those requirements that is listed in almost every job description for a tester’s role. Software testers are expected to be detail-oriented and notice even the smallest of the details. Our attention to them is what differentiates us from others. Good testers are good observers and notice those details that others typically miss.
Mindfulness is the key to improving concentration and attention to detail. We are often either thinking about the future or dwelling on the past. We are not entirely focused on the testing task at hand, making us miss essential details that can be expensive.
Mindfulness is the secret behind every successful detective. Sherlock Holmes’s extraordinary attention to detail makes him impressive in detective work. He teaches us to be constantly mindful of our surroundings. Mindfulness is the practice of paying close attention to what’s happening at the moment, being present and not overwhelmed by what’s happening around us.
Try to practice meditation. Meditate for at least 30 minutes per day, focus on your breath, and clear your mind of distracting thoughts. Meditation doesn’t need to be tied to spiritual practice. It’s about teaching yourself focus. Regular meditation helps you to be mindful and improve attention to details.
An assumption is something that we accept as true without concrete evidence. We make several assumptions when we are testing software. We make assumptions about the product we are building, the problem we are solving, and even the users who will use our product.
We, as testers, work on complex systems, domains, technologies, and tools that we may not fully understand. Furthermore, we will never have all the information on-hand before we start testing. So we tend to develop assumptions, and that’s natural. Assumptions make our lives easier by simplifying or abstracting the complex things around us.
Good detectives avoid making assumptions and are skeptical of any information offered to them. They test their hypotheses by trying to disprove them. Here is how you can deal with assumptions while testing:
- Recognize your assumptions, as many times we make unconscious assumptions.
- Understand the consequences of your assumptions on your testing.
- Categorize them as either reasonable or risky assumptions.
- Verify risky assumptions. Question them, look at them from different perspectives. Verify whether they are correct.
- Don’t be afraid to ask questions. Innovations don’t happen without challenging the status quo. Asking questions is one of the most desired qualities in a tester. It will enable you to validate if your assumptions are correct. Additionally, you will get more information about the details you are assuming.
Healthy skepticism is essential for testers. It prevents us from taking things for granted. Validating your assumptions allows you to make early corrections in your testing strategy. But you may not have unlimited time to validate all your assumptions, so be wise in picking the ones you want to challenge and test 💡
Mental models are frameworks for thinking that help us understand the world around us. Simply put, mental models are a set of ideas we form from our experiences. Being a detective is all about making good decisions with limited information, and mental models can enable you to do exactly that ✅
Detectives and successful people alike deliberately use mental models in their decision-making. There are so many models that testers can learn. In this article, let’s understand a mental model called “Inversion”.
Inversion is a simple yet powerful mental model popularized by Charlie Munger. Several great thinkers and innovators use inversion to their advantage. Inversion is turning the problem upside down and approaching the problem from the opposite end.
Charlie Munger says that “many problems can’t be solved forward”. Reversing how you look at a problem can open up new perspectives and possibilities. Let’s look at some examples:
💠 Want to reduce the defects leaked to production?
- Inverted thinking- “What will result in defect leakage?”
- Once you brainstorm, avoid those practices that lead to a defect leakage.
💠 Want to be a good QA Manager/Lead?
- Inverted thinking- “What will make me a terrible manager?”
- Avoid these qualities, and you will succeed as a leader.
💠 Want to write good bug reports?
- Inverted thinking- “How do I write poor bug reports?”
- Avoid the things that make a poor bug report.
Reversing the problem might not always solve it, but it will help you avoid problems. Thinking in reverse does not come naturally to us, but practicing it can help us avoid stupidity. Remember that inversion thinking is not about picking one direction of thinking over the other, it is about thinking in both directions 🔀
Read more detailed articles about the following mental models on the TestProject blog –
- Occam’s Razor in Software Testing– prefer simplicity over complexity until proven otherwise. Detectives, doctors, and even scientists have used this mental model in their respective fields to find solutions by cutting unnecessary assumptions.
- Pareto Principle in Software Testing– 80% of consequences come from 20% of the causes. Be smart, and spend more time on those things that give you greater rewards. Cut back on things that do not give you significant returns on your efforts.
- The Map Is Not The Territory– even the best maps are imperfect and are a simplification of the real world. We often confuse models of reality with reality itself. For instance, we often forget that required documents can also miss certain information and be inaccurate. Requirement documentation is a description of the product and not the product itself.
In the next part, we will discuss more ideas that will enable you to think like a detective and improve your decision-making. We will understand heuristics, biases, and more tips to unleash the detective within you 🧐