Testing Pyramid
The Concept
The Testing Pyramid is a concept in software testing that visualizes and categorizes the different types of tests that should be used in a software testing strategy. It is represented as a pyramid to emphasize the distribution and quantity of each type of test.
I really like how Martin Fowler summarizes Testing Pyramid in “Testing Strategies in a Microservice Architecture” (which do not only explains Testing Pyramid, but gives a solid advice for overall Test Automation strategy):
“By following the guidelines of the test pyramid, we can avoid decreasing the value of the tests through large boated test suites that are expensive to maintain and execute.”
The Dynamics
Such distribution is a healthy indicator of a mature project. However, sometimes project context (i.e. project start, huge refactors, etc.) may dictate other proportions - temporarily - until it reaches healthy and balanced state (again).
Testing Pyramid dynamics in project start is described nicely by The Home of Web Automation using “The Testing Pavlova” model:
The Fun
Testing Pyramid is a model and likewise other models it can be wrong, but useful. And similar to other models, Testing Pyramid can be used for guiding better conversations.
Michael Kutz designed a physical Testing Pyramid - you can print and build it to have a great conversation starter.