There are 4 levels of software testing. The complete testing process can be abstracted into different levels of software testing to enhance the quality of testing. They are unit testing, integration testing, system testing and acceptance testing.
In each phase of the Software Development Life Cycle (SDLC), various types of tests are carried out to ensure the quality of the software is maintained.
What are software testing levels?
A level of testing is defined by its given environment. The environment includes a collection of hardware, software, data, interface and so on.
A certain degree of parallelism is introduced in the testing process by the classification into levels because a number of tests can be run simultaneously.
However, it is important to remember that the test manager decides the number of levels that are required for a particular project. So, to make a right decision, they should have a thorough understanding of the system requirement specification.
Let us discuss the four levels of testing. We will discuss each of these levels in detail in the forthcoming articles.
Unit testing is done by developers. During this level of testing, developers will make sure every unit of code is fully functional and meets the requirements mentioned in the requirement specification document.
The development team will isolate a section of code (each unit) to see if it works correctly independent of other units. A unit may be a class, a procedure, an interface or a function.
Component testing is carried out by developers. It is sometimes known as module testing. In component testing, the whole component is tested.
For example we have an application for banking that has 4 component modules. In component testing, each of these modules are separately tested independently as a part of development to ensure they are working correctly and ready for the next stage, that is integration testing.
In integration testing, the different modules are integrated and tested to check the interaction between units.
The aim of integration testing is to ensure that modules when integrated, are working correctly and their behavior and functionality is as expected. The different types of integration approaches are
- Big Bang Model
- Top Down Approach
- Bottom Up Approach and
- Incremental Approach
We will discuss these approaches in detail in the forthcoming articles.
Component Integration Testing
Component integration testing is a type of testing that is carried out during integration testing.
Here, different modules are integrated and components are tested to ensure everything is working fine and the application is stable after integration.
System Integration Testing
In system integration testing, the interaction between various systems and the behavior of each data field in a layer is tested to ensure data integrity is maintained.
System Integration Testing (SIT) is normally conducted on a subset of the system.
System testing is a type of testing where the testers test the integrated system as a whole to make sure it is compatible with the high level design specifications and business requirements.
System testing is carried out on a system test machine in an environment that is specifically configured to simulate the actual user environment as much as possible.
Here, after system testing, the application is tested to make sure all the requirements given in the user requirement specification are covered and the system is working as per the expectation.
Alpha testing is a type of testing that is done when development is in its final stage by a few members from the developers and QA teams to make sure everything is working correctly. Alpha testing is carried out at the developer’s site.
Beta testing is carried out after alpha testing just before the actual release of the application to production. A sample of the audience who are to use the application tests it to confirm how it performs in a real world test.
It also gives the company a preview of the next release. A sample audience normally installs the application, runs it and reports the finding to the project team.
We have seen the different levels of testing. These levels of testing aim at testing the different aspects of the system to discover the defects that are carried forward from the previous stage in addition to the defects introduced in the current stage.