Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 1
Review: What are the 3 types of quality control
techniques?
 Error prevention
 Error detection
 Testing, debugging
 Error recovery
 Fault tolerance
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 2
The 4 Testing Steps
1. Select what has to be
measured
 Completeness of
requirements
 Code tested for reliability
 Design tested for cohesion
2. Decide how the testing is
done
 Code inspection
 Proofs
 Black-box, white box,
 Select integration testing
strategy (big bang, bottom
up, top down, sandwich)
3. Develop test cases
 A test case is a set of test
data or situations that will
be used to exercise the unit
(code, module, system) being
tested or about the attribute
being measured
4. Create the test oracle
 An oracle contains of the
predicted results for a set of
test cases
 The test oracle has to be
written down before the
actual testing takes place
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 3
Guidance for Test Case Selection
 Use analysis knowledge
about functional
requirements (black-box):
 Use cases
 Expected input data
 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, ...
 Use implementation
knowledge about algorithms:
 Force division by zero
 Use sequence of test cases for
interrupt handler
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 4
Unit-testing Heuristics
1. Create unit tests as soon as object
design is completed:
 Black-box test: Test the use
cases & functional model
 White-box test: Test the
dynamic model
 Data-structure test: Test the
object model
2. Develop the test cases
 Goal: Find the minimal
number of test cases to cover
as many paths as possible
3. Cross-check the test cases to
eliminate duplicates
 Don't waste your time!
4. Desk check your source code
 Reduces testing time
5. Create a test harness
 Test drivers and test stubs are
needed for integration testing
6. Describe the test oracle
 Often the result of the first
successfully executed test
7. Execute the test cases
 Don’t forget regression testing
 Re-execute test cases every time a
change is made.
8. Compare the results of the test with the
test oracle
 Automate as much as possible
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 5
Component-Based Testing Strategy
 The entire system is viewed as a collection of subsystems (sets
of classes) determined during the system and object design.
 The order in which the subsystems are selected for testing and
integration determines the testing strategy
Big bang integration (Nonincremental)
Bottom up integration
Top down integration
Sandwich testing
Variations of the above
 For the selection use the system decomposition from the
System Design
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 6
Example: Three Layer Call Hierarchy
A
B C D
G
F
E
Layer I
Layer II
Layer III
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 7
Integration Testing: Big-Bang Approach
Unit Test
Database
Unit Test
Network
Unit Test
Event Service
Unit Test
Learning
Unit Test
Billing
Unit Test
UI
System Test
PAID
Don’t try this!
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 8
Bottom-up Testing Strategy
 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
 Combine the pieces layer-by-layer, from bottom layer on up.
 This is done repeatedly until all subsystems are included in the
testing
 Special program needed to do the testing, Test Driver:
 A routine that calls a particular subsystem and passes a test case to
it
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 9
Bottom-up Integration A
B C D
G
F
E
Layer I
Layer II
Layer III
Test D,G
Test F
Test E
Test G
Test C Test
A, B, C, D,
E, F, G
Test B, E, F
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 10
Pros and Cons of bottom up integration testing
 Bad for functionally decomposed systems:
Tests the most important subsystem last (e.g. user
interface)
 Useful for integrating the following systems
Object-oriented systems
real-time systems
systems with strict performance requirements
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 11
Top-down Testing Strategy
 Test the top layer or the controlling subsystem first
 Then combine all the subsystems that are called by the
previously tested subsystem(s) and test the new collection
 Do this until all subsystems are incorporated into the test
 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 Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 12
Top-down Integration Testing
A
B C D
G
F
E
Layer I
Layer II
Layer III
Test A
Test
A, B, C, D,
E, F, G
Test A, B, C, D
Layer I
Layer I + II
All Layers
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 13
Pros and Cons of top-down integration testing
 Test cases can be defined in terms of the functionality of the
system (functional requirements)
 Writing stubs can be difficult:
 Stubs must allow all possible conditions to be tested.
 A large number of stubs may be required.
 One solution to avoid too many stubs: Modified top-down
testing strategy
 Test each layer of the system decomposition individually before
merging the layers
 Disadvantage of modified top-down testing: Both stubs and drivers
