Best Practices for Agile Testing 

Agile testing is any test which occurs to support an agile methodology. Below we break down some of the best practices for agile testing in software. If you want to start testing in agile with Global App Testing, you can get in touch here.

A business team of three.

Introduction to Agile Methodology in Testing

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.

What is Agile Software Development?

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:

  • Focus on people, rather than processes and tools
  • A working piece of software is more important than detailed documentation
  • Ongoing collaboration with customers matters more than a fixed contract
  • Be responsive to change, rather than sticking to a plan

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.

Speak to a QA Expert

Agile Testing Methodology

Our definition of agile testing is testing which occurs in and is appropriate to an agile software development environment. Many of the kinds of testing which are appropriate for other software development methodologies are suitable for agile testing – regression testing, feature testing, and so forth. But their methodology – how they fit with the software release cycle; the way that the tests are planned and success is understood – is often different. Global App Testing provides tester supply which is elastic and which entails a rapid turnaround, meaning you can expand your team instantly in the case of tests which can’t be automated. 

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.

Traditional Testing Method vs. Agile Software Testing

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 agile testing method

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.

Principles of Agile Testing

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


  1. Test earlier and more frequently. Start testing early as possible (sometimes known as #shiftleft) allows you to fix issues earlier in the software development cycle.
  2. Automate a greater proportion of tests. The underlying principle here is that your supply of tests should be fast, and elastic.  But be careful! Research from TestRail suggests that businesses frequently overestimate the % of tests they will automate
  3. Provide continuous feedback. Agile testers do not simply test constantly. They are also responsible for distributing the results of those tests and facilitating the provision of feedback from customers to developers in order to create a more robust product.
  4. Deliver value to the customer. While this is the second principle, it is the paramount principle. The end goal of every action taken by an Agile tester is to create the best product possible for the customer.
  5. Enable face-to-face communication. The Agile tester's role is to reduce confusion and errors by communicating directly with developers, as well as enabling customers to communicate directly with developers.
  6. Keep it simple. Agile testers act on the aphorism that simplicity is the ultimate sophistication. For testing, that means performing only those tests that are necessary, and all tests that are necessary. For the product, that means delivering the simplest possible product that delivers the most possible value.
  7. Practice continuous improvement. Agile testers are keen learners; they are never done learning how to do their job better.
  8. Respond to change. Agile testers are adaptable and flexible, keeping up feedback from user stories, as well as changes in the product and the marketplace.
  9. Self-organize. Instead of waiting at an assigned seat on the assembly line, Agile testers spring into action at every point in the process. They actively seek out problems and bring people together to solve them.
  10. Focus on end users. Agile testers are collaborative, preferring human interaction to technology. Their focus on people enables them to deliver a product that prioritises usability and utility.

Profile of an Agile tester

From those principles, a profile of the ideal Agile tester can be derived. In general, Agile testers possess the following characteristics:

  • Acute communication skills
  • A diverse, technical-based skillset
  • Familiarity with a variety of testing tools and test automation
  • An ability to effortlessly collaborate with others
  • A willingness to embrace change
  • An ability to liaise with everyone from DevOps to business analysts
  • Broad experience in exploratory testing
  • A results-oriented personality
  • A passion for delivering value in business

Speak to a QA Expert

Types of Testing in Agile

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:

  1. 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.

  2. 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:

    1. Describe the behavior

    2. Write the step definition

    3. Run and fail

    4. Write code to make the step pass

    5. Run and pass

  3. 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
  4. Session-Based Testing - Like BDD does for ATDD, session-based testing builds on and refines exploratory testing. The strength of exploratory testing - the creativity of the people who do it - can also be its greatest weakness. Session-based testing attempts to remedy this by adding structure. First, before a test session is begun, a charter is created. Second, uninterrupted testing sessions take place, focusing mainly on a single charter. The entire session is then reported on, and the manager is debriefed after the test. The additional structure ensures that all areas of the product are thoroughly tested, and avoids backlogs building in any particular area.

Agile Testing Quadrants

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.

  • Q1 - The Automated quadrant contains tests that are designed to improve the code of the product being created; they are performed to help the team create a better product. 
  • Q2 - The Automated & Manual quadrant contains tests that are designed to improve the business outcomes of the product being created; they are performed to help the team create a product that drives value for the business and for customers. 
  • Q3 - The Manual quadrant contains tests with the purpose of providing feedback for tests in quadrants 1 and 2 by testing the product and user experience to ensure business outcomes. 
  • Q4 - The Tools quadrant contains tests that use technology to ensure the code fulfills all nonfunctional requirements such as security and compatibility.
Agile testing quandrants diagram.

Agile Testing Quadrants

Agile Testing Life Cycle

The Agile Testing Life Cycle is an iterative process that aligns with the overall Agile software development life cycle. It includes various phases that focus on continuous testing, collaboration, and improvement. Here's a breakdown of the Agile Testing Life Cycle:

  1. Requirements and User Story Analysis: In this phase, the team (developers, testers, and stakeholders) analyzes user stories or requirements. Testers ensure that the requirements are clear, concise, and testable and may help in breaking down user stories into smaller, manageable tasks.
  2. Test Planning: Testers create a test plan that outlines the testing approach, test objectives, and testing scope. The plan is flexible, allowing the team to adapt to changes in requirements or priorities as the project progresses. Testers also identify areas where automation can be implemented.
  3. Test Design: Testers design test cases, test scripts, and test data based on the requirements and user stories. They work closely with developers to ensure effective communication and understanding of the application's functionality and expected behavior.
  4. Test Development: In this phase, testers develop and execute test cases, both manual and automated. Test-driven development (TDD) and behavior-driven development (BDD) methodologies can be applied, where tests are written before the actual code is developed.
  5. Continuous Integration and Testing: As developers integrate their code into a shared repository, automated tests are executed to validate the new code and ensure no regression occurs. Continuous Integration (CI) streamlines the process of integrating new code, detecting issues early, and providing constant feedback to the team.
  6. Test Execution and Reporting: Testers execute test cases throughout the development cycle, usually during each iteration or sprint. They track and report test results, log defects, and collaborate with developers to resolve issues.
  7. Review and Retrospective: After each iteration, the team conducts a review to assess the product increment and a retrospective to evaluate the process. This helps identify areas for improvement and plan for adjustments in the next iteration.
  8. Release and Deployment: Once the product increment meets the defined acceptance criteria, it is released to production. Continuous Deployment (CD) practices can be followed to automate the deployment process, ensuring a streamlined and consistent release.

The Agile Testing Life Cycle iterates through these phases in alignment with the development sprints, promoting continuous improvement, rapid feedback, and ongoing collaboration. This approach allows the team to adapt to changes and deliver high-quality software throughout the development process.


Advantages of Agile Testing

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.

  1. A higher-quality product 📲 - Agile enables testers to detect more defects earlier in the development process.

    One of the Agile principles is ‘continuous feedback.’ The doctrine of starting testing concurrently with development means that bugs can be eliminated soon after they are created. Each iteration of the product is thoroughly tested and debugged as it’s created, rather than waiting until it’s finished. Testing also involves every member of the development team, so the skills of both developers and testers are leveraged in the pursuit of a perfect product.

    Another outcome of continuous feedback combined with early and frequent testing is testers developing an intricate knowledge of the product. Depending on the methodology of testing used, they can combine that knowledge with customer input to help developers create a superior product.

  2. Fast delivery 🚀 - With waterfall testing, the initial stages of development and eventual release onto the market are separated by months, if not years. As a result, features or the entire product can be completely irrelevant by the time it reaches customers.

    Agile testing methodology both compresses the development cycle and constantly provides customer feedback, ensuring the product adapts to the market during development and reaches customers as soon as possible.

  3. A happier team 😄 - The last principle on the Agile testing list is no mistake: enjoyment. Agile testing necessitates close interaction between all members of a team, creating a happier, more enjoyable, and more productive workplace. Developers, testers and customers work side by side to create the best product and the most value possible.

    Crispin and Gregory say it best:

    "A team that guides itself with Agile values and principles will have higher team morale and better velocity than a poorly functioning team of talented individuals."

Possible disadvantages of Agile methodology

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.

Disadvantages of testing in agile

While Agile methodologies offer numerous benefits for software development, they also have some disadvantages when it comes to testing. Here are a few potential drawbacks of testing in Agile:

  1. Time constraints: Agile emphasizes rapid development cycles with short iterations or sprints. This time constraint can put pressure on testing efforts, leading to reduced testing time or inadequate coverage. As a result, some defects might be overlooked or remain undetected until later stages.
  2. Incomplete documentation: Agile values working software over comprehensive documentation. While this approach enhances flexibility, it can lead to inadequate documentation of test cases, test plans, and other testing artifacts. This may cause difficulties for future reference or when new team members join the project.
  3. Frequent changes: Agile projects often involve continuous change and iteration, including modifications to requirements, design, and functionality. These changes can impact testing efforts, requiring testers to adapt quickly and modify test cases accordingly. It may introduce additional complexities and potential rework for the testing team.
  4. Limited regression testing: Agile methodologies emphasize delivering new features in each iteration, which may lead to limited time and resources for regression testing. As a result, previous functionality may not receive thorough regression testing, increasing the risk of introducing regressions or breaking existing features
  5. Lack of end-to-end testing: Agile teams usually focus on testing individual user stories or small increments of functionality within each sprint. This approach may neglect end-to-end testing, where all components are tested together to ensure seamless integration and system-level functionality.
  6. Dependencies on development progress: In Agile, testing is closely intertwined with development. If development activities face delays or are incomplete, it can impact testing efforts and hinder timely completion. Testers may need to wait for development to finish before they can commence testing, affecting overall project timelines.

It's important to note that these disadvantages are not inherent to Agile methodologies themselves but rather potential challenges that can arise if testing is not effectively managed within an Agile context. With proper planning, collaboration, and adaptation, many of these drawbacks can be mitigated.

Agile Testing Strategy

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:

  1. When the project scope is crystal clear and very unlikely to change
  2. When the project is governed by a single product owner or stakeholder with minimal requirements
  3. When the people on your team lack the deep, broad skills necessary to perform Agile testing
  4. When the customer insists on using a traditional waterfall approach to testing

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.

Make Agile Testing successful

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.

Metrics in Agile Testing 

Testing in an agile environment, it's important to focus on metrics that provide meaningful insights into the quality, progress, and effectiveness of testing activities. Here are some of the most appropriate metrics to consider:

Test Coverage: This metric measures the extent to which the test cases cover the requirements and functionality of the system. It helps identify gaps in test coverage and ensures that critical areas are adequately tested.

Defect Density: Defect density measures the number of defects identified per unit of code or functionality. It helps assess the effectiveness of testing by indicating how many defects are found in relation to the amount of tested code.

Test Execution Progress: This metric tracks the progress of test execution within a sprint or iteration. It provides visibility into the percentage of test cases executed and helps identify any bottlenecks or delays in testing activities.

Test Execution Efficiency: This metric measures the ratio of passed tests to the total number of tests executed. It indicates the efficiency of the testing process by highlighting how many tests are passing successfully and how many are failing.

Cycle Time: Cycle time measures the time it takes for a user story or a task to move through the entire testing process, from creation to completion. It helps identify bottlenecks and optimize the testing workflow.

Defect Turnaround Time: This metric measures the time taken to identify, report, fix, and retest a defect. It helps assess the effectiveness of defect management and the overall responsiveness of the team in addressing issues.

Customer Satisfaction: Although not directly related to testing, customer satisfaction is a crucial metric to gauge the quality of the product. Feedback from customers and stakeholders can provide valuable insights into the effectiveness of testing efforts.

Agile Test Velocity: Test velocity measures the rate at which testing tasks or user stories are completed within an iteration. It helps the team understand their capacity for testing and provides insights into the progress of testing activities.

Escaped Defects: Escaped defects are defects that are identified by customers or end-users after the software has been released. Tracking and analyzing escaped defects helps identify areas of improvement in testing and quality assurance processes.

Remember, metrics should be used judiciously and in conjunction with qualitative assessments. It's crucial to select metrics that align with the project goals, adapt them as needed, and use them as a tool for continuous improvement rather than as mere performance indicators.

Speak to a QA Expert

Need help with QA testing?

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