Software testing is the procedure of checking whether a digital product or its separate components have been completed in compliance with technical requirements. This process is surrounded by many myths. Some think that testing is not necessary if you have a good team working on the projects. Others consider it a scam created by software engineers to charge extra money. Let’s debunk some common misconceptions in this post.
Why testing is necessary
When we test something, we ask ourselves a simple question whether this works as we expect. In other words, we check if the actual behavior of the test object meets our expectations. If the answer is yes, then great, if not, something needs to be corrected.
Testing is necessary because we all make mistakes. Some of them may be minor, while others may have the most devastating consequences. . Everything that is produced by a person can contain errors. So, every product needs to be tested before it can be used effectively and safely by the end-users.
Machine learning Vs. software testing
What about the testing of machine learning systems? Is it somehow different?
Testing ML-based QA software requires additional and rather unconventional tests. In the case of classical testing, we usually know what the expected results are. However, the outputs of an ML model are not known apriori. Nonetheless, the model should correspond to the requirements and documentation. So during testing, we make sure that these demands are respected and that every aspect of the software system is covered by tests.
Therefore, in machine learning, testing is necessary if we want the ML model to give precise predictions.
What are the goals of testing?
Testing goals may differ depending on the software development stage in which it is conducted. For example, at the coding stage, the goal of testing will be to cause as many failures in the program as possible, which will allow you to localize and fix defects. At the same time, acceptance testing needs to show that the system is working correctly, and is usually conducted at the end of the project. During the maintenance period, testing is mainly necessary in order to make sure that there are no new bugs that appeared during the introduction of changes.
In any case, the main task of testing is to find defects. Among other things, software testing allows you to:
– obtain information about the quality of the product;
– check the compliance with the requirements stated for the product and the actually implemented functionality;
– evaluate the system in order to find the differences between what the system should be and its actual state.
The earlier we find a defect, the cheaper it will cost us to fix it. It is clear that fixing a line in a specification or code is easier and cheaper than making changes to the finished product. Not to mention the situation when the customer or the end-user finds a defect. Here the reputation of the developer company may suffer, and such losses are difficult to calculate. Over time, the cost of fixes increases, while the influence of project participants on the development process gradually decreases.
As a last resort, if a major defect is discovered late in the development phase, it may remain uncorrected because the cost of making changes may be too high. The project team could develop exactly what was described in the requirements, but if the requirements were misinterpreted, the customer will not be happy with the result. That is why no product can go without testing.