are needed
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 14
Sandwich Testing Strategy
 Combines top-down strategy with bottom-up strategy
 The system is viewed 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
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 15
Sandwich Testing Strategy A
B C D
G
F
E
Layer I
Layer II
Layer III
Test D,G
Test F
Test E
Test G
Test A
Test
A, B, C, D,
E, F, G
Test B, E, F
Bottom
Layer
Tests
Top
Layer
Tests
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 16
Pros and Cons of Sandwich Testing
 Top and Bottom Layer Tests can be done in parallel
 Does not test the individual subsystems thoroughly before
integration
 Alternative: Modified sandwich testing strategy
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 17
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 18
Modified Sandwich Testing Strategy
A
B C D
G
F
E
Layer I
Layer II
Layer III
Test D,G
Test F
Test E
Test G
Test A
Test
A, B, C, D,
E, F, G
Test B, E, F
Test B
Test D
Test C
Triple
Test I
Double
Test I
Double
Test II
Triple
Test I
Double
Test I
Double
Test II
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 19
Which Integration Strategy should you use?
 Factors to consider
 Amount of test harness
(stubs &drivers)
 Location of critical parts in
the system
 Availability of hardware
 Availability of components
 Scheduling concerns
 Bottom up approach
 good for object oriented
design methodologies
 Test driver interfaces must
match component interfaces
 ...
 ...Top-level components are
usually important and
cannot be neglected up to the
end of testing
 Detection of design errors
postponed until end of
testing
 Top down approach
 Test cases can be defined in
terms of functions examined
 Need to maintain correctness
of test stubs
 Writing stubs can be difficult
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 20
System Testing
 Functional Testing
 Structure Testing
 Performance Testing
 Acceptance Testing
 Installation Testing
Impact of requirements on system testing:
 The more explicit the requirements, the easier they are to test.
 Quality of use cases determines the ease of functional testing
 Quality of subsystem decomposition determines the ease of structure
testing
 Quality of nonfunctional requirements and constraints determines
the ease of performance tests:
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 21
Structure Testing
 Essentially the same as white box testing.
 Goal: Cover all paths in the system design
 Exercise all input and output parameters of each component.
 Exercise all components and all calls (each component is called at
least once and every component is called by all possible callers.)
 Use conditional and iteration testing as in unit testing.
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 22
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 23
Performance Testing
 Stress Testing
 Stress limits of system (maximum # of
users, peak demands, extended
operation)
 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
 Security testing
 Try to violate security requirements
 Timing testing
 Evaluate response times and
time to perform a function
 Environmental test
 Test tolerances for heat,
humidity, motion, portability
 Quality testing
 Test reliability, maintain-ability
& availability of the system
 Recovery testing
 Tests system’s response to
presence of errors or loss of
data.
 Human factors testing
 Tests user interface with user
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 24
Acceptance Testing
 Goal: Demonstrate system is
ready for operational use
 Choice of tests is made by
client/sponsor
 Many tests can be taken
from integration testing
 Acceptance test is performed
by the client, not by the
developer.
 Majority of all bugs in software is
typically found by the client after
the system is in use, not by the
developers or testers. Therefore
two kinds of additional tests:
 Alpha test:
 Sponsor uses the software at
the developer’s site.
 Software used in a controlled
setting, with the developer
always ready to fix bugs.
 Beta test:
 Conducted at sponsor’s site
(developer is not present)
 Software gets a realistic
workout in target environ-
ment
 Potential customer might get
discouraged
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 25
Testing has its own Life Cycle
Establish the test objectives
Design the test cases
Write the test cases
Test the test cases
Execute the tests
Evaluate the test results
Change the system
Do regression testing
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 26
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

More Related Content

PPT
ch11lect2.pptjtyjytjtrjtyjjytyjtyuuuuuuu
PPT
Ch11lect2
PPT
Software Testing
PPTX
Integration in component based technology
PPT
Ch11lect2 ud
PPT
fgbekcvadsdsgrrhhrhedrhhhrhdhdhdhhdrhdhhd
PPT
TESTING_METHODOSoftware Testing is a type of investigation to find out if the...
PPT
ppt_onsoftware_Engineering_chapter11.ppt
ch11lect2.pptjtyjytjtrjtyjjytyjtyuuuuuuu
Ch11lect2
Software Testing
Integration in component based technology
Ch11lect2 ud
fgbekcvadsdsgrrhhrhedrhhhrhdhdhdhhdrhdhhd
TESTING_METHODOSoftware Testing is a type of investigation to find out if the...
ppt_onsoftware_Engineering_chapter11.ppt

