Software Testing levels represent the various phases of the software development lifecycle which includes some form of testing.
Usually, Software Testing gets divided into four levels of testing:
1. Unit testing
2. Integration testing
3. System testing
4. Acceptance testing
Levels of Testing in Software Development Lifecycle
Now, dive in to understand more on the levels of testing.
1. Unit Testing:
Unit Testing is the first level of validation done by developers. It ensures that the smallest unit of code is working correctly. A Unit could be a function, a file or a program. Hence, we can also call it as the module or component level testing.
2. Integration Testing:
Integration Testing facilitates testing the connection or data exchange happening between a different set of modules. You may also call it I&T Testing or String Testing approach.
It cuts down into multiple approaches such as Top-Down, Bottom-Up and Sandwich Approach (Mixture of Top-Down and Bottom-Up). This process gets aided by using model programs known as Stubs and Drivers. These two modules don’t simulate the whole programming logic of the system but validate the data transfer using the calling module.
Big Bang Integration:
In Big Bang Testing, the integration can’t get validated until all the modules are available. Once they are ready, it will check if they are performing well. This testing type has some drawbacks such as the bugs can appear at the later stage. Also, it is hard to locate where the defect got originated from, was it in the interface or inside the module code.
In Top-Down Testing, the integration of all high-level modules happen first and enters into testing at an early stage. In this testing type, Stubs acts as the dummy modules if its original counterpart is not yet ready for the integration purpose.
Bottom-Up Integration Testing:
In Bottom-Up Integration, the integration of all low-level modules happen first and enters into the testing stage. Here, just like Stubs, drivers act as a dummy module for the integration purpose.
It is a test program which gets called by the Module under Test.
It is also a test program which starts up the Module under Test.
System Testing (or End-To-End Testing):
It stays at the bottom of the testing pyramid and falls under the category of Black box testing
Since here the full validation of the integrated application occurs, hence we may also call it as End-to-End flow testing.
It confirms that the product is running as expected on all the supported platforms. The tests with different input data get executed to check the application is returning the expected outputs. It also assesses the user-experience during the testing.
It intends to help in winning customer approvals so that they can receive the product and release the payments.
Acceptance Testing has following subtypes such as Alpha, Beta & Gamma Testing.
Alpha testing resembles with the usability testing which gets executed by the developers who created the product. In some case, the customers require it to perform in their environments by the external evaluator in the presence of core developers/QA.
A limited number of end users carry out the beta testing before delivery. If they raise the need for some changes, the defect gets created and assigned to developers for resolution.
Gamma testing verifies the software for the readiness of the release. It occurs at the towards the end of the software development lifecycle.
Must Read – 100 Manual Testing Interview Questions for Testers of All Experience Levels.