Why automation when you can hire 100 monkeys to test one feature manually?
I found myself talking to some software testers who do not believe in automation. It’s surprising that some of them are not ready or willing to take testing to the next level or understand why it is important to have automation in every development process.
If you are a well-informed software tester you have probably heard about the testing pyramid:
This represents the ideal set up, the proportions and the type of testing that should not be missing in engineering teams.
At the base of the pyramid, there are the UNIT tests. This is the solid foundation for a healthy development environment. Unit tests are generally implemented by developers to test the smallest part of their code called units.
This type of test focuses on testing individual functions or classes, for instance, by supplying input to make sure the output is as expected.
Following that, Integration Tests test processes or components together. It can be identified as, the “in-between” state that merges unit tests and works like a validation test.
At the top, UI tests, also called functional tests, are built to cover scenarios of the product itself. For instance, controlling the browser and the website, regardless of its internal structure, in order to match an expected behavior and edge cases, created by QA engineers.
But, where is Manual testing? Somewhere at the top of the pyramid, at its minimal exercise.
Talking percentages, it’s common to hear that unit tests should be evenly spread and should cover at least 70% of your project. Another 50% should be covered by integration and UI tests. Being generous 15% of the time and resources should not exclude manual testing.
If you are only a manual software tester, you are probably using 90% of your time, manually checking the project, using just 10% of your capacity.
This could look like an “inverted” testing pyramid, also called Ice-Cream Cone:
This is, unfortunately, a common anti-pattern when the quality culture is not strong in the team.
Writing automated tests will optimize your efficiency, speed, and is almost 100% reliable. This means an increase in test coverage, improvement in accuracy and a rise in confidence in each deployment.
In general, each type of testing method has their pros and cons, finding a good balance among them will lead to a stable environment and high-quality standards.