IntegrationTesting'1 - PowerPoint PPT Presentation

About This Presentation
Title:

IntegrationTesting'1

Description:

... sequence of the calling subsystem and returning back fake data. ... to make the integration test operational (drivers, stubs) ... Check out the Source Code ... – PowerPoint PPT presentation

Number of Views:18
Avg rating:3.0/5.0
Slides: 28
Provided by: jpa108
Category:

less

Transcript and Presenter's Notes

Title: IntegrationTesting'1


1
(OO) Integration Testing
Informally - a (design) point of view
What Integration testing is a phase of software
testing in which individual software modules are
combined and tested as a group. It follows unit
testing and precedes system testing.
Why The purpose of integration testing is to
verify functional, performance and reliability
requirements placed on major design artefacts.
How integration testing is a logical extension
of unit testing. In its simplest form, two units
that have already been tested are combined into a
component and the interface between them is
tested. But choosing the integration order is
non-trivial!
2
(OO) Integration vs RegressionTesting another
(incremental development) point of view
Integration tests are performed when new code is
added to an existing code base for example, when
a new function is added to a set of existing
functions. Integration tests measure whether the
new code works -- integrates -- with the existing
code these tests look for data input and output,
correct handling of variables, etc. Regression
testing is the counterpart of integration
testing when new code is added to existing code,
regression testing verifies that the existing
code continues to work correctly, whereas
integration testing verifies that the new code
works as expected. Regression testing can
describes the process of testing new code to
verify that this new code hasn't broken any old
code.
Question is this incremental view a good way of
thinking about integration testing or is the
design view better?
3
Integration Testing What about OO?
  • The components to be tested are object classes
    that are instantiated as objects
  • Larger grain than individual functions so
    approaches to white-box testing have to be
    extended
  • No obvious top to the system for top-down
    integration and testing
  • Levels of integration are less distinct in
    object-oriented systems
  • Cluster testing is concerned with integrating and
    testing clusters of cooperating objects
  • Identify clusters using knowledge of the
    operation of objects and the system features that
    are implemented by these clusters

4
Integration Testing What Clusters?
  • Use-case or scenario testing
  • Testing is based on a user interactions with the
    system
  • Has the advantage that it tests system features
    as experienced by users
  • Thread testing
  • Tests the systems response to events as
    processing threads through the system
  • Object interaction testing
  • Tests sequences of object interactions that stop
    when an object operation does not call on
    services from another object

5
(OO) Integration Testing
Tests complete systems or subsystems composed of
integrated components Integration testing should
be black-box testing with tests derived from the
specification Main difficulty is localising
errors Incremental integration testing reduces
this problem
6
Integration of components
  • Component testing
  • Testing of individual program components
  • Usually the responsibility of the component
    developer (except sometimes for critical systems)
  • Tests are derived from the developers experience
  • Integration testing
  • Testing of groups of components integrated to
    create a system or sub-system
  • The responsibility of an independent testing team
  • Tests are based on a system specification

7
Integration of components
8
Integration of components test process is the
same
9
Integration 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

10
Example Design Structure Three Layer Call
Hierarchy
11
Integration Testing Big-Bang Approach
Unit Test A
Not recommended in all but the simplest systems!
Unit Test B
Unit Test C
Unit Test D
Unit Test E
Unit Test F
12
Bottom-up Testing Strategy
  • The subsystem in the lowest layer of the call
    hierarchy are tested individually
  • Then the next subsystems are tested that call the
    previously tested subsystems
  • 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 subsystem and passes a
    test case to it

13
Bottom-up Integration
Unit Test E
Require Driver B
Unit Test F
Unit Test C
Requires Driver A
Unit Test G
Requires Driver G
14
Advantages and Disadvantages of bottom-up
integration testing
  • Bad for functionally decomposed systems
  • Tests the most important subsystem (UI) last
  • Useful for integrating the following systems
  • Object-oriented systems
  • real-time systems
  • systems with strict performance requirements

15
Top-down Testing Strategy
  • Test the top layer or the controlling subsystem
    first
  • Then combine all the subsystems that are called
    by the tested subsystems and test the resulting
    collection of subsystems
  • 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.

16
Top-down Integration Testing
Test A
Layer I
Requires stubs B C D E F G
17
Advantages and Disadvantages 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.
  • Possibly a very large number of stubs may be
    required, especially if the lowest level of the
    system contains many methods.
  • 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

18
Sandwich Testing Strategy
  • Combines top-down strategy with bottom-up
    strategy
  • The system is view as having three layers
  • A target layer somewhere 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

19
Sandwich Testing Strategy
Test E
Test A, B, C, D, E, F, G
Test A,B,C, D
20
Advantages and Disadvantages of Sandwich Testing
  • Top and Bottom Layer Tests can be done in
    parallel
  • Does not test the individual subsystems
    thoroughly before integration
  • Solution 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)

21
Modified Sandwich Testing Strategy
22
Steps in Integration-Testing
  • 1. Based on the integration strategy, select a
    component to be tested. Unit test all the classes
    in the component.
  • 2. Put selected component together do any
    preliminary fix-up necessary to make the
    integration test operational (drivers, stubs)
  • 3. Do functional testing Define test cases that
    exercise all uses cases with the selected
    component
  • 4. Do structural testing Define test cases that
    exercise the selected component
  • 5. Execute performance tests
  • 6. Keep records of the test cases and testing
    activities.
  • 7. Repeat steps 1 to 7 until the full system is
    tested.
  • The primary goal of integration testing is to
    identify errors in the (current) component
    configuration.


.
23
Choosing an Integration Strategy?
  • 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

24
Remember the Testing 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
25
How to Construct a Good Test Team?
Professional Tester
too familiar
Programmer
with code
Analyst
System Designer
Test
User
Team
Configuration Management Specialist
26
In a complex system, you will probably need a
test bench to co-ordinate testing activities
27
(OO) Integration Testing
Lets learn about integration testing by looking
at a practical example
Check out the Source Code at the web site We
will use the IntPairArray from the regression
testing exercise IntPair.java,
Compare.java, IntPairArray.java, in our new
system Integration.java It is your task to
compare and contrast 2 different integration
testing approaches (e.g. big bang vs bottom-up)
for this System.
Write a Comment
User Comments (0)
About PowerShow.com