As a software tester, I am always looking for new ways to improve my testing capabilities. After starting at Buttonwood, I came across an approach called Exploratory Testing, which involves simultaneous learning, test design, and test execution. The term Exploratory Testing was first coined by Cem Kaner and was common practice in Silicon Valley during the 1980’s. It has since evolved to assist agility within program and application testing.
We are living in a world where technology is constantly changing. Exploratory testing is the best way to keep up with those changes. I enjoy the freedom of being able to test as I go, without needing to plan every step in advance. With exploratory testing, I am able to use the application as if I was an end user, and take the same journey that they would take, to discover bugs and other defects.
Before I get too far ahead of myself, we need to understand what exploratory testing is.
What is Exploratory testing?
Exploratory testing comes from the word “explore”, which is defined as travelling through an unfamiliar area in order to learn about it. As its name implies, an exploratory tester discovers a new system with minimum planning and maximum test execution. This type of testing is very different to formal testing, as the tester does not rely on documentation, but rather their own knowledge and experience. The tester can explore the application from various perspectives, to expose defects that are often missed through automated testing. As the tester starts exploring the application, new test design ideas begin to form, which they can execute them immediately.
For many testers, exploratory testing is more beneficial than formal testing. There is no doubt that it is an excellent way of testing software. Testers are free to utilize their skills and knowledge while gaining a deeper understanding of the product.
It exposes bugs missed by formal testing:
As I mentioned before, exploratory testing exposes more bugs and defects that might have been missed by automated and manual testing. The human knowledge that is involved in exploratory testing gives a broader view of the application than what automated testing does.
It promotes agility:
Exploratory testing is an agile method used to keep up with evolving technologies. I know that in the Buttonwood offices, our app development moves fast. Our developers are constantly evolving functionalities, and the only way I keep up with testing these functionalities is through exploratory testing. As soon as they develop a new functionality, I can test it straight away, without any documentation.
Of course, as with any testing, exploratory testing is not without its challenges. There is a chance with exploratory testing that the tester may miss even the simplest defect.
It is dependent on testers capabilities:
This testing doesn’t depend upon scripted documentation, it relies purely on the tester’s skills, which are limited by the knowledge and experience of the tester. The level of competency shown by the tester can impact the results of the test. A simple human error can result in not finding all the bugs within the application.
It is not suitable for long execution:
This testing is more suitable when there are incomplete requirements and a shorter timeframe. With exploratory testing, testers put less time for planning and preparation of test cases which allows more time for design and execution. The tester will often focus solely on identifying defects and bugs that are normally missed by the other testing techniques.
Reproducing bugs becomes more difficult with exploratory testing:
With exploratory testing, it can be very difficult, but not impossible, to keep track of what has been tested. In general, the testing team should work together to be able to reproduce bugs. However, when exploratory testing is performed by the testers, there are no documented test cases to refer to. This makes it more difficult to reproduce the steps that led to an error, and determine whether the bug has been fixed.
How to be a Successful Exploratory Tester
Testing is not as easy as you may think. With so many new updates and technologies, it can be difficult to keep up with all the testing that needs to be done. As exploratory testing doesn’t rely on documentation, the tester must stay organised. A test is not successful until the application is defect free.
There are many things that a good exploratory tester needs to keep in mind while testing. Probably the biggest thing to remember is the importance of note taking. Your team cannot read your mind. The easiest way to share important information with them is by writing it down. My Buttonwood testing team is very small. When I come across bugs, I always make a note of it to pass on to the developers at a later stage. Generally, when testing I don’t have time to stop and talk to the rest of my team about bugs.
Taking notes while exploratory testing also helps me stay organised. As I do not have any documentation to go off when running testing, I make notes of techniques and identify risks, that will ensure a successful test.
While it is not that answer to all your testing needs, agile teams should embrace exploratory testing to complement both automated and manual testing practices. It is the perfect method for performing a quick check on new functionality, and you can easily correlate exploratory testing results with automated test results.
Remember there is no right or wrong answer as to which method is more effective in the testing world. It depends on each organisations’ needs and their suitability.