By Naveen Bhati
When it comes to thinking there are broadly two types:
-
System 1 Thinking - This type of thinking happens automatically and quickly which requires little or no effort. For example, answer to 2 + 2 = ?
-
System 2 Thinking - This type of thinking is lazy. It requires deliberate attention and effort. For example, comparing two closely similar testing tools for their overall value.
(System 1 and System 2 thinking ideas comes from the book Thinking Fast and Slow by Daniel Kahneman)
If you want to be a better tester then you will need to practice and get better at critical thinking which is a form of System 2 Thinking. This article will focus on why critical thinking is important and how you can use critical thinking to help make better decisions, solve problems more effectively, and how to clearly understand and interpret the requirement to deliver a quality product or service.
I will list some of the benefits of critical thinking both in the context of testing and in general to emphasize why critical thinking is THE skill that a tester must develop to be successful in today's diverse, virtual, border-less, demanding and competitive world.
I will share the 5 Steps to New Thinking process that I've utilized on many occasions to think critically and hope that it will provide a systematic approach to consciously apply and get used to critical thinking.
Ā
Key Takeaways
-
What is critical thinking and how it can help you as a tester?
-
As a tester when you should look to employ critical thinking.
-
5 Steps to New Thinking process to help improve and employ critical thinking.
-
How testers can benefit from thinking critically?
If you remember nothing else from this article, remember this:
Ā
"A good tester is the one who thinks, challenges, explores, investigates and questions rather than just accepts(at its face value), checks, validates and verifies."
Ā
Thinking about thinking
There are many different types of thinking that one must be aware of, especially as a tester, however thinking critically is the most crucial one, in my experience, when it comes to testing.
In today's fast-paced, quick feedback oriented and highly competitive market many forget to take a moment to think, explore, investigate, challenge and question rather than solely focus on getting something delivered.
Most of us (testers) are so busy with delivering something or meeting deadlines or seeking approvals or documenting our test results etc. that we completely forget about taking some time to reflect and THINK, about things such as:
-
Unnecessary processes
-
Pre-existing assumptions
-
Established practices and approaches
-
Using or chasing after unnecessary metrics
-
Why am I doing a certain type of testing at all?
-
Unneeded meetings or discussions or testing activities
-
Doing something that is dictated to you without any cross-examination
-
Writing automation scripts without considering return on investment (ROI) - such as investing resources in automating something that is short lived.
-
Can the number of high-level tests be reduced without compromising quality (think shift-left)? - such as aiming to reduce the number of UI (end-to-end) tests as they are by nature flaky and long running.
-
Time invested in fixing failed tests - without reflecting on their purpose or suitability or relevance
-
Improving existing practices - such as if tests are taking a too long time to run, how can run time be reduced
Testers especially those who find it challenging to approach an issue or a problem or a testing activity should take a step back and spend some time thinking about thinking.
Ā
What is Critical Thinking?
Have you compared anything recently? if yes, then you have used critical thinking. š š
As Connie Missimer defines:
Ā
"Critical thinking is a consideration of alternative arguments, hypotheses, theories or objects in light of their evidence."
Ā
One might think that critical thinking is painful and it requires me to work and think really hard or require some special powers to accomplish critical thinking but it's really not. Critical thinking is not hard or perfect, or not necessarily criticizing anything, rather it is a simple comparison of alternatives. For example:
-
Is cypress.io better than selenium?
-
Do I like product A more than product B?
-
Is idea A better than idea B?
-
Will a test case/activity/approach provide any value or not?
The fact that one needs some special powers or needs to be naturally gifted to think critically is a myth, everyone is already thinking and can think critically by:
-
Questioning assumptions
-
Question obviousness
-
Reasoning (ask why?)
-
Identify assumptions and play with it
-
Look for alternatives and supporting evidence
All of us are using critical thinking daily. It is just that doing it consciously and regularly can lead to great results and that is something that comes or becomes second nature when you practice it daily. (If you want to learn how to form habits - I'd highly recommend the book Atomic Habits by James Clear)
Ā
Why is Critical Thinking useful in testing?
Using critical thinking in testing is really important as it can lead you in some really interesting directions and at the same time, it can stop you from going into the wrong, inefficient, long, unfruitful directions. In testing, critical thinking helps to avoid:
-
misconceptions
-
thinking narrowly
-
asking vague questions
-
jumping to a conclusion
-
missing key ideas
-
making poor decisions
-
unclear or confusing information
-
accepting inaccurate information
-
presenting or reporting inaccurate data
-
unjustified assumptions
-
poor communication
-
unimportant insights
-
taking anything for granted
-
focusing on irrelevant ideas/tasks
-
shallow knowledge or understanding of product/service
Ā
Employing Critical thinking
Critical thinking is a highly worthwhile activity as it's responsible for everything that we have around us today. It is necessary for the world we see and have around us. Many greatest thinkers of all time, the likes of Newton, Darwin, Galileo or Albert Einstein, used reasoning to support their critical thinking to come up with alternative theories and hypotheses.
As a tester, when you don't think critically, your knowledge of the product may not grow as quickly or correctly as you'd want; to ensure your understanding and eventually to deliver the quality product.
Last year I was asked to assist with testing of an almost finished project with a strict deadline, for which UAT has started, resulting in a huge number of bugs and issues surfacing. These findings were threatening the project deadline and forced the team to re-evaluate the whole codebase to fix the bugs.
As an outsider, I immediately identified that team were missing a whole lot of testing activities especially the low level (highly important) testing such as unit, component and integration testing, so I worked with the team to place their focus on implementing these testing activities which were I believed as necessary, only to find out that these were not really providing the value, quality and confidence that the business wanted to see at that(mature) stage of the project to deliver it successfully and in time.
It was then I stopped, took a step back to think and reason the best approach to test the project and I realized that only the end to end testing could provide the confidence in the project as a whole as compared to my previous approach which was providing confidence in the parts or components of the project.
Here is the process I used to employ critical thinking in the above example to bring the focus of testing activities back on track.
Ā
5 Steps to New ThinkingĀ
Below are the 5 steps and associated questions that when asked will help you to think critically and/or will help you get better at critical thinking.
-
Stop and Think
-
What is the situation?
-
What are you trying to accomplish?
-
When does a decision need to be made?
-
Is this situation a high priority/high risk or can it wait?
-
-
Recognize Assumptions
-
What are the unstated assumptions associated with the goal, problem, or information that you know?
-
What do you know? What donāt you know?
-
-
Evaluate Information
-
Is your information accurate?
-
Is your information relevant?
-
Is your information from credible sources?
-
What are the alternatives to explore?
-
-
Draw Conclusion
-
Which alternative best matches the success criteria?
-
Is anything missing? Are there other alternatives that I might have missed?
-
Clarify your criteria for evaluation and identify if any of the alternatives can be eliminated.
-
-
Develop a Plan of Action
-
What types of resources are needed to implement this decision?
-
What plans need to be made to implement this decision?
-
What are the consequences of this decision?
-
Note: To learn more about the above process please refer to chapter 4 of the book Now You're Thinking!
Ā
A tester's benefits from thinking critically
-
Helps the tester question the requirements instead of only confirming the requirements
-
Enable weighing in pros and cons to decide which test automation tool to use
-
Enable weighing in reasons to decide whether or not automating something will deliver value on investment
-
Help promote shift left (require critical thinking) culture
-
When used as part of exploratory testing it helps derive knowledge about the product, its functionalities
-
Helps focus and decide on testing activities that deliver the most value
Ā
Wrapping Up
Critical thinking is possibly the most important type of thinking that a tester must practice to become a better tester. As many of us are the victims of pre-existing ideas, processes, assumptions that we forget to think and question these existing norms, so at this point, I'd like you to question This is how we do it here! - by asking what if I tried this alternative?
It's about thinking and asking what if, what if, what if?
Critical thinking is your Kryptonite to challenge the pre-existing, outdated or irrelevant norms that hinder your ability to be the best you can.
And once again if you remember nothing else from this article, remember this:
Ā
"A good tester is the one who thinks, challenges, explores, investigates and questions rather than just accepts(at its face value), checks, validates and verifies."
Ā
Author Bio
Naveen is currently working at Facebook as a QA Engineering Lead. As a leader, he helps to build a quality culture based upon autonomy, collaboration and trust so that teams are equipped with the skills necessary to build truly awesome quality products. Heās a strong advocate of shift-left, continuous testing, and context-driven approach to testing.
In his career, Heās been a developer, lead engineer, architect, freelancer and a mentor. He has experience in working on large scale projects, monolithic & microservices architecture, cloud solutions, designing test automation frameworks, test strategies, and building and leading teams.
Ā