Some clients ask why their application needs to be covered with automated tests. The basic truth is that if you want to ensure quality on your application it should be properly tested and both manual and automated tests are essential when you want to achieve that goal. However, some customers are not convinced to pay for automated tests. They sometimes think that if their application is relatively small, they will be able to test it manually and, therefore, automated testing is a waste of money.
For a while, they may be right. It is relatively easy to correct bugs in an application when the code base is small. Especially when there is only one or two developers working on the project. At a later stage, when the complexity of the application grows, controlling errors becomes ever more difficult. Not only because a greater code base translates into a greater number of bugs. In order to fix en error, someone has to spot it first. When the application expands, it is harder to identify the bugs that arise not only in the part of the system the developer is actually working on but also in the parts of the system they are not working on. The time needed for manual testing grows exponentially. The system reaches the size where it is simply impossible to ensure reliability merely with manual tests. It is only then that some realise they have incurred substantial technical debt that will have to be repaid. And the interest rate on the debt is painfully high.
How manual testing works?
Let’s assume there are no automatic tests implemented on the system you are working on as a tester. Imagine you have to check – manually – if you can create an account for a new user on an app under development. Like in Facebook, you specify the first name, last name, email, email confirmation, password, date of birth and sex. In order to test this form you have to enter correct data in all the text fields and select the proper option from every select box in the form. Finally, you click “Register” and the registration is completed. But your tests are not.
You have tested just one scenario of the sign-in form usage. Now it is time to check others like, for example: “what if an email given is already in the system”, “what if the user forgot to enter their first name”, “what if the user entered an invalid email” and so on and so forth. By the time you are finished, you will have noticed that it does take quite a lot of time. And this was only the registration form – what about the other parts of the system that should be tested before each deployment. Now, the bigger the system and the greater the pressure to deliver functionality on the app, the less likely you are to be involved with the time consuming process of manual testing.