TESTING LEVELS
The testing levels are: unit testing, integration, system, acceptance.
Unit testing or module testing is the testing of a program at the level of individual modules, functions and classes. The purpose of module testing is to identify errors in the modules during the implementation of the algorithm, as well as to determine the next level of system development and testing.
Unit tests fix bugs early in software development and save costs. It helps developers understand the software code base and enables quick changes. Good unit tests serve as design documents. Unit tests help code reuse.
Module testing usually involves creating an environment around each module that contains valves and drivers for the modules under test. Valves and drivers are programs used to test test sets. Drivers ensure the operation and performance of the module under test. Valves override the modules that are called by the module under test.
Testing a system consisting of two or more modules is called integration testing. The main task of integration testing is to search for defects related to implementation or interpretation errors of interface interaction between modules. From a technological point of view, integration testing is modular quantitative development. The goal is to test connections between modules.
There are two types of integration testing: big-bang and incremental. In turn, incremental: top-down, bottom-up, hybrid types.
Big-bang, it is necessary to wait for all the modules to be ready, it is time-consuming, it is difficult to find the initial drive.
The modules of the top-down system are assembled in order, the system first combines the modules that will call other modules. Testing of system modules starting from the top level, the need to develop valves.
Advantage: The advantage of downward testing is that errors are detected first in the system’s managed module. Disadvantage: complexity of processing valves.
Bottom-up testing is the opposite of bottom-up testing. During testing, modules are assembled from the bottom up. Necessity of development of drivers. Advantage: valves may be missing. Disadvantage: the system does not exist as an object until the last module is added.
The hybrid sandwich method is a combination of top-down and top-down approaches. Here an attempt is made to use the advantages of both methods while avoiding the disadvantages. When using this method, downward and upward testing is simultaneously performed, collecting the program from both the bottom and the top. The need to use valves is removed.
During integration testing, the following errors are detected: loss of data, lack of a necessary link in a module, adverse influence of one module on another module.
System testing considers the system under test as a whole, it is based on the user interface, in contrast to integration and module testing, which were based on modules. During system testing, it is difficult and effective to analyze the operation of the software code, as well as to analyze the truth of the operation of functions and modules. The main task of system testing is the detection of errors that depend on the complete operation of the system.
System testing should perform both functional and non-functional requirements testing. During system testing, the structure of the program is not important, only the input and output values that are visible to the user are used for verification.
System testing tests the system by looking at possible situations of its use, in contrast to integration testing, where the emphasis is placed on the exchange of data between modules during testing.
As a result of system testing, the following errors are detected: incorrect use of system resources, combinations of data input not intended at the user level, incompatibility with the environment, possible scenarios of use not intended, inconvenience of use, etc.
Acceptance testing, usually performed by the client, is not aimed at detecting defects, it checks how well the system meets the set requirements. Acceptance testing is carried out in two ways: alpha testing, beta testing.
Alpha testing is carried out by the designers, by the design team.
Beta testing is carried out at the client, the testing is carried out by the client’s group before the product release.