Agile Testing And Its Nitty-Gritty !!

Medha Mahajan
Globant
Published in
7 min readDec 2, 2021

Agile testing is a new age approach. All delivery teams across different PODS focus on testing smartly and continuously rather than testing only once at the end of the cycle like the age-old traditional SDLC, yet it delivers high-quality products. As we build on more and more complex software, the development process is also becoming complex over the period. So the software testing approach needs to evolve to keep up with the development approaches complexity.

With this need, the Agile testing approach demands a higher level of collaboration between Developers and Testers. During the software development cycle, the testers must provide accurate, corrective, and constructive feedback for ongoing integration between testing and development approaches.

This blog discusses the fundamentals of Agile development and testing, the benefits and significance of Agile software delivery in its entirety.

Agile Testing Methodology

Agile testing is software testing that adheres to Agile development’s quality standards, norms, and regulations.

Unlike the Waterfall method, where we follow the traditional life cycle, every next phase starts only after the previous phase of SDLC is finished, creating dependencies and increasing delays in the entire development and delivery of a working piece of code. But in Agile Testing, the testing team has been involved since the start of the project itself, where development and testing go hand in hand as Agile Testing methodology is a continuously evolving process rather than sequential like traditional models.

Agile testing includes an incremental approach to testing. In this type of software testing, features are tested as they are developed during the development cycle to achieve high product quality.

Agile Testing Principles

Let’s look at some of the principles that drive the agile testing process, as listed below. These principles have proved to be always efficient for Software development and uniquely identify advantages of Agile testing as compared to traditional models:

  • Continuous testing: Agile test team tests continuously to ensure continuous product progress, and ensure that the feedback is getting collated and integrated with the N+1 approach.

In the Agile model, as we work within Sprint’s defined timeline/window, the sprint scope is clear to the entire scrum team, so the testing team can focus on the identified sprint items in every sprint. This is how continuous testing takes place in every sprint to produce iterative code as a sprint deliverable. While doing this, individual teams can sometimes consider taking in between regression testing cycles to cover up the previously delivered code and to make sure they build stability. These in between stabilization checks help in avoiding a separate stabilization sprint window in the long run.

  • Continuous iterative feedback: As agile is a continuous process, agile testing provides feedback on an ongoing basis ensuring that the system under test meets the business needs.

As a part of every sprint review, it consistently helps to gather the feedback early in the lifecycle on developed code from all the stakeholders and the new suggestions/corrections can be incorporated in the current or upcoming iterations as per the business priorities.

  • Test runs are team independent: In a traditional SDLC, only the QA team is responsible for testing but in agile testing, it’s not limited to one team, parallel tests are also carried out by the Developers, Business analysts, Product Owners, Customers in the UAT/Alpha/Beta phases. So it adds up different perspectives to test the application and results in better quality.
  • Reduces time of feedback response: As the business team is involved in each iteration in agile testing & continuous feedback shortens the time of feedback response. The goal is to obtain both positive and negative feedback that can be immediately incorporated into the process. Doing so as quickly as possible accelerates and improves the overall development process.
  • Simplified & clean code: Most of the defects raised by the agile test team are fixed within the same iteration. It helps in keeping the code clean, simplified and traceable. Unit tests and components tests are carried out to measure the code quality.
  • Minimum documentation: Agile teams use a reusable checklist, the team focuses on the tests instead of the incidental details. Requirement detailing happens in the backlog grooming phase which later on helps to plan out the deliveries. The Agile development methodology expects teams to document all they need and to maintain documentation as easily and as feasible when necessary. Different matrices like sprint capacity, burn-down charts, velocity are generally targeted to measure the sprint goals. Also, different project management and test management tools help here in terms of getting the traceability of Epics, related stories, and its artifacts so no separate documentation is needed to be maintained.
  • Test-Driven: Agile testing is carried out concurrently with implementation, this proactive approach helps in the early detection of faults and thereby minimizes development costs. Test cases are written prior to any feature getting developed and every time the software is validated against these test cases to identify the defects early.

Keeping these above principles in mind, let’s see how these really are applied in the Agile development methodology and how it drives the Agile testing strategy, test planning, and deliverable.

Agile testing gives a helping hand to testers to start thinking from the end user’s perspective. To start with this, testers must understand the real business scenarios or journeys, and different workflows of application data flow to mimic the same in a QA environment. This approach helps the testers to identify real-time production issues as early as possible. In agile testing, more onus lies on the test team to have more cross-team communication to understand the domain, highlight inter-dependencies, risks, and test data needs so that they understand and test all the different layers of system architecture under test effectively and efficiently.

