Agile testing applies the principles of the Agile methodology to product testing, integrating continuous testing into every stage of development.
Possibly more so than any other development methodology, the Agile approach to software development has completely transformed the way that businesses approach the app-creation process. Unlike more-traditional ‘Waterfall’ methodologies, where linear systems require that teams complete entire project phases before subsequent phases can begin, Agile development empowers teams to work simultaneously on multiple project phases.
The advantages of this approach include faster time to market, increased project transparency, and the flexibility to pivot mid-project to account for changing objectives or other new data. And a core element of the Agile approach is Agile testing.
In Agile, testing need not wait until the development aspect of the project is completed. Instead, testing operates continuously alongside other development efforts. Testers work in conjunction with developers and even customers to ensure a higher-quality end product.
There are several distinctions that separate Agile testing from the Waterfall approach:
As mentioned above, traditional software development delays testing until the very end of the development life cycle. This is because in the Waterfall methodology, each project phase must wait for the previous phase to be completed before it may begin. As such, the testing and integration phase could only be initiated following system design and implementation phases, where development work has already been completed.
This rigid development model is clearly structured and relatively easy to manage. However, there are also several drawbacks. When project requirements experience unexpected change, or when tests reveal inherent problems in early conceptual stages, adapting to account for these issues can be nearly impossible. Simply put, when testing is delayed until after development, addressing changes and software bugs becomes difficult and costly, and can hamper a team's ability to meet their deadlines. Often, they end up facing an unhappy choice: Delay the release until every issue can be resolved, or release a sub-par product—It’s a lose-lose situation.
Unlike the Waterfall methodology, Agile insists that testing occurs at every stage of development. Whenever an update is made to the software code, the test team steps in and automatically verifies its functionality. Alternatively, initial tests may be used to determine the shape of the code should be created. Testing may also incorporate automated solutions as well as usability testing involving end users.
Although it may seem chaotic to implement testing at every stage, the reality is that by testing throughout development, teams can produce better end products, faster. To do so, they must adhere to several important Agile principles:
Because Agile testing is an integral part of the Agile development methodology, the benefits it provides are closely in line with other Agile advantages. These advantages include the following:
Because Agile testing allows teams to detect and correct defects so much earlier in the development process, bugs are less likely to carry over to launch. At the same time, testing incorporates every member of the development team, allowing them to apply their unique skills to create a better end product.
In traditional development, the product is not released until every phase of development is completed. Unfortunately, with the fast pace of technological evolution, even a few months of development limbo can result in features—or even entire products—that are completely obsolete by the time they’re ready to be deployed. Combining development and testing continuously throughout the entire lifecycle ensures that production moves forward quickly, and that released applications are relevant to the current market.
When teams operate like assembly lines, there is a lot of wasted time where testers are left waiting for projects to move into the testing phase. Agile testing eliminates this down time, allowing testers to operate simultaneously with developers. This means more tasks completed in less time.
Customers and other end users want solutions now; if they’re forced to wait for product launches, they will lose interest. Agile testing not only delivers applications faster, but it also ensures that applications are always being improved upon to better serve the customer experience.
Although Agile testing occurs at every stage of the development lifecycle, an effective Agile testing strategy incorporates its own life cycle, made up of four distinct stages:
Often referred to as “Iteration 0,” the initial stage of Agile testing covers the groundwork that will be needed to push tests forward. This involves establishing a business case, scope, and boundaries for the project, while also outlining key requirements, identifying risk, and performing cost estimates. It also includes identifying and securing essential testing resources (including people and tools).
Most Agile testing occurs during this stage. Construction iterations are repeated testing actions that may be classified as either confirmation testing or investigative testing. Confirmation testing verifies that the function or product fulfils the established purpose it was designed to address. Investigative testing locates bugs or other issues not directly tied to product purpose, such as usability or integration defects.
As the project nears completion, Agile testers must validate the completed software as a whole. This includes full-system testing and acceptance testing, and is generally much more rigorous than mid-development tests.
Finally, with testing complete, the product can move into production.
As they become more proficient at Agile development, many organizations prefer to create their own Agile testing methodology to better match their unique needs. Still, it often helps to start with an established methodology, and then adapting it to specific use cases. The following are several popular approaches to Agile testing:
Test-driven development (TDD) places tests at the very beginning of the Agile development process. Tests are created for each functionality and are then run. If the program fails the test—which it will, because the code for the feature has not been written yet—developers then write the simplest code possible to make the test pass. Automated testing scripts help instruct developers to write code only when tests fail, eliminating the risk of duplicate code.
Acceptance test-driven development (ATDD) is similar to standard test-driven development. The distinguishing factor is that ATDD starts with the creation of a customer story. Teams dial in on how the product is to be used, and then create a user-acceptance test to help guide development. This approach places user expectations at the forefront of the development cycle.
A natural extension of ATDD, behavior-driven development (BDD) also begins with the creation of a user story. However, that story needs to be connected directly with a business outcome, specifying why—from a business perspective—the feature is being developed. Tests are then built to drive development in the direction of desired business outcomes.
While automated testing scripts are employed in TDD, ATDD, and BDD testing methodologies, exploratory testing takes the manual approach. It relies on human testers to generate relevant tests as they explore the developing product. Although not as structured or as fast as the testing methodologies listed above, exploratory testing makes full use of tester skill sets and intuition and is effective at locating risk-related issues that would slip past other approaches to testing.
Session-based testing takes exploratory testing further. Rather than relying so heavily on the tester’s instincts, it adds structure by which tests may be conducted. At the beginning of each session-based test, testers create a charter, detailing exactly what the team hopes to discover with the test. This is followed by a focused, uninterrupted test, after which the test is reported on. By starting exploratory tests with a clear goal in mind, testers can ensure that no areas get overlooked.
Agile testing provides for many different approaches and types of tests, which can make it difficult to determine which tests are most appropriate in which circumstances, and whether manual or automated testing is the better approach. To help guide their development teams, many businesses rely on Agile testing quadrants.
Agile testing quadrants provide essential testing taxonomy—teams can quickly determine what kind of code to write by looking at the two left-hand quadrants, and learn more about the code they’ve written in the two right-hand quadrants. The four quadrants are as follows:
This quadrant includes tests that exist to improve the code and the product. They are generally automated, and are performed throughout the app development lifecycle with the purpose of providing developers with feedback on code quality.
The second quadrant is dedicated to tests that help improve business outcomes of the product. Combining manual and automated scripts, these tests help ensure that the product does what it is supposed to and drives value for both the business and its customers.
Providing feedback on tests in the previous two quadrants, Quadrant 3 consists of user-acceptance, usability, and exploratory tests. These manual tests exist to test both the product itself and the user experience, and to give developers vital insight into the product to ensure that it can fulfill its designated function.
Quadrant 4 involves tests related to the non-functional requirements of the product, such as data security, stability, and compatibility. These technology-facing performance tests rely on tools capable of automating the testing process.
Together, these quadrants offer a holistic view of software testing to help inform decision making. They do not, however, provide a means to prioritize tests—those decisions must be made by the teams themselves.
Agile software development has changed how organizations of all shapes and sizes create software, and Agile testing is a big part of this revolution. But with constant testing integrated at every step of the development life cycle, testing processes can quickly become jumbled.
ServiceNow, the industry leader in IT management solutions, provides the tools businesses need to get the most out of Agile testing. The ServiceNow Test Management 2.0 application helps organize and streamline test-process management. Managers can easily build and monitor tests and test sets, create test plans and cycles, assign resources, and evaluate tests and test results. Testers likewise enjoy increased support in creating tests and test sets, performing test and recording results, and reporting defects.
Give your tests the power to optimize Agile development. Try ServiceNow Test Management 2.0 and take testing further than ever before.
The Now Platform includes core capabilities that enable you to quickly and efficiently digitize workflows and run them at scale.