Main Testing Levels:
- Unit Testing
- Integration Testing
- System Testing
Unit Testing
Unit Testing is the first level of software testing in which individual units or components of an application are tested independently. It is usually performed by developers to verify that each unit works correctly before integration.
- Tests individual functions, methods, or classes in isolation.
- Detects defects early, reducing debugging time and development cost.
- Ensures each component behaves as expected.
Integration Testing
Integration Testing verifies the interaction and data flow between two or more integrated modules. It ensures that combined components communicate correctly and work together without interface issues.
- Tests communication between integrated modules.
- Identifies interface and data exchange defects.
- Ensures seamless interaction among software components.
Integration Testing Approaches
Top-Down Approach
Bottom-Up Approach
Top-Down Approach
In Top-Down Integration Testing, testing starts from the top-level module and moves down to the lower-level modules.
Stubs
- Stubs are developed by software developers to use them in place of modules, if the respective modules aren't developed, missing in developing stage, or are unavailable currently while Top-down testing of modules
- Stubs are basically known as a "called programs" and are used in the Top-down integration testing.
Bottom-Up Approach
In Bottom-Up Integration Testing, testing starts from the lower-level modules and moves up to the top-level modules.
Drivers
- Drivers serve the same purpose as stubs, but drivers are used in Bottom-up integration testing and are also more complex than stubs.
- Drivers are the "calling program" and are used in bottom-up integration testing.
System Testing
System Testing evaluates the complete and integrated software application to verify that it meets all specified functional and non-functional requirements. It is performed in an environment similar to production.
- Tests the complete application from end to end.
- Verifies functional and non-functional requirements.
- Ensures the software behaves correctly in real-world scenarios.
Error vs Bug vs Defect
Error
A mistake made by the developer/programmer.
Bug
A problem in the software caused by an error and found during testing.
Defect
When the actual result does not match the expected result or requirement.


Top comments (0)