Similar to Types of tests and various steps to take (20)

PPT
Test Levels & Techniques
PPT
Testing
PPT
Slides chapters 13-14
PPTX
Comprehensive Testing Strategies for Reliable and Quality Software Developmen...
PPT
RPG Program for Unit Testing RPG
PPT
Testing chapter updated (1)
PPT
ch11lect1.ppt
PPT
ch11lect1.pptghjgjhjkkljkkkjkjkjljkjhytytgh
PPT
ch11lect1.ppt
PPT
ch11a23424234242342342342423244lect1.ppt
PPT
Software testing
PDF
10-Testing-system.pdf
PPTX
Softwar tetesting basic
PPT
Testing Software Solutions
PPTX
Introduction to testing.
PPTX
08 fse verification
PPT
Software Testing Strategies lecture .ppt
PPT
Software Testing Strategies lecture .ppt
PPTX
Software testing methods
PPTX
OOSAD - Object Oriented Systems Analysis and Design-Chapter07.pptx
Test Levels & Techniques
Testing
Slides chapters 13-14
Comprehensive Testing Strategies for Reliable and Quality Software Developmen...
RPG Program for Unit Testing RPG
Testing chapter updated (1)
ch11lect1.ppt
ch11lect1.pptghjgjhjkkljkkkjkjkjljkjhytytgh
ch11lect1.ppt
ch11a23424234242342342342423244lect1.ppt
Software testing
10-Testing-system.pdf
Softwar tetesting basic
Testing Software Solutions
Introduction to testing.
08 fse verification
Software Testing Strategies lecture .ppt
Software Testing Strategies lecture .ppt
Software testing methods
OOSAD - Object Oriented Systems Analysis and Design-Chapter07.pptx
Ad

Recently uploaded (20)

PDF
What if we spent less time fighting change, and more time building what’s rig...
PPTX
ELIAS-SEZIURE AND EPilepsy semmioan session.pptx
PDF
FORM 1 BIOLOGY MIND MAPS and their schemes
PDF
BP 704 T. NOVEL DRUG DELIVERY SYSTEMS (UNIT 2).pdf
PPTX
Onco Emergencies - Spinal cord compression Superior vena cava syndrome Febr...
PDF
Practical Manual AGRO-233 Principles and Practices of Natural Farming
PDF
CISA (Certified Information Systems Auditor) Domain-Wise Summary.pdf
PDF
FOISHS ANNUAL IMPLEMENTATION PLAN 2025.pdf
PDF
BP 704 T. NOVEL DRUG DELIVERY SYSTEMS (UNIT 1)
PPTX
Chinmaya Tiranga Azadi Quiz (Class 7-8 )
PDF
احياء السادس العلمي - الفصل الثالث (التكاثر) منهج متميزين/كلية بغداد/موهوبين
PDF
Environmental Education MCQ BD2EE - Share Source.pdf
PDF
Complications of Minimal Access-Surgery.pdf
PPTX
Virtual and Augmented Reality in Current Scenario
PDF
International_Financial_Reporting_Standa.pdf
PDF
ChatGPT for Dummies - Pam Baker Ccesa007.pdf
PPTX
B.Sc. DS Unit 2 Software Engineering.pptx
PDF
IGGE1 Understanding the Self1234567891011
PDF
Paper A Mock Exam 9_ Attempt review.pdf.
PDF
Weekly quiz Compilation Jan -July 25.pdf
What if we spent less time fighting change, and more time building what’s rig...
ELIAS-SEZIURE AND EPilepsy semmioan session.pptx
FORM 1 BIOLOGY MIND MAPS and their schemes
BP 704 T. NOVEL DRUG DELIVERY SYSTEMS (UNIT 2).pdf
Onco Emergencies - Spinal cord compression Superior vena cava syndrome Febr...
Practical Manual AGRO-233 Principles and Practices of Natural Farming
CISA (Certified Information Systems Auditor) Domain-Wise Summary.pdf
FOISHS ANNUAL IMPLEMENTATION PLAN 2025.pdf
BP 704 T. NOVEL DRUG DELIVERY SYSTEMS (UNIT 1)
Chinmaya Tiranga Azadi Quiz (Class 7-8 )
احياء السادس العلمي - الفصل الثالث (التكاثر) منهج متميزين/كلية بغداد/موهوبين
Environmental Education MCQ BD2EE - Share Source.pdf
Complications of Minimal Access-Surgery.pdf
Virtual and Augmented Reality in Current Scenario
International_Financial_Reporting_Standa.pdf
ChatGPT for Dummies - Pam Baker Ccesa007.pdf
B.Sc. DS Unit 2 Software Engineering.pptx
IGGE1 Understanding the Self1234567891011
Paper A Mock Exam 9_ Attempt review.pdf.
Weekly quiz Compilation Jan -July 25.pdf
Ad

