Confidence builds up with feedback.
Teams accelerating their software delivery equally need feedback along the software lifecycle to balance quality and speed.
The challenge is to effectively balance risks to detect defects as early as possible to rapidly adapt, without compromising the iteration speed.
That equilibrium requires an adaptative approach to software testing that can maximize quality at speed while minimizing risks depending on the context.
Agile testing is a methodology fitting well in the Quality Engineering paradigm to provide continuous feedback leading to more confidence in software delivery.
Follow the QE Unit for more Quality Engineering from the community.
What is Agile Testing
Agile Testing is a methodology providing a framework to prioritize tests typology and techniques according to your product context.
The method is mainly known through the Agile Testing Quadrant and Agile Testing books that were built upon Brian Marick‘s original agile testing matrix.
Agile testing quadrants push for a progressive, equilibrated, and practical implementation of testing techniques to balance quality, speed and risks.
Testing needs are analyzed with 4 axes that follow the software lifecycle:
- Development
- Business
- Product
- Technology
The combination of two perspectives contains the scope of relevant test technique, being manual or automated (e.g., Functional Test for Development & Business).
The quadrants are a guide more than rule. The numbering does not mean that a particular order is required or that tests must be done in each of them.
The goal is precisely to perform the minimal testing that can provide the maximum value in your context.
Here’s an updated version with more testing techniques such as contract testing, observability or infrastructure as code.
At the moment, you may wonder why Agile Testing fits in Quality Engineering.
Why use Agile Testing in Quality Engineering
Quality Engineering is the paradigm constraining the entire software lifecycle to continuously deliver Quality at Speed software.
Its implementation relies on the MAMOS framework that acts in a systemic way on the software delivery system on its five domains.
The domain of Methods is the first one that contains a referential of methodologies that are progressive, practical, and scalable to deliver quality and speed.
Agile Testing fits very well in Quality Engineering right from the start, supporting a continuous adaptation of the test techniques depending on product changes.
How does Agile Testing contribute to Quality
Delivering quality requires first an alignment on its attributes among stakeholders, and then demonstrate its actual implementation.
Testing is an act of verification enabling to give feedback about different quality attributes, stated in the form of functional to non-functional requirements.
Each type of requirement can be tested with a specific testing technique, that Agile Testing Quadrants let identify according to your context.
Agile Testing contributes to Quality being:
- Result-driven in selecting the relevant test techniques to perform
- Systematic as applicable to every software change like user stories with DoD
- Scalable with product evolutions, team size, and deployable in the organization.
How does Agile Testing contribute to Speed
Speed in Quality Engineering is about equilibrating the software lifecycle with a sustainable flow of changes that are fast to deliver, yet with minimal reworks.
Testing alongside the software activities enables to detect earlier defects, being at the stage of specifications, implementation, or even in operations with monitoring for instance.
But too much effort on testing reduces risks but increases the iteration speed—that’s where Agile Testing helps teams to balance their effort for Quality at Speed.
Agile Testing contributes to Speed with:
- Focus on prioritizing most important testing activities
- Rhythm being applied systematically to changes and the software lifecycle
- Asynchronicity in supporting remote and asynchronous testing delivery
- Visibility that explicit the testing techniques retained per product iteration.
How to start with Agile Testing in QE
The implementation of Agile Testing requires to implement a systematic process that can mature over first teams to then expand across the organization.
Keep in mind the main principles of being:
- Progressive with increasing techniques with time
- Iterative by applying it to software increments
- Collaborative to foster valuable interactions.
The Agile Testing Quadrants can be used to define a test strategy at the level of a product, quality engineering increments, or more locally to user stories.
The recommended approach is to start bottom-up on user-stories for a first team, applying the quadrants to define test plans per story to verify stated acceptance criteria.
Agile testing in Quality Engineering relies of these systematic steps:
- Collect acceptance criteria
- Prioritize criteria with stakeholders if not already done
- Rank quadrants that would provide more value
- Identify testing techniques going through each quadrant
- Assess your capability to perform retained test techniques
- Define the testing scope validated for the iteration
- Add testing scope to the team tasks board
- Record missing capabilities from your iteration.
These steps enable you to start and end with the big picture while still defining the testing scope with precision to assess your capability to deliver.
That assessment is essential to supporting the software delivery flow; if teams are not available, lacking skills, infrastructure, or tooling, it’s better to pass this time.
Acting each time with this reasoning would not grow the testing maturity of the organization, that would continue to miss essential testing capabilities.
That’s why recording the testing needs at the end is critical. It allows you to generate knowledge from what your company really need for testing its products.
The same technique is applied to QE Notes to make sure you are on the way to continuous improvement with facts to maximize your quality and speed.
Once you master the process with a first team, you can extend its use among teams to also define test strategy and plans for Quality Engineering Increments and products.
Agile Testing within MAMOS, the QE framework
Testing along the software lifecycle is an effective way to support the continuous delivery of Quality at Speed software.
Testing techniques evolved to support its implementation across the entire lifecycle with Shift-left, Shift-right, and Shift-up paradigms.
This evolution is part of the Quality Engineering movement, with disciplines heading to natively integrate the requirement for Quality at Speed software.
We must not forget that testing remains an act of verification. Our goal is to build quality in the first place, leveraging testing for faster iteration with more confidence.
Are you leading both?
References
Brian Marick (2003), Agile testing directions: tests and examples, Exampler.
Lisa Crispin, Janet Grégory (2008), Agile Testing: A Practical Guide for Testers and Agile Teams. Addison-Wesley Professional.
Lisa Crispin, Janet Grégory (2014), More Agile Testing: Learning Journeys for the Whole Team. Addison-Wesley Professional.
Lisa Crispin, Janet Grégory (2019) , Agile Testing Condensed: A Brief Introduction. Library and Archives Canada.
Lisa Crispin (2021), Using the Agile Testing Quadrants, Lisa Crispin Blog.Manifesto for Agile Software Development, The Agile Manifesto.