System & Integration Testing
Overview
➢ Testing
➢ System Integration Testing
➢ Integration testing & Approaches
➢ Stubs And Drivers
¤ Big bang
¤ Bottom up
¤ Top down
¤ Sandwich
➢ System testing
¤ Functional
¤ Performance
➢ Acceptance testing
➢ Conclusion
Testing
Testing is a systematic approach to find the
errors in system.
■ accomplished by exercising defects in
the system and revealing problems
■ failed test: an error was
demonstrated.
■ passed test: no error was found, so
far.
■ not used to show absence of errors in
software
■ does not directly reveal the actual bugs in
the code
System Integration Testing
▪ It is the testing of the sub-systems, as a
whole, to ensure that they work as a
system.
▪ verifies the proper execution of software
components and proper interfacing
between components within the solution.
▪ For eg. In case of lab thermostate changes
in the environment can affect the
performance of a system.
Integration Testing
✓ The Integration testing strategy determines
the order in which the subsystems are
selected for testing and integration.
✓ The entire system is viewed as a collection
of subsystems (sets of classes) determined
during the system and object design.
✓ Goal: Test all interfaces between
subsystems and the interaction of
subsystems.
Stubs and drivers
Driver
Tested
Unit
Stub
• Stub:
¤ A component, the TestedUnit depends on
¤ Partial implementation
¤ Returns fake values.
• Driver:
¤ A component, that calls the Tested
unit.
¤ Controls the test cases.
Approaches for Performing SIT
Common approaches to perform integration
testing:
• Top-down (from higher levels □ no
test drivers are needed)
• Bottom-up (from lower levels□ No test
stubs necessary)
• Sandwich (combination of
bottom-up and top-down □ no
test stubs and drivers needed)
• Big-bang (all components together)
Top−down Testing Approach
● Test the top layer or the controlling
subsystem first.
● Then combine all the
subsystems that are called by
the tested subsystems and test
the resulting collection of
subsystems.
● Do this until all subsystems are
incorporated into the test.
Bottom−upTesting Approach
● The subsystems in the lowest
layer of the call hierarchy are
tested individually.
● Then the next subsystems are
tested that call the previously
tested subsystems.
● This is repeated until all subsystems
are included.
● Drivers are needed.
Sandwich Testing Approach
*Combines top-down strategy with bottom-up strategy.
● The system is view as having three
layers
¤ A target layer in the middle
¤ A layer above the target
¤ A layer below the target
¤ Testing converges at the target layer
● How do you select the target
layer if there are more than
3 layers?
¤ Heuristic: Try to minimize the
number of stubs and drivers
Big Bang Approach
● Bring all components
together all at once.All
interfaces tested in one
go.
● Entry criteria
– all components have passed unit testing
● Exit criteria
– Test suite passes
System Testing
❖ Functional Testing
▪ Validates functional
requirements
❖ Performance Testing
▪ Validates non-functional
requirements
❖ Acceptance Testing
▪ Validates clients expectations
Functional Testing
Goal: Test functionality of system
● Test cases are designed from
the requirements analysis
document (better: user
manual) and centered around
requirements and key
functions (use cases).
● The system is treated as black
box.
● Unit test cases can be reused, but
new test cases have to
be developed as well.
Performance Testing
Goal: Try to violate non-functional
requirements.
● Test how the system behaves
when overloaded.
● Try unusual orders of execution
● Check the system’s response to
large volumes of data
Types of Performance Testing
● Stress Testing
¤ Stress limits of system
● Volume testing
¤ Test what happens if large amounts of
data are handled
● Configuration testing
¤ Test the various software and hardware
configurations
● Compatibility test
¤ Test backward compatibility with existing
systems
● Timing testing
¤ Evaluate response times and time to perform a
function
● Security testing
¤ Try to violate security
requirements
● Quality testing
¤ Test reliability, maintain- ability & availability
Acceptance Testing
● Goal: Demonstrate system is ready for
operational use
¤ Choice of tests is made by client
¤ Many tests can be taken from
integration testing
¤ Acceptance test is performed by the
client, not by the developer
● Alpha test:
¤ Client uses the software at the
developer’s environment.
¤ Software used in a controlled
setting, with the developer always
ready to fix bugs.
● Beta test:
¤ Conducted at client’s
environment (developer is not
present)
¤ Software gets a realistic
workout in target environ- ment
-:Conclusion:-
As we Know that Software testing is an
important part of the software development
process. It is not a single activity that takes
place after code implementation, but is part of
each stage of the lifecycle. A successful test
strategy will begin with consideration during
requirements specification. Testing details will
be fleshed through high and low level system
designs, and testing will be carried out by
developers and separate test groups after code
implementation.