Exploratory Testing in an Agile Environment
If automated testing is the backbone of agile testing, then exploratory testing is the heart. Like any ‘good heart’, agile exploratory testing seeks to understand the ‘why’ and ‘how’ of a user experience (UX) through empathy. To be successful, both developers and testers must explore user needs and desires to create the ultimate user experience. In this sense, exploratory testing offers agile teams a way to connect with UX.
The shift to software development models like agile requires quality to be agile, as well. Here, agility means providing feedback and status updates early, and often, while integrating into agile’s rapidly iterative development process. Agile test teams need a solution to support their fast-moving new reality while providing comprehensive testing.
What Should Agile Testing Look Like?
Automated testing might be the backbone of agile, but it can’t always address the complexity of finding defects related to usability, performance, reliability and other software quality metrics. Automation won’t tell you which UI aspect irritated or confused the user, only that it functioned properly. As we all know, to gain market share it’s imperative your software does more than simply ‘function properly’. It must meet user expectations and needs.
Enter exploratory testing, the ‘heart’ of agile dev. Exploratory testing is exactly that – exploratory. It combines the knowledge, intuition and experience of testers to predict and expose software ‘gotchas’ without extensive and time-consuming planning. Exploratory testing also teaches us empathy for the experience of using a feature in a way that scripted testing can’t. It might take a few minutes more, but these qualities make exploratory testing uniquely beneficial to the agile environment.
Why Incorporate Exploratory Testing into Your Agile Toolkit?
Automated testing may feel eminently suitable for the rapid pace of agile, and to a large degree, it is. For testing functionality, performing repetitive steps, and creating reusable stories automation is hands-down the favorite. Seriously, I’ve even created ‘quick actions’ in a proprietary CMS just to relieve the tedium of selecting the same choices over and over for every piece of content! While this experience isn’t test focused, it’s nonetheless an example of automating repetitive processes to save time and money. Tasks like this are why many agile teams forego manual testing in favor of automation. Time is money — and running automated tests takes less time. However, this is a short-term view.
Interestingly, researchers found that exploratory testing uncovers 11% more defects than automated testing. In addition, exploratory testing was found to generate fewer false positives than scripted testing. Finding more defects while devoting less time to false alarms creates less technical debt — time spent is not time wasted. Rather, time spent is used to craft a UX that ensures success. The analytical among us would call this strategy the long- term view.
Agile Exploratory Testing – Benefits
Armed with knowledge of the application under test, functional areas to explore, and a bit of curiosity, the goal of an agile tester is to find defects as they test, instead of writing tests to find defects.
Benefits of Exploratory Testing:
- Useful for testing hard-to-document complex or multi-function processes where the result is difficult to predict
- Offers insight into defect blind-spots that are often overlooked in scripted testing
- Exploratory test documentation provides not only defect reporting, but reports on questions raised or clarifications needed during use
- Provides perspective from the user POV
- Is a practical way to explore risk in a functional area to determine if test automation is needed
- Useful when rapid feedback is required on a system, an area of functionality, a feature, or an area that might be risky to modify
Agile Exploratory Testing for the Win
Agile development depends of rapid iteration and release. From the agile quality point of view, every change in the system must be tested as close as possible to the time the change is made. This lowers the risk of late defect detection, and the associated costs. Exploratory testing then becomes an efficient tool in agile development by reducing the time spent authoring and preparing tests, while optimizing feedback time. In this manner, exploratory testing aligns with the Agile manifesto’s second value: “working software over comprehensive documentation”.