A review of different approaches to testing
What to test? Program can be tested in different levels: Code (unit-tests and integrational testing), API and GUI. The choice of the type of test depends on situation.
The code testing may be complete on different levels:
Unit testing is a software testing method that allows you to check the correctness of units of source code, sets of one or more computer program modules together with associated control data, usage procedures and operating procedures.
This means that if the code uses some third-party classes, then stub classes are put instead of them. The code should not work with the network and external servers, files, database (otherwise we do not test only the function or class, and also a disk, a base, etc.).
The idea is to write tests for each non-trivial function or method. This allows you to quickly check whether the next change in the code led to regression (to the appearance of errors in the already tested locations of the program), and also facilitates the detection and elimination of such errors.
API (Application Programming Interface) — a set of ready-made classes, procedures, functions, structures and constants provided by the application (library, service) for using in external software products. If the application has an API, then you can test it by sending pre-prepared queries and comparing the incoming response with the expected one.
The most popular form of automation is testing applications through the graphical user interface (GUI). The popularity of this type of testing is explained by two factors: first, the application is tested in the same way that it will be used by the person; secondly, you can test the application without having access to the source code. GUI tests are also called End-to-End (E2E) or acceptance tests. Usually, the GUI is tested with usage of scenarios that describe the sequence of actions and check the expected result.
Load testing is the process of putting demand on a software system or computing device and measuring its response. Load testing is performed to determine a system’s behavior under both normal and anticipated peak load conditions. It helps to identify the maximum operating capacity of an application as well as any bottlenecks and determine which element is causing degradation.