CH 11 Lect 2
CH 11 Lect 2
Recall: OO vs. architecture vs. design pattern vs. RE – all moving targets
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 G
E F 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 Self reading exercise
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
Test I
A
Layer I
Test B
B C D
Layer II
Test E
Triple E F G
Layer III
Triple Test I
Test I Test B, E, F
Double
Test II
Test F
Test
Test D A, B, C, D,
Double
Test D,G E, F, G
Test II
Test G
Test A,C
Test A
Test C Double
Test I
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 13
Self reading
Steps in Integration-Testing
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 14
Self reading
Which Integration Strategy should you use?
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
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
Testing is still a black art, but many rules and heuristics are
available
Testing consists of component-testing (unit testing, integration
testing) and system testing
Design Patterns can be used for integration testing
Testing has its own lifecycle
And …
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 24
Additional Slides
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 25
Using the Bridge Pattern to enable early Integration
Testing
Simulated
Stub Code Real Seat
Seat (SA/RT)
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 26
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 27
Top-down Testing Strategy
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 28
Scheduling Sandwich Tests: Example of a
Dependency Chart