Did you know that 89% of development models used are Agile or similar? This ultimate guide will explain what the Agile testing method is, how you can implement, and when you should use it.
Agile testing has become a critical part of application lifecycles and has had a significant impact on software development, testing and quality assurance. It has also gained widespread acceptance as a crucial driver for the delivery of high-quality products. In this article, we take a deep dive into the world of Agile testing to better understand how it works and how it can help you.
In order to understand agile testing, it’s important to understand what the Agile development methodology involves. It’s an umbrella term, encompassing many practices that are quite different from traditional development techniques.
Let’s start by looking at the key principles of agile software development. The four core values are:
As the name implies, an Agile methodology is focused on responding to change. There are many frameworks teams might use, such as Scrum or Kanban, but at the center of it is a collaborative approach.
A traditional development approach might separate team members based on the area they’re working on, and slowly add pieces together to create a finished product. With Agile, continuous integration is key - the whole team collaborates and new features are added as they work. It creates a completely different software development life cycle - which is why teams need to implement agile testing methods to help.
Agile testing operates under the philosophy that continuous testing is a crucial part of development, on a par with coding.
In Agile, testing is integrated directly into the development process so that bugs are discovered as early and as often as possible. As a result, testers can identify problems at every point in the development process, moving the product quickly towards release.
To keep things from breaking in the customers’ hands, testers attempt to break it first - and then have it fixed.
In the traditional waterfall method of development, the sequence of events is:
Requirements > System Design > Implementation > Integration and Testing > Deployment of System > Maintenance.
Traditional Waterfall Method
With this method, the next step does not begin until the previous step has been fully completed, which means the testing team doesn’t receive the product until late in the development cycle.
This can be a real challenge for your software testing team as any bugs they catch at this point will be difficult and costly to eradicate from the product.
Testers who enter the process at this juncture are also unable to ask the right questions and perform the right tests, because there is little feedback from other members of the development team (who are sometimes viewed as ‘the enemy’) or from customers.
Testers are forced to simply wait for the product to come down the assembly line (or waterfall), then use a narrow set of skills to decide whether it should be kicked back to a previous step in the development process.
With Agile, the test plan is in place throughout. Everytime a new update is made to the code, the test team gets their hands on it, feeding back directly to the developers. These test cycles can also feature automated tests and a small selection of end users.
In the book, Agile Testing: A Practical Guide for Testers and Agile Teams, Lisa Crispin and Janet Gregory distilled Agile testing into 10 principles. Since being published, these 10 principles have been widely accepted as the foundation for Agile testing processes
From those principles, a profile of the ideal Agile tester can be derived. In general, Agile testers possess the following characteristics:
A myriad of methodologies have been developed for Agile testing processes. Below are four of the most popular agile testing methods currently in use. While no single methodology is perfect for a specific product, these frameworks are useful as starting points from which to generate a bespoke approach:
Acceptance test-driven development - ATDD is a form of TDD (test driven development). It embraces the collaborative nature of Agile testing, bringing together customers, developers and testers to create acceptance tests from the customer's point of view. Only once these tests have been created is the corresponding functionality developed. It’s easy to create test cases with this style of workflow.This gives developers direct insight into what customers want and how the product will be used, removing ambiguity from the process and reducing the chances of large errors being made.
Behavior-driven development -BDD is based on and enhances test-driven development and acceptance test-driven development. Using their structure adds the identification of correct business outcomes and performs tests based on those preferred outcomes. BDD has five steps:
Describe the behavior
Write the step definition
Run and fail
Write code to make the step pass
Run and pass
Exploratory Testing in Agile - Exploratory testing is a cyclical method, progressing from test design > test execution > analysis > learning before beginning the loop again. The tests themselves are not scripted; instead, they are generated by Agile testers as the product is explored, requiring the tester to make full use of their unique skill set. Exploratory testing is the closest testers get to interacting with a product precisely how it will appear ‘in the wild’. It’s a great way to quickly find out if you have some working software, and it allows testers to identify bugs that would not be found through other testing methodologies.3 key phases of exploratory testing
With these and other testing methodologies, it can be difficult to assess which type of test should be run, how often it should be run, when it should be run, and who it should be run by. There are so many types of tests - acceptance testing, regression testing, unit testing, and more. There’s also the question of whether manual or automated testing is better suited for the current iteration of the product.
Gregory and Crispin created the concept of Agile testing quadrants, which provide a taxonomy for tests. According to Crispin, the two left-hand quadrants help teams know which code to write and determine when they are done writing it. The two right-hand quadrants help teams learn more about the code they have written, providing feedback to the left-hand quadrants.
Agile Testing Quadrants
There are three simple benefits to adopting Agile testing: a happier team, a higher-quality product and faster delivery. But that trifecta is worth the effort put into developing an effective Agile testing framework.
However, no system is perfect. Improperly implemented, Agile testing can weaken team structure and product development, preventing a viable product from ever being released. Even when properly used, all Agile methodologies have their weaknesses. For example, exploratory testing can lack the structure necessary to ensure a product is comprehensively tested; ATDD accounts for customer feedback, but not for business outcomes.
The emphasis Agile testing places on people can also be its downfall. If Agile testers are excluded from the team that they need to be closely integrated with, they are rendered useless. If a single skilled Agile tester leaves, it can prove to be a major setback for the development of the product.
Finally, since everyone in the team performs testing, the muddied hierarchy could lead to confusion and conflict. Methodologies like Scrum attempt to circumvent this by having ‘scrum masters’, but this has the potential to fall back into a more traditional method rather than staying truly Agile.
With dedication, each of these pitfalls can be overcome and the three powerful benefits experienced. The first step towards successful Agile testing is determining when Agile testing should not be used. Blind adoption of Agile testing can result in a weak, crash-prone product.
Here are a few guidelines for cases in which Agile may not be the best way to test:
Once you have determined that Agile testing will benefit your team, your product and your customers, you should spend as much time as necessary to pick the right methodology and to create a process for testing using the four-quadrant model.
To counteract the possibility of testers' exclusion, testers should work in as close physical proximity to the developers as possible. They should meet with them often to see what they are currently working on and to give them a chance to review the tests that have been developed. Taking an iterative approach here, as well as in the testing process itself, can help connect the teams early and help with later collaboration.
Testers can open doors for themselves by providing useful feedback based on interactions with both developers and customers. In short, they should make themselves indispensable to developers in order to be able to perform their job well.
The greatest thing that can be done to ensure the success of Agile testing for a product is to hire people who have the essential characteristics of an Agile tester, and to build a culture of self-organisation and independent thinking in the entire organisation.
That environment will naturally result in ‘stable infra’ without sacrificing speed, resulting in happier workers delivering a better, more valuable product - faster - to a satisfied customer.
We’d love to give you a personal demo of our platform. Find out how we manage, execute and analyse test results to help you release high quality software anywhere in the world.Ready? Let's talk