We have all heard of the test pyramid, and the importance of a well-formed base of unit tests, a highly flexible set of integration tests and UI test automation that supports multi-browser validation and simple use case validation. I particularly like the presentation of the test pyramid that shows the fragility of the tests by level as built by the three pigs.
Then I might ask, why is there a proliferation of test automation at the top level?
BDD, TDD, ATDD implementations via scripting are being built with out the safety net of unit testing. So some test stacks are ending up inverted and in danger of falling over.
- So what becomes of these systems supported by an inverted test pyramid when there is a need to modernize and accelerate delivery?
- Will teams take time to build out unit tests?
- Will they put in service virtualization at the middle layer to help stabilize integration and acceptance testing?
- Will they have to scrap their scripted UI tests and start over?
If I have learned something in the past 20 years, it is that smaller is better. And it is no more true than in the testing world:
1. Small unit tests covering only one method.
2. Small integration tests that cover only one API call.
3. Small UI tests scripted to test one piece of one page.
In a world of accelerated delivery and fast changing technology, we need to manage risk at a more granular level. Small tests are critical to this granular control and essential to making our efforts sustainable. If we don’t enable this system of risk reduction with an eye toward maintainability, then where will we find ourselves?
We will continue to see replacement applications being created as new entries in the market place.Think about it. How many systems have you seen where the need to modernize has driven a complete system re-write; scrapping all the work that had been done in the past by smart individuals and teams.
- Have you gone through an on-line banking or mobile banking upgrade lately?
- Have you gone through a new HR system at work?
- What other new systems have you experienced that offer virtually no new features?
I would be happy to bet a six pack that the systems that were replaced had virtually no unit tests, and the integration and UI tests were large and brittle, breaking with almost every small change in the application.
If you feel like your product is at risk of falling behind or just need some assurance that you are set up for success, we can help. We have a 101 point technical evaluation and an agile process evaluation that will give you the roadmap you need to make sure your acceleration doesn’t have to be stalled by a complete re-write.
Special thanks to Patrick Wilson-Welsh and Lisa Crispin for their advanced insights on the Mike Cohn’s test pyramid.