Following
are the different levels of testing
1)
Unit testing
2)
Integration testing
3)
System testing
4)
Acceptance testing
1) Unit Testing:-
Unit Testing is the first
level of testing which is the first responsibility of the developers and then
of the testers. It is generally seen as a "white box" test class.
That is, it is based to looking at and evaluating the code as implemented,
rather than evaluating performance to some set of requirements.
It
has the following advantages
a)
Does the code implemented what the designer intended
b)
For each conditional statement, is the condition correct?
c)
Do all the special cases work correctly?
d)
Are error cases correctly detected?
2) Integration Testing:-
Is a testing of combined
parts of an application to determine if they function together correctly? The
'parts' can be code modules, individual applications, client and server
applications on a network, etc. This type of testing is especially relevant to
client/server and distributed systems.
For example if an
application has 5 modules (A, B, C, D, E) first A+B modules combinded and
tested then A+B+C… it goes for All of the pending module combinations.
Integration testing identifies problems that occur when units are combined.
Following are the main
reasons for doing integration testing
a) To find faults that
could not have been found in the component testing because, they only become
apparent when components are integrated
b) To generate credible
information about the software under test, so that technical and business
decisions can be made
c)
Confirm that as the system grows risk of failures are being diminished
Types of Integration testing: -
1)
Bottom up integration
2)
Top down integration
3)
Umbrella approach
1) Bottom up integration:-
Integrating from the last
module of an application to first module of the application. Bottom-Up
Integration testing is particularly suited to Concurrent Programming. The slow
build-up will introduce processes to one another in a controlled manner which
allows the consequences of their interactions to be fully determined
Following
are pros and cons of button up integration
a)
Bad for functionally decomposed systems
b)
Use full for integrating systems like, object oriented, real time systems etc
c)
Systems that are specifically developed for performance requirements
2) Top down integration: -
Integrating the modules as
per the priority which is derived from the design of an application. The
top-down approach to integration testing requires the highest-level modules be
test and integrated first. This allows high-level logic and data flow to be
tested early in the process and it tends to minimize the need for drivers.
Following
are pros and cons of button up integration
a)
Test cases can be defined in terms of functionality of the system
b)
Sequence of the test data flow will be clear
c)
Most common/frequently used integration technique
d)
Writing stubs can be difficult, if modules are not ready
3) Umbrella Approach: -
Testing along functional
data and control-flow paths. First, the inputs for functions are integrated in
the bottom-up pattern. The outputs for each function are then integrated in the
top-down manner. The primary advantage of this approach is the degree of
support for early release of limited functionality. It also helps minimize the
need for stubs and drivers. The disadvantage of this model is it is less
systematic than the other two approaches, because of which more regression
testing is required