Professional Documents
Culture Documents
techniques?
Error prevention
Error detection
Testing, debugging
Error recovery
Fault tolerance
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 1
The 4 Testing Steps
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 2
Guidance for Test Case Selection
Use analysis knowledge Use implementation
about functional knowledge about algorithms:
requirements (black-box): Force division by zero
Use cases Use sequence of test cases for
Expected input data interrupt handler
Invalid input data
Use design knowledge about
system structure, algorithms,
data structures (white-box):
Control structures
Test branches, loops, ...
Data structures
Test records fields,
arrays, ...
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 3
Unit-testing Heuristics
1. Create unit tests as soon as object 4. Desk check your source code
design is completed: Reduces testing time
Black-box test: Test the use 5. Create a test harness
cases & functional model
Test drivers and test stubs are
White-box test: Test the needed for integration testing
dynamic model
6. Describe the test oracle
Data-structure test: Test the
Often the result of the first
object model
successfully executed test
2. Develop the test cases
7. Execute the test cases
Goal: Find the minimal Don’t forget regression testing
number of test cases to cover
as many paths as possible Re-execute test cases every time a
change is made.
3. Cross-check the test cases to
eliminate duplicates 8. Compare the results of the test with the
test oracle
Don't waste your time!
Automate as much as possible
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 4
Component-Based Testing Strategy
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 5
Example: Three Layer Call Hierarchy
A
Layer I
B C D Layer II
E F G Layer III
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 6
Integration Testing: Big-Bang Approach
Unit Test
UI
Don’t try this!
Unit Test
Billing
Unit Test
Learning System Test
PAID
Unit Test
Event Service
Unit Test
Network
Unit Test
Database
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 7
Bottom-up Testing Strategy
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 8
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 Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 9
Pros and Cons of bottom up integration testing
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 10
Top-down Testing Strategy
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 11
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
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 12
Pros and Cons of top-down integration testing
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 13
Sandwich Testing Strategy
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 14
Sandwich Testing Strategy A
Layer I
B C D Layer II
E F G
Test E Layer III
Bottom Test B, E, F
Layer Test F
Tests
Test
A, B, C, D,
Test D,G E, F, G
Test G
Top Test A
Layer
Tests
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 15
Pros and Cons of Sandwich Testing
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 16
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 Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 17
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
Test C Double
Test I
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 18
Which Integration Strategy should you use?
Factors to consider ...Top-level components are
Amount of test harness usually important and
(stubs &drivers) cannot be neglected up to the
end of testing
Location of critical parts in
the system Detection of design errors
postponed until end of
Availability of hardware testing
Availability of components Top down approach
Scheduling concerns Test cases can be defined in
Bottom up approach terms of functions examined
good for object oriented Need to maintain correctness
design methodologies of test stubs
Test driver interfaces must Writing stubs can be
match component interfaces difficult
...
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 19
System Testing
Functional Testing
Structure Testing
Performance Testing
Acceptance Testing
Installation Testing
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 20
Structure Testing
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 21
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)
The system is treated as black box.
Unit test cases
. can be reused, but new test cases oriented to the
end user have to be developed as well.
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 22
Performance Testing
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 23
Acceptance Testing
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 24
Testing has its own Life Cycle
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 25
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 component-based testing
Testing has its own lifecycle
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 26