Designing Digital Future

Exploratory Testing alias Creativity alias Diligence

It has been a fun journey for me to explore more about exploratory testing with the passing time. Exploratory testing is not only useful for finding defects. It allows the QA team to search and test areas they may not usually venture creatively. Additionally, it opens up to scrutiny areas that are often skipped or lightly tested. All you need is a software application and the willingness to creatively and diligently disassemble.

The concept of exploratory testing was developed in the early 1990s by Cem Kaner and James Bach. It is a non-traditional testing method in the sense that the test cases are written simultaneously as the tests are run.

Following are a few tips and tricks which I could recommend from my experience:

1. Use RIMES in your exploratory testing which is a mnemonic that stands for Replicate, Isolate, Maximize, Externalize, and Say it clearly and dispassionately. Keep your trial simple, yet comprehensible and do cross-functional pair testing. 

  • Replicate it first – As a tester, if you cannot replicate the defect, you would have a hard time convincing the developer to fix it, so make sure you reproduce the defect first.
  • Isolate it – You want to get to the defect quick and easy. Cut down the number of steps needed to be able to reproduce the defect so that you can isolate it.
  • Maximise it – If you can reproduce a defect, don’t just stop there. Run follow up tests to uncover conditions and scenarios that may reproduce the same defect or might lead you to discover the root cause of the defect.
  • Externalise it – Look at the defect not only from a tester’s role but from various other stakeholder roles. Document the impact of this defect to the identified stakeholders.
  • Say it clearly and dispassionately – Be clear in your bug report and take away the attachment and passion towards the defect itself. Remember that a tester and developer are a part of the same product-team so be neutral and unbiased to write bug reports for the benefit of the overall product team. 

2. Diligence helps the passionate exploratory tester find bugs, especially well hidden, deeply rooted ones. Persistence means keeping up testing until defects are found. We all know any application has defects, but sometimes it's difficult to see them, especially if we're used to testing in the same functional area. A diligent tester is not afraid to venture into unknown territory or break new ground.

3. Leave the comfort zone: Test outside your comfort zone. Test in an unknown functional space. It happens that testers become so familiar with an application during the course of its development that they sometimes can no longer see the defects. After working around existing defects the tester may not recognise them or stop long enough to investigate thoroughly. It can be useful to have test teams switch testing areas to see if new defects can be found.

4. Access the logs (request access if you don't have), capture the relevant info from them.

5. Mention the frequency: Write in the bug how many times you can repro it. i.e. 2 out of 5

 

The difference between the traditional tester and exploratory tester:

 

When a defect is found in a product, the conventional tester would first try to reproduce it by looking at the condition that may have caused it.

An experienced exploratory tester would not only look at the known conditions that may have caused the defect, but he/she would also look at alternative conditions and scenarios that can cause the same defect to appear.

«Too much exploratory testing may result in too much time spent on discovering edge case scenarios and more time lost on regular testing. Make sure you maintain that healthy balance between the two BY TIME-BOXING IT.»

Have fun with exploratory testing.