Brian Marick originally introduced the Agile testing quadrants as terms for different categories of tests used for different purposes. The four testing quadrants contain both technology- (development-) and business- (user-) facing tests, conducted by either automated or manual methods or a combination of both.
Quadrant 1: Technology-facing tests that support the team.
Quadrant 2: Business-facing tests that support the team.
Quadrant 3: Business-facing tests that critique the product.
Quadrant 4: Technology-facing tests that critique the product.
As you can see in the diagram, each of the four quadrants contributes to a different goal of the testing process, the order of quadrants has no bearing on when we should use the different types of testing. We do not work through the quadrants from one of four like a waterfall model. The order depends on the requirements of each business, the customer’s goals, the complexity of the project, risks, and the available resources and tools.
Tests that Support the Team (Q1&Q2)
The left two quadrants (Q1 and Q2) include tests that support the team’s effort as they build the product. This type of testing is used to help programmers and testers within development teams to collaborate and share the ownership of testing.
Testing done in Q1 and Q2 allows the team to receive daily feedback by using automated test frameworks that drive the testing effort on different test layers (unit, component, etc.). Such a system can verify the quality of every change in the code to prevent an unexpected impact on the system.
In addition to the strong technical effect these two quadrants have on the quality of the product, they also help the team meet one of the core principles of Agile, delivering real business value to the customer, as they focus on testing the functionality and business logic that ensure the product is developed to the exact customer demands.
Tests that Critique the Product (Q3&Q4)
The word “critique” has a negative connotation. However, in our case, it is used in a positive way to help the team run tests that allow them to share suggestions for how to improve the product and ensure that the customer receives the exact product requested at the beginning of the project.
If you ever been involved in an Agile project, you already know that the customer will change the original requirements many times throughout the development cycles. The main reason for these changes is the simple fact that most customers are not able to express the exact requirements until they actually see a working product.
By running tests in these quadrants the team can find the gaps between the customer expectations and what is being built. By uncovering such gaps, the team can suggest new ways of improving the product and use the inputs into the left side of the matrix (Q1/Q2) to direct the tests that guarantee that it will be delivered with the appropriate quality level.
Benefits of Using this Model
The use of these four quadrants helps Agile teams deliver high-quality products, in addition to other benefits. For example:
The creation of a common language regarding testing activities.
The ability to (positively) critique the product.
Increased communication between team members, the customer, and other stakeholders.
The flexibility to handle changing requirements that are part of an Agile development process.
Testing quadrants help the team ensure all necessary testing is done at the right time.