Levels of testing refer to different stages where testing is conducted during the software development lifecycle. These stages are typical.
- Unit testing: Smallest testable part (a piece of code) testing each individual part is called unit testing. Which is done by the developer. In a simple way, I would say after writing the code, checking the code line by line is called unit testing. Unit testing comes under whitebox testing. Unit testing tools are Junit, Nunit, Jmockit, Emma, and PHPUnit.
- Integration testing: Integrating testing performed after unit testing. Individual units/modules are combined and tested as a group, so fault localization is difficult (where the defect occurs, we can’t find it). We can only integrate the logically related module. Predominantly integration testing is useful for checking data connectivity.
In Integration testing, we have two approaches,
Bigbang approach
Incremental approach
Sandwich approach
Bigbang approach: The Bigbang integration testing approach is where all the modules or components of an application are integrated simultaneously, after which everything is tested as a whole. It is called the big bang approach because you bring everything together at once and then begin testing.
This approach can be efficient in smaller systems, where the relationship between modules is relatively simple. However, in larger, more complex systems, it can be challenging because Tester needs to wait under development has done since they are going to combine all the modules, so industry, it is a failure module.
Incremental approach: If we are going to combine ten logically related modules and one module is not available, we use a dummy module here. The dummy module is called stub and driver.
Stub and driver are called data connectivity stimulators, and they do not implement the entire programming logic .
Top-down approach: It is a forward approach; when the low-level modules are not available, we use a stub. Example: Gmail composes mail functionality.
Bottom-up approach: Reverse approach, If high-level modules are not available, we use Driver. Example Login functionality.
We will replace the stub and driver once the original code has been developed.
Sandwich approach: If both high-level and low-level modules, both are not available, then we use stub and driver together.
3. System testing: System testing is one of the levels of testing where complete and integrated software is tested. The purpose of this test is to evaluate the system’s compliance with the specified requirements. System testing falls under black box testing . System testing is the third level of software testing performed after Integration and before Acceptance testing.
Acceptance Testing: Acceptance testing, we do it for when the customer is ready to accept the application and delivery. The purpose of this test is to evaluate the system’s compliance with the business requirements and assess whether it is acceptable for delivery.
Internal acceptance testing (also known as Alpha testing) is performed by members of the organization that is developed by the software but who are not directly involved in the project (Development to testing). Usually it is the member of Project management, sales, or customer support.
External acceptance testing: Testing is performed by people who are not employees of the organization that developed the software.
. Customer acceptance testing is generally performed by the customers of the Organization that developed the software. They are the ones who asked the organization to develop the software.
. User acceptance testing, also known as Beta testing, is performed by the end-user of the software. They can be customers of themselves or customer’s customers.