Home > Services > Quality Assurance > Levels of Testing
Before any solution is released, it undergoes an extensive testing process to check whether it meets customers' requirements and works the way it was primarily intended. Performing testing activities on different levels is targeted at prevention of repetition and overlap between the development phases, as well as identification of missing areas in the solution so as to fix them as quickly as possible thus reducing the cost of the project.
Unit Testing
During the first testing round, the solution is submitted to assessments, which test particular modules so as to prove that everything is functioning properly. In this case, 'unit' refers to a module, function, a particular program or even a procedure, which is validated. Being a white-box type of testing, it is basically conducted by developers who code test cases for each scenario of the module, and verify that the output result is correct. This testing type is targeted at early defects diagnosis and is beneficial as it could be performed each time a piece of code is changed, allowing issues to be identified and resolved before they could badly affect the whole system.
Integration Testing
Since unit testing does not cover the aspects of how the system would behave or what defects could be reported when modules are integrated. This is performed on the integration testing level, aimed at validating the interaction between software components. Although all the units could work as needed, the system will not be stable if the modules are not properly integrated. That is why this type of testing is beneficial as it defines how the units are functioning together while being combined.
There are 2 main categories under the integration testing: top-down and bottom-up testing.
Bottom-up testing method is an approach where low-level integrated components are tested first, then testing is conducted to the module structures of higher levels.
In the top-down testing, top-level integrations are tested first, and testing continues down to the lowest levels.
As bottom-up testing is more useful in bugs identification, top-down approach is implemented to define the missing branch links.
System Testing
System testing is applied to a completely integrated system to verify that it meets identified quality standards of system's behavior. System testing is focused on the behavior of a system as a whole and is usually considered appropriate for comparing the system not only to the technical and functional specifications, but also to the customer’s business objectives. External interfaces to other applications, utilities, hardware devices, or the operating environment are also evaluated at this level.
Acceptance Testing
Being considered as a final testing level, acceptance testing (or User Acceptance testing) is used to make sure that the developed solution is ready for release. During the development process, the changing requirements could be misinterpreted in a way, which does not properly cover the users’ stability, functionality and performance expectations. This testing type is used as a program and method of acceptance checkout, so not only spelling errors and minor defects are identified and fixed, but also any issues, which can result into improper solution’s work, are pointed out and solved.