QA City

   QA City >> Expert Column
Dont Miss Experts

The Importance of Exploratory Testing In Agile Projects

Mukesh Sharma
Mukesh Sharma
Founder & CEO, QA InfoTech
Mukesh Sharma is the founder and CEO of QA InfoTech. QA InfoTech (an ISO 9001:2008 and CMMI Level... more>>
Over the last two articles I have been touching upon various testing aspects in Agile projects - such as Test estimation in Agile, Test metrics in Agile. In this post, I want to touch upon a very interesting topic on the importance of Exploratory testing in Agile projects.

Quoted from Wikipedia "Exploratory testing is an approach to software testing that is concisely described as simultaneous learning, test design and test execution. Cem Kaner, who coined the term in 1983, now defines exploratory testing as "a style of software testing that emphasizes the personal freedom and responsibility of the individual tester to continually optimize the quality of his/her work by treating test-related learning, test design, test execution, and test result interpretation as mutually supportive activities that run in parallel throughout the project."

With such emphasis on the tester's individual creativity and freedom, this testing technique really brings out true potential of a tester. In the past, when traditional development models were more prevalent, the product development process was more rigid, with clear specifications laid down in detail. In the current day scenario where Agile projects have become more dominant, we all know that time is of essence and that team collaboration is encouraged more, than writing down all product and feature specifications. This is part in true because of time constraints but is also largely driven by dynamic product requirements, which make specifications obsolete very soon. All disciplines are de-emphasizing documentation and focusing more on hands on work.

Product specifications have been a guiding pillar for the test team all along in helping them understand the product, design test cases and know what to expect from the implemented piece of software. Given that this scenario is changing, where specifications are only written at a high level and not necessarily maintained throughout the life cycle, exploratory testing comes in very handy to help the tester understand the product's behavior and implementation. This helps them play around with the product in a free-flowing manner even before tests are designed, helping resolve any product queries upfront; it also helps the developers get a feel for product quality as quickly as possible.

In some agile projects, releases are extremely short, with time to market as short as 1 week or even less. It is not a practical use of the tester's time in such cases to go through the regular process of test planning, test case design, test execution, defect management etc. While test case design is invaluable, in situations such as these the focus on test execution (which is exploratory) is what will yield maximum return on investment. In all these situations the testers should not under-play the importance of test design and should spend time writing test cases for valid bugs from such exploratory efforts, to ensure they form part of a robust regression testing suite, for subsequent re-use.

Typically, the quality of bugs tends to be higher in exploratory testing rather than in formal test case based execution, due to two reasons:

a. Exploratory testing in Agile forces the tester to collaborate with the rest of the product team such as the development team, business team, design team etc. to clarify understanding in the absence of detailed specifications. Such collaboration promotes better understanding of the product, known issues, duplicate issues etc. forcing the tester to report only valid bugs

b. Exploratory testing encourages the tester to be creative in his/her own sphere, rather than be bogged by mundane testing focused around designed test cases trying to execute "x" number of tests per day. Such creativity promotes better end user role play and more realistic bugs rather than bugs that the team can afford to live with

If such is the power of exploratory testing, why has it not completely replaced the traditional techniques? Well, it has not, for the right reasons:

1. Mapping exploratory test efforts with the overall test strategy in making the important call of product sign off is often difficult. Challenge in establishing test traceability is a practical problem to address

2. Ensuring all the required types of testing are done including performance, security, localization, accessibility may be difficult to establish in exploratory testing. This is especially true when the tester goes into a comfort zone to conduct exploratory tests in just one area and loses focus on others. For e.g., a tester who is particularly good at accessibility testing may want to focus more on accessibility and usability aspects in his exploratory test efforts and not as much on other areas

3. Exploratory testing can get randomizing when used as a stand-alone technique especially for testers in their early stages of their career, not giving them a sense of confidence in their test efforts

Thus, while exploratory testing has its own benefits to offer especially in an Agile project, a test manager plays an important role in leveraging it in combination with formal testing techniques subject to project's constraints of time, cost, complexity and laying down areas that might additionally benefit from exploratory test efforts. Such an informed decision being cautious not to tress-pass into the tester's exploratory thought process will go a long way in reaping the benefits this technique has to offer in an Agile space.

Experts on QA
Swaid Qadir Bhat
Sr System Architect
Virtusa Corporation
Subhash  Motwani
Prasad Rao Pasam
Ayaskanta  Mohanty
Managing Director
TATWA Technologies
Rajesh  Dagar
Software Architect
Connect Icon Pvt Ltd
Yasar  Khuthub
Software QA Manager
Azure IT Solutions
Sunil  Bhat
Project Management
HCL Infosystems Limi
Sharad  Agarwal
Team Lead