Automation Ecosystem: Leap towards Continuous Delivery
Most of us today agree, investing in automation testing is a very critical part of the roadmap in any project. Everyone does plan for it right from the very beginning. Even, we at BrioZing share the same ideology and lay our foot down from day one to build an Automation Ecosystem for our client’s products. We strongly believe in the principles of “Test Pyramid” which has been around for a while as shown in the figure below.
‘Unit Tests, Integration Tests, Component Tests, Contract Tests, End2End Tests, and UI Tests’ must be part of any service. If we start from the bottom of the pyramid and go towards the peak, the size of each layer ideally depicts the % distribution of tests. This way it helps us to plan what kind of tests are needed.
A couple of more attributes associated with the pyramid are ‘Execution Time’ and ‘Confidence Index’. The ‘Execution Time’ and ‘Confidence Index’ here are directly proportional to each other. Higher the test category in the pyramid, therefore the more time it would take to execute, but it will give us more confidence.
Now, we know what kind & amount of tests that we need to invest in. Also the level of confidence that we can expect out of it. Without going into the details of what these tests are, let’s see what other benefits we can actually have by investing in tests based on above pyramids
This being one of the most measured metrics for any automation ecosystem. Executing different categories of tests actually help us in achieving this. The later you discover the issue in the lifecycle, it will be costlier to fix.
Testing in Isolation
As these tests are more focussed on individual functionalities rather then end2end behavior any failures here would easily point to the misbehaving component.
The lower category test needs less effort in maintenance, as these are generally agnostic of any external dependencies.
Safeguarding against miscommunications
The criticality of providing a fix for a particular component, accidentally end up breaking the functionality of some other component. Some of the tests which we discussed above would help safeguard us in such situations.
Integration with CI systems
Adoption and the need for continuous integration for systems are on an all-time high. Everyone wants to validate every commit, instead of waiting for a nightly build to run their automated sanity tests. Running lower level tests to sanitize independent commits are the most valuable in the CI ecosystem.
Fallback and Fail faster
Having all these test categorizations helps us at the time of retrospective of an issue. A particular failure that was caught while executing a specific category of tests, we then have a way to check why was this was not caught in a lower-level test. Add them in the lower level test to fail even faster the next time something similar comes up.
Leap towards Continuous Delivery
Finally, all these investments, in the long run, help us move towards the road to continuous delivery. It would help us achieve some of the major business objectives like ‘Faster time to Market’, ‘Two days to production’ etc.