Integration Testing Strategies Guide
Integration Testing Strategies Guide
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 2
Example: Three Layer Call Hierarchy
A
Layer I
B C D Layer II
E F G Layer III
Unit Test
A
Don’t try this!
Unit Test
B
Unit Test
C
System Test
Unit Test
D
Unit Test
E
Unit Test
F
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 4
Bottom-up Integration A
Layer I
B C D Layer II
Test E F G
E Layer III
Test B, E, F
Test F
Test C Test
A, B, C, D,
E, F, G
Test D,G
Test G
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 6
Top-down Integration Testing
A
Layer I
B C D Layer II
E F G
Layer III
Test
Test A Test A, B, C, D A, B, C, D,
E, F, G
Layer I
Layer I + II
All Layers
Special program is needed to do the testing, Test stub :
A program or a method that simulates the activity of a missing subsystem by answering to the
calling sequence of the calling subsystem and returning back fake data.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 7
Pros and Cons of top-down integration testing
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 9
Sandwich Testing Strategy A
Layer I
B C D Layer II
E F G
Test E Layer III
up
Bottom Test B, E, F
Layer Test F
Tests
Test
A, B, C, D,
Test D,G E, F, G
Test G
Test A,B,C, D
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 11
Modified Sandwich Testing Strategy
Test in parallel:
Middle layer with drivers and stubs
Top layer with stubs
Bottom layer with drivers
Test in parallel:
Top layer accessing middle layer (top layer replaces
drivers)
Bottom accessed by middle layer (bottom layer replaces
stubs)
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 12
Self reading exercise
Modified Sandwich Testing Strategy Double
Double
Test
TestII
A
Layer I
Test B
B C D
Layer II
Test E
Triple
Triple E F G
Layer III
Triple Test
Triple
Test B, E, F TestII
Test
TestII Double
Double
Test
TestIIII
Test F
Test
Test D A, B, C, D,
Double
Double Test D,G E, F, G
Test
TestIIII
Test G
Test A,C
Test A
Test C Double
Double
Test
TestII
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 13
Steps in Integration-Testing
1.1.Based
Basedon onthe
theintegration
integrationstrategy,
strategy, 4.4.Do
Dostructural
structuraltesting:
testing:Define
Definetest
test
select
selectaacomponent
componenttotobe betested.
tested. cases
casesthat
thatexercise
exercisethe
theselected
selected
Unit
Unittest
testall
allthe
theclasses
classesininthe
the component
component
component.
component. 5.5.Execute
. Put selected component together; Executeperformance
performanceteststests
2.2. Put selected component together; 6.6.Keep
do Keeprecords
recordsof ofthe
thetest
testcases
casesand
and
doany
anypreliminary
preliminaryfix-up
fix-up testing
testingactivities.
activities.
necessary
necessarytotomake
makethetheintegration
integration
test 7.7.Repeat
Repeatsteps
steps11 toto77until
untilthe
thefull
full
testoperational
operational(drivers,
(drivers,stubs)
stubs) system
3.3.Do systemisistested.
tested.
Dofunctional
functionaltesting:
testing:Define
Definetest
test
cases
casesthat
thatexercise
exerciseall
alluses
usescases
cases
with
withthe
theselected
selectedcomponent
component The
Theprimary
primarygoal goalofofintegration
integration
testing
testingisistotoidentify
identifyerrors
errorsininthe
the
What is the relationship among packages,
(current)
(current)component
component
classes, components, interactions, activities,
configuration.
configuration.
deployments and use cases?
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 14
Which Integration Strategy should you use?
Factors
Factorstotoconsider
consider ...Top-level
...Top-levelcomponents
componentsare are
Amount usually
usuallyimportant
importantand and
Amountof oftest
testharness
harness cannot
(stubs
(stubs&drivers)
&drivers) big cost cannotbe beneglected
neglectedupupto
tothe
the
end
endof oftesting
testing
Location
Locationof ofcritical
criticalparts
partsin
in
the Detection
Detectionof ofdesign
designerrors
errors
thesystem
system what? postponed
Availability postponeduntiluntilend
endofof
Availabilityof ofhardware
hardware testing
testing
Availability
Availabilityof ofcomponents
components Top
Topdown
downapproach
approach
Scheduling
Schedulingconcerns
concerns Test
Testcases
casescan
canbe
bedefined
definedinin
Bottom
Bottomup upapproach
approach terms
termsof offunctions
functionsexamined
examined
good
goodfor forobject
objectoriented
oriented Need
Needto tomaintain
maintaincorrectness
correctness
design
designmethodologies
methodologies of
oftest
teststubs
stubs
Test
Testdriver
driverinterfaces
interfacesmust
must Writing
Writingstubs
stubscan
canbebe
match
matchcomponent
componentinterfaces
interfaces difficult
difficult
......
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 15
System Testing
Functional Testing
Structure Testing
Performance Testing
Acceptance Testing
Installation Testing
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 16
Self reading
Structure Testing
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 17
Functional Testing
Essentially
. the same as black box 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)
What’s in a use case?
What do we test
.
The system is treated as black box.
Unit test cases can be reused, but in end user oriented new test
cases have to be developed as well.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 18
Performance Testing
Goal:
Goal:Demonstrate
Demonstratesystem
systemisis Alpha test:
ready
Alpha test:
readyfor
foroperational
operationaluse
use Sponsor
Choice Sponsoruses
usesthe
thesoftware
softwareat
at
Choiceof oftests
testsisismade
madeby by the developer’s site.
the developer’s site.
client
client/sponsor
/sponsor Software
Softwareused
usedin
inaacontrolled
controlled
Many
Manytests
testscancanbe betaken
taken setting,
setting,with
withthe
thedeveloper
developer
from
fromintegration
integrationtestingtesting always
alwaysready
readyto
tofix
fixbugs.
bugs.
Acceptance
Acceptancetest testisisperformed
performed Beta test:
by
bythe
theclient,
client,notnotby bythe
the
Beta test:
developer. Conducted
Conductedat atsponsor’s
sponsor’ssite
site
developer.
(developer
(developerisisnot
notpresent)
present)
Majority
Majorityofofall
allbugs
bugsininsoftware
softwareisis
typically Software
Softwaregets
getsaarealistic
typicallyfound
foundby bythe
theclient
clientafter
after realistic
the
thesystem
systemisisininuse,
use,not
notby bythe
the workout
workoutinintarget
targetenviron-
environ-
developers
developersor ortesters.
testers.Therefore
Therefore ment
ment
two
twokinds
kindsofofadditional
additionaltests:tests: Potential
Potentialcustomer
customermight
mightget get
discouraged
discouraged
What’s ethnomethodology?
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 21
Testing has its own Life Cycle
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 22
Albert Einstein - We can't solve problems
by using the same kind of thinking we used
Test Team when we created them.
Professional
Tester too familiar
Programmer with code
Analyst
Test System
User Team Designer
Configuration
Management
Specialist
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 23
Summary
stillaablack
Testing
Testingisisstill blackart,
art,but
butmany
manyrules
rulesand
andheuristics
heuristicsare
are
available
available
Testing consists of component-testing (unit testing, integration
Testing consists of component-testing (unit testing, integration
testing)
testing)and
andsystem
systemtesting
testing
Design Patterns can be used for integration testing
Design Patterns can be used for integration testing
Testing has its own lifecycle
Testing has its own lifecycle
And …
And …
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 24
Using the Bridge Pattern to enable early Integration
Testing
Use the bridge pattern to provide multiple implementations
under the same interface.
Interface to a component that is incomplete, not yet known or
unavailable during testing
Simulated
Stub Code Real Seat
Seat (SA/RT)
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 25
Bottom-up Testing Strategy
Simulated
Stub Code Real Seat
Bernd Bruegge & Allen H. Dutoit
Seat (SA/RT)
Object-Oriented Software Engineering: Using UML, Patterns, and Java 26
Top-down Testing Strategy
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 27
Scheduling Sandwich Tests: Example of a
Dependency Chart