Agile Test Plan

In agile testing, the test plan is written as well as updated for every release and on high Resource Planning.It contains :-

  • Scope
  • Features under test
  • Test strategy
  • Test setups
  • Resource Planning
  • Risks and Mitigation
  • Deliverables

Agile Testing Life Cycle

The agile testing life cycle includes the following 5 phases:

  • Impact assessment-To identify the scope
  • Test Planning-To identify Testing processes and deliverables
  • Release Readiness-To review the feature readiness for release
  • Daily Scrums-To track the work items
  • Reviews-To take feedback from Stakeholders on developed features Risks and Mitigation

Agile Testing Strategy

With this above diagram, let’s analyze the step wise activities carried out to define the Agile test strategy during the entire course of the project.

Define Story

  • Identify possible architecture
  • Identify Project Scope, Cost, Risks
  • Perform initial setup tasks like identifying people for testing, installing testing tools, scheduling resources (usability testing lab), etc
  • Outline the key requirements and use cases that will drive the design trade-offs

Implement and Stabilize

  • prioritized requirements
  • Design and Coding
  • Test planning and execution using Behavior Driven Development (BDD),Exploratory Testing or Test Driven Development(TDD) techniques
  • Defect Fixes and retesting
  • Automation Testing
  • Continuous feedback and Stabilization with E2E tests

Production Release and Maintenance

  • Deploy system successfully into production
  • Training of end users, support people, and operational people
  • Support Production

Agile Testing Quadrants

As in the case of Traditional Testing, Agile Testing also needs to cover all the Test Levels. These tests can be fully Manual, fully Automated, a combination of Manual and Automated, or Manual supported by Tools. To decide on what tests to be performed when, we need to determine whether a test is −

  • Business Facing- Tests to explore the behavior of the system that can be explained in the real-time scenario.
  • Technology Facing-Tests from the technology domain. For example: Build Automation,Unit tests,Source Code Control or any non functional tests.The programmers understand what needs to be implemented based on the clarifications on technology.

These two aspects of test types can be analyzed using the Agile Testing Quadrants defined by Brian Marick. So let’s discuss the different tests that are carried out in the Agile quadrant section and how it helps in brainstorming.

Let’s see how the above Agile Testing Quadrants categorizes the tests.

Quadrant I

The internal code quality is the main focus in this quadrant, and it consists of test cases that are technology-driven and are implemented to support the team. It includes:-

  • Unit Tests
  • Component Tests

By running these tests, we can be sure of code’s maintainability, interoperability, and can uncover any issues related to this.

Quadrant II

It contains test cases that are business-driven and are implemented to support the team. This Quadrant focuses on the requirements. The kind of tests performed in this phase are

  • Testing of examples of possible scenarios and workflows
  • Testing of User experience such as prototypes
  • Pair testing
  • UI guides/wire-frames/visual designs

Quadrant III

This quadrant provides feedback to quadrants one and two. These test cases can be used as the basis to perform automation testing. In this quadrant, many rounds of the iteration reviews are carried out, which builds confidence in the product. The kind of testing done in this quadrant is

  • Usability Testing
  • Exploratory Testing
  • Pair testing with customers
  • Collaborative testing
  • User acceptance testing

Quadrant IV

This quadrant concentrates on the non-functional requirements such as performance, security, stability, etc. With the help of this quadrant, the application is made to deliver the non-functional qualities and expected value.It includes

  • Non-functional tests such as stress and performance testing
  • Security testing concerning to authentication and hacking
  • Infrastructure testing
  • Data migration testing
  • Scalability testing
  • Load testing

In most of the software development projects, we follow more or less from the above types of tests.These Quadrants help to understand the importance of different tests and their outputs. It also emphasizes the importance of proactive team communication at every stage.All the dependencies, risks, prerequisites are identified properly and no blind spots are left behind before handing over the solution to the customer. By following this, agile test teams can get the confidence on the test coverage achieved with this variety of test types and fulfill the expectations to meet the exit criteria.

Conclusion

Agile testing helps to improve the quality of deliverable by early detection of issues and fixing them. It saves time and money with less documentation.The continuous feedback process helps to meet customer expectations helping to build a robust system. So timely communication plays an important role in deciding the success of Agile testing as a whole.

--

--