Unit testing (using White Box testing) -Verifies that each component/subsystem functions correctly. oDone by developers who develops the code (in some projects we call as component engineer)
Functional testing (using Black Box testing) -Verifies that all user functions work as specified in the system requirements specification or verifies that information properly flows in and out of the component. oDone by component engineer and/or independent test group (functional/integration/system tester)
Integration testing (using Black Box & White Box testing) -Verifies that the components/subsystems interact correctly. OR After completion of dependent modules development and testing, programmers are combined them to form a system. In this Integration, they are conducting Integration testing on the coupled modules w.r.t. HLD. oDone by component engineer and/or independent test group (functional/integration/system tester)
There are three approaches to conduct integration testing.
1.Top – Down Approach: Conduct testing on main module with out coming to some of the sub modules is called Top-Down Approach. From the below model, stub is a temporary program instead of under construction sub module. It is also known as called program.
2.Bottom – Up Approach: Conduct testing on sub modules with out coming from main module is calledBottom – Up Approach. From the below model, Driver is a temporary program instead of main module. This program is also known as calling program.
3.Sandwich Approach: The combination of Top – Down and Bottom-UP approaches is called Sandwich Approach.
System testing (Using Black Box testing) -Verifies that that system functions correctly as a whole oDone by independent test group (Functional/integration/system tester)
Acceptance testing (Using Black Box testing) -Validates the software against its requirements oDone by client/user
Note: 1. Unit, Functional, Integration, System testing to be performed in Developer Environment. 2. Acceptance testing to be performed in Client/Users Environment.
White Box Tests : “testing-in-the-small” -Derive test cases to verify component logic based on data/control structures oAvailability of source code is required §Tests are based on knowledge of the internal workings of a component
Black Box Tests : “testing-in-the-large” -Derive test cases to verify component functionality based on the inputs and outputs oAvailability of source code is not required §Tests are based on knowledge of the specified functionality of a component
Regression Tests : (selective White Box and Black Box tests) -Testing to ensure that no new defects are introduced after a change is made.