Any machine learning development company uses manual and automated testing at all stages of work. For what purposes do companies use automated testing? The main goals are:
- Reducing the cost of manual testing;
- Reducing the time required for debugging, releasing;
- Reducing the number of defects;
- Reducing risks;
- Improving the architecture.
Why is this area in demand today?
It is important for a business to deliver changes to users as soon as possible, to stay ahead of competitors. This is possible thanks to agile development methodologies, as well as practices such as continuous integration and continuous delivery. The latter imply the use of automated testing.
By running auto tests regularly, you have confidence that the application works as you expect. And if problems arise, you will find out about them as soon as possible.
Is everything as good in practice as in theory?
Business owners are sometimes ready to invest heavily in ineffective processes when they learn that a new direction is in demand today. The same thing happens with automation. What they get in the form of poorly thought-out solutions developed by low-skilled professionals often disappoints them. They think: it would be better to recruit a large team of manual testers, or organize a new benefit for employees instead of automation.
What exactly can be ineffectively organized?
Often an application is designed without considering the need to test it. In this case, it is difficult (or impossible) to isolate individual components at different levels and check the correctness of their work.
Unit and integration tests may be missing – something that developers are usually responsible for. Management and business owners may require new functionality to be added as soon as possible, so unit and integration tests are postponed until later, technical debt increases, more and more time is spent on debugging, adding or changing functionality.
Testing of business logic is often done through the user interface. At first glance, this is logical, because this is how users interact with the application. But the business logic is usually implemented at the levels below. And if it is possible to access it directly, you can get orders of magnitude faster tests, while more reliable. The user interface can be tested with a small number of individual tests.
What is important to consider in practice?
Perhaps you are developing a personal website, or the team is developing an application prototype. The functionality can change a lot during the day and there may be no testing at all, and this is normal.
And even if your application is used by a large number of people, real money is paid for it, while you agree to all the risks associated with the lack of a testing process, clearly convey this to users, and they agree with this – this can also be normal.
It’s not normal if you want the application or service to function correctly, there were no serious bugs and any risks associated with this, the releases took place often, and you decide to do without an effective testing process.
How do you know when to switch from manual testing to automated testing?
If you try to answer in a completely simplified way, then for short-term projects with a small number of releases, it will be more profitable to conduct manual testing several times. The longer the project is, the more frequent releases are expected, the more profitable the use of automated testing becomes.
There are so-called ROI (Return on Investment) calculators. Based on a number of parameters, they help determine at what point automated testing becomes more profitable than manual testing.
It is important to understand that the calculations will be very approximate, since it is extremely difficult to predict and consider everything with high accuracy. In addition, automation only replaces some of the manual checks. At the same time, automation itself is the same product where technical debt arises, which must be repaid, and this should also be considered.