Types of tests and various steps to take

  • 1. Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 1 Review: What are the 3 types of quality control techniques?  Error prevention  Error detection  Testing, debugging  Error recovery  Fault tolerance
  • 2. Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 2 The 4 Testing Steps 1. Select what has to be measured  Completeness of requirements  Code tested for reliability  Design tested for cohesion 2. Decide how the testing is done  Code inspection  Proofs  Black-box, white box,  Select integration testing strategy (big bang, bottom up, top down, sandwich) 3. Develop test cases  A test case is a set of test data or situations that will be used to exercise the unit (code, module, system) being tested or about the attribute being measured 4. Create the test oracle  An oracle contains of the predicted results for a set of test cases  The test oracle has to be written down before the actual testing takes place
  • 3. Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 3 Guidance for Test Case Selection  Use analysis knowledge about functional requirements (black-box):  Use cases  Expected input data  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, ...  Use implementation knowledge about algorithms:  Force division by zero  Use sequence of test cases for interrupt handler
  • 4. Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 4 Unit-testing Heuristics 1. Create unit tests as soon as object design is completed:  Black-box test: Test the use cases & functional model  White-box test: Test the dynamic model  Data-structure test: Test the object model 2. Develop the test cases  Goal: Find the minimal number of test cases to cover as many paths as possible 3. Cross-check the test cases to eliminate duplicates  Don't waste your time! 4. Desk check your source code  Reduces testing time 5. Create a test harness  Test drivers and test stubs are needed for integration testing 6. Describe the test oracle  Often the result of the first successfully executed test 7. Execute the test cases  Don’t forget regression testing  Re-execute test cases every time a change is made. 8. Compare the results of the test with the test oracle  Automate as much as possible
  • 5. Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 5 Component-Based Testing Strategy  The entire system is viewed as a collection of subsystems (sets of classes) determined during the system and object design.  The order in which the subsystems are selected for testing and integration determines the testing strategy Big bang integration (Nonincremental) Bottom up integration Top down integration Sandwich testing Variations of the above  For the selection use the system decomposition from the System Design
  • 6. Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 6 Example: Three Layer Call Hierarchy A B C D G F E Layer I Layer II Layer III
  • 7. Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 7 Integration Testing: Big-Bang Approach Unit Test Database Unit Test Network Unit Test Event Service Unit Test Learning Unit Test Billing Unit Test UI System Test PAID Don’t try this!
  • 8. Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 8 Bottom-up Testing Strategy  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  Combine the pieces layer-by-layer, from bottom layer on up.  This is done repeatedly until all subsystems are included in the testing  Special program needed to do the testing, Test Driver:  A routine that calls a particular subsystem and passes a test case to it
  • 9. Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 9 Bottom-up Integration A B C D G F E Layer I Layer II Layer III Test D,G Test F Test E Test G Test C Test A, B, C, D, E, F, G Test B, E, F
  • 10. Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 10 Pros and Cons of bottom up integration testing  Bad for functionally decomposed systems: Tests the most important subsystem last (e.g. user interface)  Useful for integrating the following systems Object-oriented systems real-time systems systems with strict performance requirements
  • 11. Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 11 Top-down Testing Strategy  Test the top layer or the controlling subsystem first  Then combine all the subsystems that are called by the previously tested subsystem(s) and test the new collection  Do this until all subsystems are incorporated into the test  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.
  • 12. Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 12 Top-down Integration Testing A B C D G F E Layer I Layer II Layer III Test A Test A, B, C, D, E, F, G Test A, B, C, D Layer I Layer I + II All Layers
  • 13. Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 13 Pros and Cons of top-down integration testing  Test cases can be defined in terms of the functionality of the system (functional requirements)  Writing stubs can be difficult:  Stubs must allow all possible conditions to be tested.  A large number of stubs may be required.  One solution to avoid too many stubs: Modified top-down testing strategy  Test each layer of the system decomposition individually before merging the layers  Disadvantage of modified top-down testing: Both stubs and drivers are needed
  • 14. Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 14 Sandwich Testing Strategy  Combines top-down strategy with bottom-up strategy  The system is viewed 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
  • 15. Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 15 Sandwich Testing Strategy A B C D G F E Layer I Layer II Layer III Test D,G Test F Test E Test G Test A Test A, B, C, D, E, F, G Test B, E, F Bottom Layer Tests Top Layer Tests
  • 16. Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 16 Pros and Cons of Sandwich Testing  Top and Bottom Layer Tests can be done in parallel  Does not test the individual subsystems thoroughly before integration  Alternative: Modified sandwich testing strategy
  • 17. Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 17 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)
  • 18. Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 18 Modified Sandwich Testing Strategy A B C D G F E Layer I Layer II Layer III Test D,G Test F Test E Test G Test A Test A, B, C, D, E, F, G Test B, E, F Test B Test D Test C Triple Test I Double Test I Double Test II Triple Test I Double Test I Double Test II
  • 19. Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 19 Which Integration Strategy should you use?  Factors to consider  Amount of test harness (stubs &drivers)  Location of critical parts in the system  Availability of hardware  Availability of components  Scheduling concerns  Bottom up approach  good for object oriented design methodologies  Test driver interfaces must match component interfaces  ...  ...Top-level components are usually important and cannot be neglected up to the end of testing  Detection of design errors postponed until end of testing  Top down approach  Test cases can be defined in terms of functions examined  Need to maintain correctness of test stubs  Writing stubs can be difficult
  • 20. Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 20 System Testing  Functional Testing  Structure Testing  Performance Testing  Acceptance Testing  Installation Testing Impact of requirements on system testing:  The more explicit the requirements, the easier they are to test.  Quality of use cases determines the ease of functional testing  Quality of subsystem decomposition determines the ease of structure testing  Quality of nonfunctional requirements and constraints determines the ease of performance tests:
  • 21. Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 21 Structure Testing  Essentially the same as white box testing.  Goal: Cover all paths in the system design  Exercise all input and output parameters of each component.  Exercise all components and all calls (each component is called at least once and every component is called by all possible callers.)  Use conditional and iteration testing as in unit testing.
  • 22. Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 22 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.
  • 23. Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 23 Performance Testing  Stress Testing  Stress limits of system (maximum # of users, peak demands, extended operation)  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  Security testing  Try to violate security requirements  Timing testing  Evaluate response times and time to perform a function  Environmental test  Test tolerances for heat, humidity, motion, portability  Quality testing  Test reliability, maintain-ability & availability of the system  Recovery testing  Tests system’s response to presence of errors or loss of data.  Human factors testing  Tests user interface with user
  • 24. Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 24 Acceptance Testing  Goal: Demonstrate system is ready for operational use  Choice of tests is made by client/sponsor  Many tests can be taken from integration testing  Acceptance test is performed by the client, not by the developer.  Majority of all bugs in software is typically found by the client after the system is in use, not by the developers or testers. Therefore two kinds of additional tests:  Alpha test:  Sponsor uses the software at the developer’s site.  Software used in a controlled setting, with the developer always ready to fix bugs.  Beta test:  Conducted at sponsor’s site (developer is not present)  Software gets a realistic workout in target environ- ment  Potential customer might get discouraged
  • 25. Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 25 Testing has its own Life Cycle Establish the test objectives Design the test cases Write the test cases Test the test cases Execute the tests Evaluate the test results Change the system Do regression testing
  • 26. Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 26 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