When you look back at the great dynasties in sport – Leo Messi’s Barcelona, Derek Jeter’s Yankees, Michael Jordan’s Bulls or Tom Brady’s Patriots – they all have common traits as organisations. One is a constant focus on continuous improvement.
They were never happy with how good they were; they always wanted to get better. That’s part of the reason they were so successful over many years.
High-achieving Agile teams in software development are similar. They constantly evaluate their processes, welcome new ideas and challenge the status quo to achieve the best results.
Before we look at how important exploratory testing is to Agile teams, let’s define both exploratory testing and the Agile methodology.
What is exploratory testing?
Exploratory testing is about discovery, investigation and learning. As the name suggests, it’s about testers exploring the application to identify potential edge cases. It's important the testers understand the different personas that are likely to use the application. This will allow them to execute the exploratory tests with more success.
Exploratory testing is the simultaneous process of test design and test execution. Unlike scripted testing, it doesn’t restrict the tester to a predefined set of instructions. This shouldn’t be seen as a lack of preparation but rather as a method of not constraining the tester.
The Agile methodology
The Agile methodology is based on the core principles outlined in the Agile Manifesto. They revolve around adaptive planning, early delivery and continuous improvement, with the aim of being able to respond to change quickly and easily.
An increased demand for frequent software updates and enhancements has resulted in a need for faster development and continuous delivery.
The knock-on effects of Agile
Moving from Waterfall to Agile means changes for the QA and development teams:
- The QA and development teams work much closer together.
- Communication between the two teams becomes more important.
- Testing is expected to find high-priority bugs earlier and quicker to lower the risk of late fixes and increased costs.
- QAs must test more frequently and achieve maximum coverage.
That last point is crucial for Agile teams to perform efficiently. Every change to the application must be tested, whether it’s a new feature, improvement or fix. To lower the risk of late fixes and increased costs, testing must be performed as closely as possible to the point when the development team made the change. Add in the generic system tests that QAs need to perform and it’s clear that Agile creates more reliance on the QA team, who often become an Agile testing team.
The critical role of exploratory testing
Exploratory testing shares some important characteristics with the Agile methodology. The frequent nature of development in Agile teams means the testing methods used need to respond to change quickly and easily. When executed well, exploratory testing is quick to implement and fluid in its approach.
1. Find bugs that automated tests miss
By exploring the application, you will uncover the unique, hard-to-find bugs you didn’t know existed. Scripted testing such as automated testing cannot do this because it follows predefined instructions. Anything outside of this scope will be missed.
It’s easy to miss something you’re not looking for:
Exploratory testing is certainly not a substitute for automated testing. However, it is a great way of uncovering critical bugs that would be missed with automated testing alone, as well as when an automated approach is not appropriate.
2. Diversity means discovering more bugs
The collective power of more heads is better than one. Diversity is vital for exploratory testing to succeed. The more diverse the group of exploratory testers – from developers to product managers, UX designers, business analysts and support engineers –, the better the results will be.
Diversity brings fresh perspectives to exploratory testing. It also means you can test a broader range of the application, thereby reducing the risk that a critical bug goes unnoticed.
In Agile teams, there is never enough time to test everything. However, exploratory testing will reduce the risk of bugs slipping through which impact the end-user, whilst maximising the QA team’s time.
3. Speed of test cycles
Another reason why exploratory testing is so efficient in Agile is the speed of its test cycles. A common misconception about exploratory testing is that it slows down the development cycle. This is untrue. Unlike other testing methods, there is no need to invest time in authoring, preparing and approving test cases for exploratory testing.
One of the main principles of exploratory testing is that it reduces unnecessary documentation, in line with the second value of the Agile Manifesto: "working software over comprehensive documentation".
In addition, exploratory testing feedback is very quick. It allows the QA team to adjust strategies and refocus swiftly.
Where does automation fit in with Agile teams?
Test automation fits with the principles of Agile teams. Communication and feedback from the QA team should decipher when automation should be used. For example, if a tester is repeating the same regression test on multiple occasions in a short period of time, it should be a candidate for automation. Highly repetitive, laborious testing is where automation works best.
As an Agile team, it’s important to know when not to use automated testing too. One-time tasks generally shouldn't be automated. Given how long it takes and the effort required, this typically isn't an efficient use of time, nor is it cost-effective.
Software development is a constantly evolving environment. Change is inevitable. A key element of successful Agile teams is the ability to respond to change rather than stick to the same processes. The best Agile teams constantly re-evaluate their priorities and shift their resources accordingly.
Exploratory testing is a vital component of any successful Agile team’s testing strategy. It will help an Agile team define and develop the application throughout its lifecycle. An exploratory tester asks questions of the application that scripted testing can’t. This helps the development team write better code to improve the application’s quality.
Contact us now to see how we can help with your exploratory testing and the challenges facing your QA team.