What is Exploratory testing in software testing?

  • As its name implies, exploratory testing is about exploring, finding out about the software, what it does, what it doesn’t do, what works and what doesn’t work. The tester is constantly making decisions about what to test next and where to spend the (limited) time. This is an approach that is most useful when there are no or poor specifications and when time is severely limited.
  • Exploratory testing is a hands-on approach in which testers are involved in minimum planning and maximum test execution.
  • The planning involves the creation of a test charter, a short declaration of the scope of a short (1 to 2 hour) time-boxed test effort, the objectives and possible approaches to be used.
  • The test design and test execution activities are performed in parallel typically without formally documenting the test conditions, test cases or test scripts. This does not mean that other, more formal testing techniques will not be used. For example, the tester may decide to us boundary value analysis but will think through and test the most important boundary values without necessarily writing them down. Some notes will be written during the exploratory-testing session, so that a report can be produced afterwards.
  • Test logging is undertaken as test execution is performed, documenting the key aspects of what is tested, any defects found and any thoughts about possible further testing.
  • It can also serve to complement other, more formal testing, helping to establish greater confidence in the software. In this way, exploratory testing can be used as a check on the formal test process by helping to ensure that the most serious defects have been found.
Exploratory testing -
  • Is not random testing but it is adhoc testing with purpose of find bugs
  • Is structured and rigorous
  • Is cognitively (thinking) structured as compared to procedural structure of scripted testing. This structure comes from Charter, time boxing etc.
  • Is highly teachable and manageable
  • Is not a technique but it is an approach. What actions you perform next is governed by what you are doing currently
Exploratory Test Preparation:
Exploratory test preparation goes through following 5 stages detailed below and it is also called session based test management (SBTM Cycle):
  1. Create a Bug Taxonomy (classification )
    • Categorize common types of faults found in the past projects
    • Analyze the root cause analysis of the problems or faults
    • Find the risks and develop ideas to test the application.
  2. Test Charter
    • Test Charter should suggest
      1. what to test
      2. how it can be tested
      3. What needs to be looked
    • Test ideas are the starting point of exploration testing
    • Test charter helps determine how the end user could use the system
  3. Time Box
    • This method includes pair of testers working together not less than 90 minutes
    • There should not be any interrupted time in those 90 minutes session
    • Time box can be extended or reduced by 45 minutes
    • This session encourages testers to react on the response from the system and prepare for the correct outcome
  4. Review Results:
    • Evaluation of the defects
    • Learning from the testing
    • Analysis of coverage areas
  5. Debriefing:
    • Compilation of the output results
    • Compare the results with the charter
    • Check whether any additional testing is needed
During exploratory execution, following needs to be done:
  • Mission of testing should be very clear
  • Keep notes on what needs to be tested, why it needs to be tested and the assessment of the product quality
  • Tracking of questions and issues raised during exploratory testing
  • Better to pair up the testers for effective testing
  • The more we test, more likely to execute right test cases for the required scenarios
It is very important to take document and monitor the following
  • Test Coverage - Whether we have taken notes on the coverage of test cases and improve the quality of the software
  • Risks - Which risks needs to be covered and which are all important ones?
  • Test Execution Log - Recordings on the test execution
  • Issues / Queries - Take notes on the question and issues on the system