Integration - Testing Curs 6
Integration - Testing Curs 6
2
Definition of Integration Testing
Integration testing ("I&T") is the phase in
software testing in which individual software
modules are combined and tested as a group.
It occurs after unit testing and before system
testing.
Integration testing takes as its input modules that
have been unit tested, groups them in larger
aggregates, applies tests defined in an integration
test plan to those aggregates, and delivers as its
output the integrated system ready for system
testing.
3
Why Do You Need Integration Testing?
To make sure that
your components
satisfy the fallowing
requirements:
◦ Functional.
◦ Performance.
◦ Reliability.
4
Terminology (1)
Stub – the dummy modules that
simulates the low level modules.
Driver – the dummy modules that
simulate the high level modules.
Top-down approach (also known
as step-wise design) - the
breaking down of a system to gain
insight into its compositional sub-
systems.
A bottom-up approach is the
piecing together of systems to
give rise to grander systems, thus
making the original systems sub-
systems of the emergent system.
5
Terminology (2)
Bottleneck – a phenomenon
where the performance or
capacity of an entire system is
limited by a single or limited
number of components or
resources.
Regression testing - any type of
software testing that seeks to
uncover new errors, or
regressions, in existing
functionality after changes have
been made to the software, such
as functional enhancements,
patches or configuration
changes.
6
What Is Big Bang Testing?
In Big Bang Integration testing,
individual modules of the
programs are not integrated
until every thing is ready. It is
called 'Run it and see' approach.
In this approach, the program is
integrated without any formal
integration testing, and then
run to ensures that all the
components are working
properly.
7
Disadvantages of Big Bang
Defects present at the interfaces of
components are identified at very late
stage.
It is very difficult to isolate the defects
found, as it is very difficult to tell
whether defect is in component or
interface.
There is high probability of missing
some critical defects which might
surfaced in production.
It is very difficult to make sure that all the
cases for integration testing are covered.
8
Big Bang Testing: Conclusion
This is not the way
you should integrate
and test software!
9
How To Integrate?
If Big Bang integration is bad, then how to
integrate?
The answer: incremental integration.
10
Bottom-up Integration Testing (1)
In bottom up integration
testing, module at the
lowest level are developed
first and other modules
which go towards the
'main' program are
integrated and tested one
at a time.
Bottom up integration also
uses test drivers to drive
and pass appropriate data
to the lower level modules.
11
Bottom-up Integration Testing (2)
As and when code for other
module gets ready, these drivers
are replaced with the actual
module.
In this approach, lower level
modules are tested extensively
thus make sure that highest used
module is tested properly.
12
Bottom-up Testing Graphical
Represenation
13
Comments on Graphical Representation
Modules E and F are tested. Then
modules B, E, F are tested.
Module F is tested. Then modules F and
G are tested.
Module C is tested.
Finally – modules A, B, C, D, E, F, G are
tested.
14
Advantages of Bottom-up Testing
Behavior of the interaction points are
crystal clear, as components are added in
the controlled manner and tested
repetitively.
Appropriate for applications where
bottom up design methodology is used.
15
Disadvantages of Bottom-up Testing
Writing and maintaining test drivers is
more difficult than writing stubs.
This approach is not suitable for the
software development using top-down
approach.
16
Top-down Testing
Top down integration testing is an
incremental integration testing technique
which begins by testing the top level
module and and progressively adds in
lower level module one by one.
Lower level modules are normally
simulated by stubs which mimic
functionality of lower level modules.
As you add lower level code, you will
replace stubs with the actual components.
17
Advantages of Top-down Testing
Driver do not have to
be written when top
down testing is used.
It provides early
working module of
the program and so
design defects can be
found and corrected
early.
18
Disadvantages of Top-down Testing
Stubs have to be written with utmost care
as they will simulate setting of output
parameters.
It is difficult to have other people or third
parties to perform this testing, mostly
developers will have to spend time on
this.
19
Top-down And Bottom-up Testing:
Conclusion
You’ll probably use a
combination of these
two techniques.
20
Sandwich Testing Strategy
Combines top-down strategy with bottom-up strategy
The system is view as having three layers
21
Graphical Representation of Sandwich
Testing Strategy
A
Level I
B C D
Test E Level II
E F G H
Level III
Bottom Test B, E, F
Level Test F
Tests
Test
Test G A, B, C, D,
Test D,G,H E, F, G, H
Test H
Test A,B,C, D
Top Test A
Level
Tests 22
Comments on Graphical Representation
Modules E and F are tested. Then B, E, F
are tested.
Modules G and H are tested. Then D, G,
H are tested.
Module A is tested. Then A, B, C, D are
tested.
Finally – modules A, B, C, D, F, G, H are
tested.
23
Sandwich Testing Strategy: Conclusions
Top and Bottom Layer
Tests can be done in
parallel.
Does not test the
individual subsystems
thoroughly before
integration.
24
Performance vs. Load vs. Stress testing
There are three main
types of speed-
related testing:
performance testing,
load testing and
stress testing.
25
Performance testing
The goal of
performance testing
is not to find bugs,
but to eliminate
bottlenecks and
establish a baseline
for future regression
testing.
26
Load Testing
Load testing is usually
defined as the process of
exercising the system
under test by feeding it
the largest tasks it can
operate with.
Load testing is
sometimes called
volume testing, or
longevity/endurance
testing.
27
Examples of Load Testing
Testing a word processor by editing a
very large document
Testing a printer by sending it a very large
job
Testing a mail server with thousands of
users mailboxes
A specific case of volume testing is zero-
volume testing, where the system is fed
empty tasks
28
Stress Testing (1)
Testing conducted to
evaluate a system or
component at or beyond
the limits of its specified
requirements to
determine the load under
which it fails and how.
A graceful degradation
under load leading to
non-catastrophic failure
is the desired result.
29
Stress Testing (2)
Stress testing tries to break
the system under test by
overwhelming its resources
or by taking resources
away from it (in which case
it is sometimes called
negative testing).
The main purpose behind
this madness is to make
sure that the system fails
and recovers gracefully --
this quality is known as
recoverability.
30
Recommendations for Integration Testing
OK, I want to test the software. Any
recommendations?
31
Steps of Integration Testing (1)
Select component to test
and unit test the classes of
the component.
Put selected component
into system. Do any
preliminary fix-up
necessary to make the
integration test operational
(drivers, stubs).
Define test cases that
exercise all uses cases with
the selected component
32
Steps of Integration Testing (2)
Define test cases that exercise
the selected component
Execute performance tests
…and once again with another
component…
33
Main Point: Incremental Integration
All the units of a
system must be
integrated
consequtively and
integrated in step
by step process by
incrementing the
levels of testing at
one end to other end.
34
Questions For The Audience
What is the main difference between unit
testing and integration testing?
What is Big Bang testing?
What is the difference between bottom-up
and top-down testing?
What is stress testing?
35
Literature (1)
http://en.wikipedia.org/wiki/Unit_testing
http://en.wikipedia.org/wiki/System_integ
ration_testing
http://en.wikipedia.org/wiki/Integration_t
esting
http://msdn.microsoft.com/en-us/library/a
a292128%28v=vs.71%29.aspx
http://www.testinggeek.com/
http://swen.uwaterloo.ca/~kostas/ECE453
-06/lectures/Lect17-Ch13-Unit5-Part1.ppt
36
Literature (2)
http://www.debianhelp.co.uk/apacheab.ht
m
http://agiletesting.blogspot.com/2005/02/
performance-vs-load-vs-stress-testing.htm
l
http://en.wikipedia.org/wiki/Regression_t
esting
http://en.wikipedia.org/wiki/Bottleneck
37
Youtube Links
http://www.youtube.com/watch?v=J22IjX
lHI4Y&feature=feedu
[Lecture “Software Integration Testing”,
1:50].
http://www.youtube.com/watch?v=bgIAn
WfNLOw&playnext=1&list=PLF7935AF
A888C74E2
[“Integration Testing In Software Testing
Projects”, 5:46]
http://www.youtube.com/watch?v=czyoK
fWp6z4 38
Topics for Discussion
“Good test is the test which reveals
errors.” Is it?
Incremental integration is too expensive?
Try to integrate 200-300 components…
What is the best method for testing?
39
Thank You For Attention!
Ernestas Kardzys, IFME-0/2
[email protected],
www.ernestas.info
http://www.ernestas.info/ktu/pt/Integration_Testing.pptx
40