A Blog from QualiTest

Agile Testing and Exploratory Testing

Complementary Methodologies Exploratory testing, as defined by Cem Kaner, is comprised of simultaneous learning, test design, and test execution. That is, as Kaner says, “the...

Complementary Methodologies

Exploratory testing, as defined by Cem Kaner, is comprised of simultaneous learning, test design, and test execution. That is, as Kaner says, “the tests are not defined in advance in an established test plan, but are dynamically designed, executed and modified.” A software engineer’s knowledge is paramount to effectively performing exploratory testing (ET). Some sources from which this knowledge is derived includes: observations of the product’s behavior during testing; familiarity with the application, platform, and failure processes; possible faults/failures; the risk associated with the product; etc. (Kaner et al, 2001 [1]). Similarly, agile testing, as defined by the Agile Manifesto of software development, is a method of “uncovering better ways of developing software by doing it and helping others to do it.” This process emphasizes “individuals and interactions over processes and tools; working software over comprehensive documentation; customer collaboration over contract negotiation; responding to change over following a plan”; while there is value to the traditional standbys of testing, agile values its own interactive versions more highly. [2]

The relationship between the two is clearly symbiotic; exploratory testing lays out generalities which lead towards a more tester-centric methodology, taking into account the unique capabilities and knowledge of the individuals. Agile testing, however, takes those vague generalities and gives them a more precise form while still allowing companies and groups to manipulate its framework for maximum efficiency. In fact, much of agile testing actually uses exploratory-based methodologies. Therefore, while ET and agile are not necessarily synonymous, they are certainly complimentary.

Part of the reason agile testing is so suited to exploratory is the time factor. Agile testing usually occurs within a huge time crunch; often testers are only given a few weeks to complete each set of tasks, whereas more traditional methods (including exploratory) can take multiple months or longer, depending on how complicated the project is. Such a short time period means that most preliminary scripts must be thrown out the window; exploratory testing, because it encourages testers to get such an intimate understanding and knowledge of the product, is more efficient for agile testing than other, more traditional methodologies.

An excellent example of this is agile scrum. This testing methodology is comprised of sprints, in which testers devote themselves completely to a short list from the total features of the product. The rapid-fire nature of this process makes it an excellent example of what we discussed above, as each sprint typically lasts only two weeks. Many scrum masters also feel that, due to the cyclical nature of scrum tests, exploratory testing gives testers a better understanding of the product under test, which obviously increases efficiency. The fact that priorities and backlogs are constantly being reassessed between sprints also lends itself to exploratory testing because of its naturally adaptive nature. All of this is not to say that ET is the only method for scrum sprints, just that our in-house scrum masters tend to lean towards it for their testing for these reasons. However, it’s also important to note that scrums are a method which should not be performed long-term; the intensive nature of sprints can easily lead to tester burnout. It’s one thing to push yourself as hard as you can one week a year, but you’re working to the utmost of your abilities for an entire week twice a month, it can be incredibly labor-intensive and have huge repercussions on testers’ productivity and well-being.

The relationship between the two is clearly symbiotic; exploratory testing lays out generalities which lead towards a more tester-centric methodology, taking into account the unique capabilities and knowledge of the individuals. Agile testing, however, takes those vague generalities and gives them a more precise form while still allowing companies and groups to manipulate its framework for maximum efficiency.

Agile also provides benefits for exploratory testers. If nothing else, the environment which it creates is more conducive to ET than the waterfall development model, for example, which prefers scripted verification of requirements. Agile will also allow testing teams to take advantage of quicker turnaround times. The team-based nature of agile leads to better team cohesion and means that teams are better engaged due to the short bursts of work which it requires. By having development and test teams work together directly, as is an imperative part of the Agile Manifesto, the developer often realizes that the tester is actually trying to help them, not make their lives more difficult.
These days, testers have many different options available to them as far as methodologies go. While agile and exploratory are certainly not the same, they are complimentary methods which, when employed together, can create excellent synergy within the testing experience. The flexibility of both philosophies can combine to create a highly symbiotic testing experience both for testers and developers, resulting in better, more efficiently tested final products.

Want to learn more?

References

[1] C. Kaner, J. Bach, and B. Pettichord. Lessons Learned in Software Testing, Wiley Computer Publishing, 2001.

[2] Beck et al, http://agilemanifesto.org/, 2001