Think like a software tester.

This page is under construction.
Coming Soon.
Think like a software tester

under construction

"If you hold a cat by the tail you learn things you cannot learn any other way."
Mark Twain

We are moving from
Think like a software tester.

Below are just some personal notes on the topic.
This information is not complete, verified and systematised. Some references will be provided in the future

This article is under construction and is being completed in stages. Check back frequently for updated information.

The objectives of this page are to identify different types of thinking useful for any software tester and bring together some useful information for different aspects of software tester intelligence into one place.
You’re reading this page because you want to improve your general thinking skills and improve yourself as a software tester or QA analyst for finding exceptional bugs first and quickly. Managers of development teams may receive the same benefits from reading these recommendations because their success as well as project success depends on the quality of software testing.

First of all, this page is focused on teaching a software tester and QA analyst how to:
  • Think like a software testing guru.
  • Making right decisions during software testing.
  • Become familiar with different styles of thinking.
  • Learning different software testing tactics and thinking techniques.
  • Gain understanding about how critical thinking works in a team setting.
    However remember that unorganized thinking is the worst thing that may happen to a software tester and QA analyst
    *******************************Table of contents:
    1. Introduction and useful definitions.
    2. Testers' axioms and general software testing laws.
    3. Why any software tester must think smart.
    4. Different types of thinking during the software testing cycle.
    5. What kind of tools can help software tester to think smart ( visualization tools).
    6. Defining a Problem and Focused Observation during software testing.
    7. Setting Goals and Brainstorming with Graphic Organizers before and during software testing (combined with brainwriting).
    8. Questioning tips. How to
    9. Not misusing Information
    10. Recognizing a software problem
    11. Evaluating Facts and Troubleshooting during software testing.
    12. Do not forget about the Pareto Principle
    13. Creative thinking training techniques.
    14. Suggested training for software testers
    15. Persuasion Techniques
    16. Some options for future consideration
    17. Conclusion
    18. The Dictionary of used definitions.
    19. Suggested readings and Finding Resources
    20. Bibliography


    It is possible to write a separate article about any type of thinking mentioned in this article and write a book about their comparison. If you are interested in details please refer to the Suggested Readings and Finding Resources part of this article (link). I will try to give a short description of various thinking types that can be used during the software testing life cycle.
    I will try to use the KISS law (keep it stupid simple) and think that when you need to choose any technique and it depends on your or somebody else's opinion - mistakes can take place.
    And remember that certain thinking techniques are best suited to the certain types of problem-solving and you always need to adjust your thinking to new information.

    Let us begin with some popular definition of thinking and other definitions used on this page:

    Definition of "think" from the Merriam-Webster Online Dictionary: subject to the processes of logical thought; to exercise the powers of judgment, conception, or inference;

    Synonyms: think, conceive, imagine, fancy, realize, envisage, envision, cogitate, reflect, reason, speculate, deliberate.

    ******************************Tester's axioms and general software testing laws.
    1. Any non-trivial program contains at least one bug
    2. There's always one more bug.
    3. Undetectable errors are infinite in variety, in contrast to detectable errors, which by definition are limited.
    4. Testing is the art of thinking.
    5. Software Testing never ends, it just stops.
    6. After fixing one bug in the system that has X of them, the number of remaining bugs in the system will be X+1.
    7. If you have not tested it, assume it is broken; if you already tested it assume it is broken too.

    see more on the "Main Testing Laws" page of this website.
    *************************Types of thinking as a software tester

    "The mind is its own place and in itself can make a hell of heaven or a heaven of hell"
    —Milton, Paradise Lost

    Are you ready to accept the challenge during software testing?
  • Jerry Weinberg's tip for critical thinking: "Think of at least three ways in which your ideas can fail"
  • James Bach Key Idea: "Think Like a Scientist."
  • Dr Edward de Bono: "Lateral thinking is a systematic way of approaching creative thinking."
  • Think like a chess player and try to test fast like you play blitz or rapid chess because we are usually given less than the necessary time to get our testing done.
    "The combination player thinks forward; he starts from the given position, and tries the forceful moves in his mind." - Emanuel Lasker
  • Think like a detective.
    "How often have I said to you that when you have eliminated the impossible, whatever remains, however improbable, must be the truth? " Sherlock Holmes
    Testing Lessons Learned from Sherlock Holmes! "You know my methods, Watson. There was not one of them which I did not apply to the inquiry." [The Memoirs of Sherlock Holmes (1893)]
    Develop your intuitive thinking. [Daniel Kahneman]
    Use statistical thinking. [Daniel Kahneman]

    As everybody knows in software testing we have different techniques like white BOX testing, black BOX testing and grey BOX testing; now we need to learn thinking like a tester and how to apply thinking to out of the BOX testing and other types of thinking to improve our "BOX testing" techniques.

    ************************Brainstorming with Graphic Organizers:

    Try to use charts, concept maps, webs, Venn diagrams, and problem - solution outlines to arrange all your ideas for effective testing solutions and to show what you tested and what you still need to test.

    How to use idea generating methods

    ************************Emotional intelligence
  • Apply the appropriate emotions during testing.
  • Apply ABCDE approach by Dr Albert Ellis for increasing effectiveness.

    ************************Random Word Generator technique for brainstorming.
    General tips and notes on brainstorming session

    5 – 7 participants, round table session, 30 - 45 minutes long, notes or voice recording during the session, send agenda 2 – 3 days before, use different facilitating techniques, no evaluations and criticizing of ideas during a session,

    Chairmen tasks: stop evaluating and criticizing, keeps everyone to concentrate on the central problem, organize evaluation session.

    You can also use the random word technique for solving the current software testing problem. Generate creative ideas using the Random Word Generator technique.
    The Random Words creative technique for generating new ideas is very popular. You can even find free tools on the web for generating random words to use with this technique. I think that in our case (brainstorming any defined problem in software testing, not just generating good ideas) it will be a good idea to narrow random words related to only software testing. You can freely use the most comprehensive software testing dictionary from this website for selecting random words. Using a random word from the testing dictionary can just remind you of something which you knew all along, but you had forgotten or you will have opportunity to learn new testing terminology for your brainstorming. You can always switch to the original random words technique that was first described by Edward de Bono in 1972 in his book "Lateral Thinking: a Textbook of Creativity." You can select random words from tables of random words in his book "How to have creative ideas". (Note: Keep in mind creating a table of random words from a software testing dictionary. It may have sense to add words from the QA dictionary, as well as general computer terms. )

    You can also use the random word technique for assessing the current problem:
    Using the random word technique for solving the current software testing problem.
    Example of exercise:
    The task: Automation.
    Step 1. Select all words from software testing dictionary that somehow can be related to you current project, environment, process or application.
    Step 2. Discard some of them to obtain 4 -6 for your brainstorming sessions.
    Step 3. For each of remaining random words validate that the whole process or something else can be automated.
    Step 4. Validate what ROI will be from this automation.
    Try the same process with tasks: simplify; improvement;
    According to Edward de Bono (lateral thinking p. 53) there are three types of problems:
  • Problems that require more information or techniques for solving (use vertical thinking for solving)
  • Problems that require rearrangement of the available information (requires lateral thinking)
  • Problems of no problem - you need a new or better approach (requires lateral thinking)
    **************************** Questioning tips.

    "I KEEP six honest serving-men (They taught me all I knew); Their names are What and Why and When and How and Where and Who." [Rudyard Kipling from "Just So Stories")]

  • Ask a Better Question
  • Ask the Question Early
  • Express the question in several ways to clarify its meaning and scope of testing.
  • When you can break the question into as many sub-questions as possible.
  • Try to avoid any close-ended questions.
    ****************************Why any software tester need think smart:
    Different software testing activities when a software tester needs to think especially smart:
    1. To check if you have covered all the important functions "Business Paths" of the software application you are testing.
    2. To present ideas by linking them together to convince management (or team members) of your conclusion.
    3. To establish a testing framework that makes sense and will work.
    4. To estimate the testing process so that this estimation can be clearly understandable.
    5. To be sure that you have used all the important information related to testing.
    6. To identify when you need to find out more information for testing.
    7. To predict future bugs.
    8. To explore existing issues and make the right decision during bug management in a bug tracking system.
    9. To ensure that your testing plan is realistic.

    "Simplicity is the ultimate sophistication."
    —Leonardo da Vinci

    Edward de Bono - The Ten Rules of Simplicity:
    Rule 1. You need to put a very high value on simplicity.
    Rule 2. You must be determined to seek simplicity.
    Rule 3. You need to understand the matter very well.
    Rule 4. You need to design alternatives and possibilities.
    Rule 5. You need to challenge and discard existing elements.
    Rule 6. You need to be prepared to start over again.
    Rule 7. You need to use concepts.
    Rule 8. You may need to break things down into smaller units.
    Rule 9. You need to be prepared to trade off other values for simplicity.
    Rule 10. You need to know for whose sake the simplicity is being designed.

    Lateral thinking:
  • (Psychology) a way of solving problems by rejecting traditional methods and employing unorthodox and apparently illogical means []
  • Edward de Bono invented the term 'lateral thinking' in 1967. It was first written up in a book called "The Use of Lateral Thinking" (Jonathan Cape, London) - "New Think" (Basic Books, New York) - the two titles refer to the same book []


    "Little by little does the trick."
    —Aesop, The Crow and the Water Jar

    *************************** Some useful tips and options for future consideration:
  • Analyze the logic of situations and general problems during a software testing cycle;
  • Distinguish between raw requirement information and someone's interpretation of it;
  • Use certain key ideas or concepts during software testing;
  • Create the point of view from which you are looking at the application being tested;
  • Do not use incomplete, false, or misleading information;
  • Develop your intuition – but don't trust it completely.
  • Express clear and precise questions during the requirements review;
  • Check testing requirements and related information for relevance and accuracy;
  • Clearly identify your point of view and testing strategy.
  • Before making any important decision:
    - clearly identify your assumptions and determine whether they are justifiable (recognize those assumptions guiding your inferences);
    - search for information that opposes your position first!!
    - try to consider all possible significant consequences;
    - search for negative as well as positive implications;
  • After finishing any software testing cycle conduct a review of the found bugs and the different thinking techniques that were used. These analyses will enable you to evaluate yourself and build strong thinking skills and techniques for future use. At the same time, it will help you to improve performance in finding new bugs.
    And the last two cents:
  • Actively attack unreasonable thinking with reasonable thinking of your choice.
  • Notice when your selfish interests bias general viewpoint.
  • Think smart and hunt for bugs methodically and carefully, rather than rush without any plan.
  • Don't believe everything you read on this page and remember that: "Our mind is influenced by our personal philosophy, by the ideas we hold and by our personality!"
    Create your personal action plan for improving thinking skills (Create downloadable template)
    Choose a goal that is plainly visible and an easy target to achieve.
    ******************************Suggested readings and Finding Resources
    This is obviously only a partial list of suggested readings. A lot of books have been written for software testers and about thinking in general in recent years.
  • Lateral Thinking by Edward de Bono.
    creative and lateral thinking    Main Page
  • A Technique for Producing Ideas by James Webb Young
  • Creative Thinking Techniques   
  • Thinking and Deciding, by Jonathan Baron
  • The Logic of Failure, by Dietrich Dorner
  • Books written by Gerald Weinberg
  • Thinkertoys by Michael Michalko
  • 101 Creative Problem Solving Techniques by James Higgin
  • Lessons Learned in Software Testing, by Cem Kaner, James Bach, and Bret Pettichord
  • Quality Software Management, Volume 1: Systems Thinking [Gerry Weinberg 1992].
  • Lateral Thinking example   
  • All your brainstorming needs   
    I also suggest reading articles and books about software testing. See "Software Testing Books" recommendation page

    Suggested training
  • Training on problem solving, brainstorming and lateral thinking skills
  • Training on observation, thinking and investigation skills

    Pareto principle (also known as the 80-20 rule) The Pareto Principle was re-introduced in 1941 by Joseph M. Juran. In his law, he unfolds the theory that 80% of the effects comes from 20% of the causes. When we apply the principle to testing, this means that 20% of the modules contribute 80% of the errors. Starting from this law, most testers derive their test strategy.

    closed question: a question that provides a set of answers from which the respondent must choose. Multiple choice questions are closed questions.[]
    a closed question can be answered with a simple word or phrase such as 'yes' or 'no' []

  • A statement is a sentence that is either true or false – but not both.
  • Axiom: a basic assumption about a situation
  • Axiom: an explicit basic assumption to be used in reasoning about a system. If not stated explicitly it would be a hidden assumption, and should be made into an axiom.
  • Definition: an explanation of the software testing meaning of a word.
  • Proof: the explanation of why a statement is true.
  • Conjecture: a statement believed to be true, but for which we have no proof. A good software tester will be making, testing and refining conjectures during the software development life cycle.

  • Cognitive dissonance is an uncomfortable feeling caused by holding two contradictory ideas simultaneously.
    *************************************Brilliant people and their mistakes:
  • "I think there is a world market for maybe five computers" [1943, Tomas Watson, chairman of IBM]
  • Thinking, Fast and Slow by Daniel Kahneman (Oct 25, 2011)
  • Understanding Arguments: An Introduction to Informal Logic by Walter Sinnott-Armstrong, Robert J. Fogelin
    *************************************List of great thinkers
    Famous Thinkers   

    [Think like a software tester Back to Top]

    Software testing methodologies    Main Page

    Copyright © 2009  All Rights Reserved.