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 geocities.com/xtremetesting
Think like a software tester.

TinkLikeTester.html
Below are just some personal notes on the topic.
Information is not complete, verified and systematised. Some references will be provided in 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.


First of all, this page is focused on teaching a software tester and QA analyst how to think like a guru and...
  • 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 how critical thinking works in a team setting.
    However remember that an unorganized thinking is the worst thing that may happen to a software tester and QA analyst
    *******************************Table of contents:
    1. Introduction and useful definitions used.
    2. Tester's axioms and general software testing laws.
    3. Why any software tester must think smart.
    4. Different types of thinking during 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. (Combine 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 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

    *******************************Introduction

    It is possible to write a separate article about any type of thinking mention in this article and write a book about their comparison. If you are interested in details please refer to 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 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 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 necessary time to make 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)]

    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 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 solution 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.
    **************************** 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 closed questions (closed-end questions).
    Why any software tester need think smart:
    Different software testing activities when software tester need 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 (team members) of your conclusion.
    3. To establish a testing framework that makes sense and will work.
    4. To estimate testing process so that this estimation can be clearly understandable.
    5. 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 the future bugs.
    8. To explore existing issues and make right decision during bug management in a bug tracking system.
    9. 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 [thefreedictionary.com]
  • 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 [edwdebono.com]

    ***************************Conclusion:

    "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 requirements 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 under test;
  • Do not use incomplete, false, or misleading information;
  • Develop your intuition – But don't trust it completely.
  • Express clear and precise questions during 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 assumptions guiding inferences);
    - search for information that opposes your position before!!!!!!!!!!
    - 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 found bugs and different thinking techniques that were used. These analyses will enable you to evaluate yourself and build strong thinking skills and techniques for future use. In the same time it will help you to improve performance in finding new bugs.
    And the last two cents:
  • Actively attack the unreasonable thinking with reasonable thinking of your choice.
  • Notice when yours 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.
    Start:
    ******************************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].
  • Think Like A Genius   
    I also suggest reading articles and books about software testing. See Software Testing Books recommendations page on extremesoftwaretesting.com.

    Suggested training
  • Training on Problem Solving, Brainstorming and lateral thinking skills
  • Training on observation, thinking and investigation skills
    *************************************Dictionary:


    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 enfolds 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: question that provides a set of answers from which the respondent must choose. Multiple choice questions are closed questions.[businessdictionary.com]
    a closed question is answered with a simple word or phrase such as 'yes' or 'no' [wiki.answers.com]

  • A statement is a sentence that is either true or false – but not both.
  • Axiom: a basic assumption about a situation
  • Axiom: A 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 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]
    *************************************Bibliography

  • *************************************List of great thinkers
  • Heraclitus
  • Albert Einstein
  • Tomas Edison
  • Isaac Newton
  • Nicolaus Copernicus

    [Think like a software tester Back to Top]



    Software testing methodologies    Main Page

    Copyright © 2009 eXtremeSoftwareTesting.com  All Rights Reserved.